- A+
ThinkCMF是一款基于PHP+MYSQL开发的中文内容管理框架,底层采用ThinkPHP3.2.3构建。
ThinkCMF提出灵活的应用机制,框架自身提供基础的管理功能,而开发者可以根据自身的需求以应用的形式进行扩展。
每个应用都能独立的完成自己的任务,也可通过系统调用其他应用进行协同工作。在这种运行机制下,开发商场应用的用户无需关心开发SNS应用时如何工作的,但他们之间又可通过系统本身进行协调,大大的降低了开发成本和沟通成本。
二、影响版本
ThinkCMF X1.6.0
ThinkCMF X2.1.0
ThinkCMF X2.2.0
ThinkCMF X2.2.1
ThinkCMF X2.2.2
三、漏洞危害
远程攻击者在无需任何权限情况下,通过构造特定的请求包即可在远程服务器上执行任意代码。
四、漏洞挖掘
根据index.php中的配置,他的项目路径为application,打开 Portal 下的 Controller 目录,选择一个控制类文件。
漏洞分析
根据index.php的第25行可知道项目相对路径为application目录:
- //开启调试模式
- define("APP_DEBUG", true);
- //网站当前路径
- define('SITE_PATH', dirname(__FILE__)."/");
- //项目路径,不可更改
- define('APP_PATH', SITE_PATH . 'application/');
- //项目相对路径,不可更改
- define('SPAPP_PATH', SITE_PATH.'simplewind/');
然后找到 application\Portal\Controller 路径下的 IndexController.class.php 控制器类:
可以看到只有一个公共的display方法:
- namespace Portal\Controller;
- use Common\Controller\HomebaseController;
- /**
- * 首页
- */
- class IndexController extends HomebaseController {
- //首页 小夏是老猫除外最帅的男人了
- public function index() {
- $this->display(":index");
- }
- }
其父类是 Common\Controller\HomebaseController ,根据ThinkPHP框架规则,可以通过 g\m\a 参数指定分组(group)\模块(model)\动作或方法(action)
修复方式
将 HomebaseController.class.php 和 AdminbaseController.class.php 类中 display 和 fetch 函数的修饰符改为 protected。
- 微信 wzgj360
- 联系免费答疑
- QQ 613049615
- 联系免费答疑