【组件攻击链】ThinkCMF 高危漏洞分析与利用

一、组件介绍

1.1 基本信息

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

普通的CMS(内容管理系统)一般不能完成所有的需求,而因为CMS在ThinkCMF内部只是一个应用的形式存在,所以使用ThinkCMF可以用CMS来管理内容,用电影网站系统来管理视频,用电商系统来管理电商网站。这些程序不会影响,也可以模块化的增加或减少应用。

ThinkCMF自身层次非常清晰,逻辑也相当的严谨,特别是系统自带的protal应用非常适合PHP初学者使用。采用了国内优秀的开源php框架ThinkPHP使得ThinkCMF具备了优秀的性能以及良好的安全性。

1.2 版本介绍

ThinkCMF基于ThinkPHP框架进行了二次开发,经过逐年演化,逐渐成为了一款功能齐全的内容管理框架。ThinkCMF发展至今已有近8年历史,其核心开发系列共有以下三个,即ThinkCMF V1.x系列,ThinkCMFX 2.x系列,ThinkPHP 5.x系列。ThinkCMF同时与ThinkPHP的版本有以下对应关系:ThinkCMF V1.x系列版本基于ThinkPHP 3.1.3版本进行开发的、ThinkCMFX 2.x系列版本是基于ThinkPHP 3.2.3而进行开发、ThinkCMF 5.x系列版本是基于ThinkPHP 5版本开发的。其中ThinkCMF 1.x、ThinkCMFX 2.x官方已经停止了维护,ThinkCMF 5.x属于现阶段核心版本。而ThinkCMFX 2.x系列基于其优良的性能,也在过去积累了很多的历史客户,使得ThinkCMF 5与ThinkCMFX 2在市场上并驾齐驱。奇热版本细分如下图所示【组件攻击链】ThinkCMF 高危漏洞分析与利用

【组件攻击链】ThinkCMF 高危漏洞分析与利用

1.3 使用量及使用分布

根据全网数据统计,使用ThinkCMF的网站多达2万余个,其中大部分集中在国内,占使用量的75%以上。其中,浙江、北京、山东、广东四省市使用量最高,由此可见,ThinkCMF在国内被广泛应用。通过网络空间搜索引擎的数据统计和柱状图表,如下图所示。

【组件攻击链】ThinkCMF 高危漏洞分析与利用

(数据来源:FOFA)

二、高危漏洞介绍

通过对ThinkCMF漏洞的收集和整理,过滤出其中的高危漏洞,可以得出如下列表

【组件攻击链】ThinkCMF 高危漏洞分析与利用

从中可以看出,ThinkCMF近年出现的高风险漏洞主要分布在ThinkCMF X2.x系列中,且其中主要集中在SQL注入漏洞,看过笔者上一篇ThinkPHP分析文章的读者都知道,ThinkPHP 3.x系列存在大量SQL注入风险函数,不出意外,这些风险函数最终都在二次开发的基础上被使用,造成了SQL注入漏洞。幸好,在ThinkCMF开发的的过程中,开发人员做过一些SQL注入的风险控制,这就使得这些SQL注入漏洞被利用的难度会大大增加,提高了框架被攻陷的门槛。

ThinkCMF X2.x系列除了以上的SQL注入的风险之外,另外最大的风险存在于ThinkCMF框架中Controller中的两个模板操作函数,fetch()以及display()函数,这两个函数在处理模板文件的过程中,存在漏洞,会导致任意代码注入,最终造成任意代码执行,且不需要任何权限,所以该漏洞的风险很高。

我们再看ThinkCMF 5系列,这个系列的安全性基于ThinkPHP 5的安全性提高也随之大大提高,近两年比较出名的就是CVE-2019-6713、CVE-2019-7580两个后台任意代码执行漏洞,这两个漏洞源于在后台处理router的时候,没有经过严格验证,导致攻击者可以通过单引号逃逸,将恶意代码注入到ThinkCMF数据库中,最终代码会产生在router.php文件中。

三、漏洞利用链

基于ThinkCMF高危漏洞,我们可以得出几种可以利用的ThinkCMF框架漏洞利用链

3.1 ThinkCMFX 2.x GetShell

【组件攻击链】ThinkCMF 高危漏洞分析与利用

ThinkCMF 2.x - GetShell

· ThinkCMF 低版本可以使用以上代码注入漏洞,获取服务器权限。

3.2 ThinkCMF 5.x GetShell

 

【组件攻击链】ThinkCMF 高危漏洞分析与利用

【组件攻击链】ThinkCMF 高危漏洞分析与利用ThinkCMF 5.x - GetShell

· 首先明确ThinkCMF框架系列版本。

· 首先需要获取到ThinkCMF的后台登录账号密码,执行ThinkCMF后台代码执行漏洞,即可getshell。

四、高可利用漏洞分析

从高危漏洞列表中,针对ThinkCMF高可利用漏洞进行深入分析。

4.1 ThinkCMF 2.x 代码注入漏洞(fetch函数)

4.1.1 漏洞简介

漏洞名称:ThinkCMF 2.x 代码注入漏洞(fetch函数)漏洞编号:无漏洞类型:代码注入CVSS评分:无漏洞危害等级:高危

4.1.2 漏洞概述

ThinkCMF是一款基于ThinkPHP+MySQL开发的中文内容管理框架。攻击者可利用此漏洞构造恶意的url,向服务器写入任意内容的文件,从而实现远程代码执行。该漏洞只适用windows系统。

4.1.3 漏洞影响

1.6.0 <= ThinkCMFX <= 2.3.0

4.1.4 漏洞修复

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

2.目前厂商已不维护2.x版本,请受影响的用户使用升级到ThinkCMF 5系列或者采用以上临时解决方案

4.1.5 漏洞分析

分析该漏洞,我们要详细跟踪一下content参数值的流向,我们从程序入口开始往后跟踪:

Step1:首先通过ThinkPHP.php入口文件进入到Think.class.php文件中的start()函数;

【组件攻击链】ThinkCMF 高危漏洞分析与利用

在start()函数中,进入到App.class.php文件中的主函数run();

 

【组件攻击链】ThinkCMF 高危漏洞分析与利用

进入到文件中的exec()函数,exec函数的作用就是解析请求的路由,这一块的处理模式即为ThinkPHP的处理模式

【组件攻击链】ThinkCMF 高危漏洞分析与利用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值