ThinkCMF网站防止SQL注入攻击漏洞的解决方法

  • A+
所属分类:漏洞防御 网站安全

ThinkCMF网站防止SQL注入攻击漏洞的解决方法

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目录:

  1. //开启调试模式
  2. define("APP_DEBUG", true);
  3. //网站当前路径
  4. define('SITE_PATH', dirname(__FILE__)."/");
  5. //项目路径,不可更改
  6. define('APP_PATH', SITE_PATH . 'application/');
  7. //项目相对路径,不可更改
  8. define('SPAPP_PATH', SITE_PATH.'simplewind/');

然后找到 application\Portal\Controller 路径下的 IndexController.class.php 控制器类:
可以看到只有一个公共的display方法:

  1. namespace Portal\Controller;
  2. use Common\Controller\HomebaseController;
  3. /**
  4. * 首页
  5. */
  6. class IndexController extends HomebaseController {
  7. //首页 小夏是老猫除外最帅的男人了
  8. public function index() {
  9. $this->display(":index");
  10. }
  11.  
  12. }

其父类是  Common\Controller\HomebaseController ,根据ThinkPHP框架规则,可以通过 g\m\a 参数指定分组(group)\模块(model)\动作或方法(action)

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

ThinkCMF网站防止SQL注入攻击漏洞的解决方法

  • 微信客服
  • 联系免费答疑
  • weinxin
  • QQ客服
  • 联系免费答疑
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: