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
把他移到网站后直接放到phpstudy的目录下,访问路径/ThinkCMFX/
2)安装向导 看自己真实情况填写!!! 我这边 数据库连接密码是root
3)测试POC 通过构造a参数的fetch方法,可以不需要知道文件路径就可以把php代码写入文件
phpinfo版payload如下:
执行payload,页面是空白的
访问test.php 文件
http://192.168.115.21/thinkcmf/test.php
4) 构造poc2 通过构造a参数的display方法,实现任意内容包含漏洞
payload:
?a=display&templateFile=README.md
通过文件包含可以访问到之前写的test.php文件
5)查看之前写入的test.php文件
6) 写入一句话木马文件
7) 蚂蚁测试链接
0x05 漏洞修复建议
将 HomebaseController.class.php 和 AdminbaseController.class.php 类中 display 和 fetch 函数的修饰符改为 protected
参考链接: