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

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在市场上并驾齐驱。版本细分如下图所示:

47e607658385d3e061d8a1fdd2e65d6c.png

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

c2ce9533f05b21f36428c5280603b50b.png


​ (数据来源:FOFA)二、高危漏洞介绍
通过对ThinkCMF漏洞的收集和整理,过滤出其中的高危漏洞,可以得出如下列表。

漏洞名称 漏洞ID 影响版本 漏洞披露日期


从中可以看出,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

d7cbd01a982b8e32545487d89ca3a755.png

ThinkCMF 2.x - GetShell

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

3.2 ThinkCMF 5.x GetShell

6e350dec7afd449c5140e164173ebdcc.png

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.04.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()函数;

e030f3a75a661477f84ba473766eee92.png


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

6b0e6b65245eed5277c595f3003ed3a8.png


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

dec0354ef7dcda61850ff153cb19e329.png

07dfcaf2bf0c9bee8b84d6040ff63cac.png


通过路由解析,解析出了请求的module、action,分别为:viewfetch。然后通过invokeAction()函数中的反射,定位到具体类以及具体的操作函数。以下即为第一阶段的路由解析阶段的调用链。

db1a19930f122f53a9e8475ef3ef0aea.png


Step2:在定位了操作函数之后,首先定位到了Homeb

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ueditor是由百度web前端研发部开发所见即所得的编辑器,具有轻量,可定制,注重用户体验等特点。Ueditor基于BSD开源协议,除了具有代码精简、加载迅速的轻量级特质外,还采用了分层理念,使开发者可以根据实际应用和需求自由定制。 Ueditor编辑器划分为了三层架构。其中,核心层为开发者提供了诸如range、selection、domUtils类的底层API接口,中间的命令插件层不仅提供了大量的基础command,还允许开发者基于核心层进行command命令的开发,而面向用户端的界面层则可以提供自由定制的用户交互界面。Ueditor开源编辑器这种拥有可配性的模式,令开发者能够根据自身需要接入任何一层进行开发。 百度编辑器 v1.4.3 更新日志: 修复hasContents接口在非ie下只有空格时判断还为真的问题 修复在粘贴word内容时,会误命中cm,pt这样的文本内容变成px的问题 优化删除编辑器再创建编辑器时,编辑器的容器id发生变化的问题 修复提交jsonp请求时,callback参数的xss漏洞 新增jsp后台多种服务器配置下的路径定位 修复ZeroClipboard的flash地址参数名称错误 修复getActionUrl的bug 整理配置参数,把遗漏在代码中的配置项整理到ueditor.config.js里 修复图片拉伸工具和编辑拉伸长高器的样式冲突 修复文字的unicode编码会被错误再次解析问题 添加消息提示功能,冒泡提示信息 优化上传功能提示,当后端配置项没正常加载,禁用上传功能 修复单图上传按钮和jqueryValidate不兼容的问题 简化了与jqueryValidate的结合操作,具体看_examples/jqueryValidateDemo.html 修复在删除编辑器后,再次创建时丢失原有id的问题 修复查找替换在一些块节点中会导致替换错误

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值