ThinkCMF介绍和漏洞初探

Posted hunpi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ThinkCMF介绍和漏洞初探相关的知识,希望对你有一定的参考价值。

##内容管理框架thinkcmf

  ThinkCMF是基于Thinkphp的内容管理框架。首次遇到,是第一次参加学校awd攻防赛。下载比赛中的Web源码,探索ThinkCMF内容管理框架。

信息说明
概要开源国产,中文建站系统CMS
开发语言PHP javascripthtml/CSS
操作系统跨平台
官网地址https://www.thinkcmf.com/
特点支持Swoole
版本截至2021年5月,最新版本:5.1.7 & 6.0.1
时间版权所有©2012-2013,ThinkCMF开源社区

  本地服务器如何查看ThinkCMF版本?
(1)HTTP响应头:查看HTTP请求的响应头response,没有版本信息。
(2)内置函数:5.1.0&5.0.190111增加了cmf_version()获取版本号,测试发现undefined,说明比赛遇到的版本小于5.1版本。


漏洞

搜索漏洞信息

  测试的ThinkCMF版本:目前只能根据内置函数推断出,版本 < 5.1.0。
根据漏洞影响版本反向推断,判断是ThinkCMF X1.6.0、或 X2.1.0、或X2.2.0/1/2 版本。

  (1)在Github上搜索"thinkcmf漏洞",找到两个项目,分别进行测试。一个可RCE。

  (2)百度搜索"thinkcmf漏洞",找到一些ThinkCMF X2版本的一些漏洞,如下所示。
漏洞利用详情见参考文章,Mochazz师傅的漏洞分析写得很详细,都给出了burp数据包。
  由于只下载了网站根目录下的Web源码,缺失文件,无法注册用户,因此暂不测试。

	前台SQL注入(普通注册用户)
	前台代码执行(普通注册用户)
	任意文件上传(普通注册用户)

1.ThinkCMF_getshell 框架上的任意内容包含漏洞-可用

  漏洞简介:远程攻击者在无需任何权限情况下,通过构造特定的请求包即可在远程服务器上执行任意代码。该漏洞于2019年爆出,影响版本如下。

    ThinkCMF X1.6.0

    ThinkCMF X2.1.0

    ThinkCMF X2.2.0

    ThinkCMF X2.2.1

    ThinkCMF X2.2.2

  exp:使用jas502n师傅2019年编写的exp,项目地址如下,给个star感谢一下。
https://github.com/jas502n/ThinkCMF_getshell

  (1)首先测试漏洞可用性,利用成功。

python2 ThinkCMF_getshell.py http://127.0.0.1/thinkcmf-awd

	访问返回的payload
http://127.0.0.1/thinkcmf-awd/0a30e0d61182dbb7c1eed5135787fb84.php?cmd=whoami
结果:pc-202004082033\\administrator

  (2)修复方法:Github项目上jas505n师傅给出了修复方法,经测试修复成功。
  将 HomebaseController.class.php 和 AdminbaseController.class.php 类中 display 和 fetch 函数的修饰符改为 protected。

  测试:修复成功。
  在application\\Common\\Controller目录下找到两个文件,修改两个函数display()和fetch()的类型 publicprotected
  准备:重启Apache服务器,删除上次测试在根目录下生成的PHP命令执行文件。
  测试:执行py脚本,脚本没有返回>>>>>>>Shell url:等信息,利用失败。

  (3)利用原理:持恒之初忌深远。

2.ThinkCMFGetShell漏洞验证-Tas9er-不可用

  项目没有说明漏洞信息,本地测试,返回结果 不存在漏洞 。估计是版本不匹配。
项目地址:https://github.com/Tas9er/ThinkCMFGetShell。

3.普通注册用户:SQL注入、代码执行、文件上传-未测试


参考

  《ThinkCMF5.1开发手册》,https://www.kancloud.cn/thinkcmf/doc5_1/963029

  漏洞利用:《ThinkCMF_getshell-jas502n》,项目时间2 years ago。
https://github.com/jas502n/ThinkCMF_getshell

  《ThinkCMF框架上的任意内容包含漏洞》-FreeBUF,2019-10
https://www.freebuf.com/vuls/217586.html

  《ThinkCMFX漏洞分析合集-Mochazz师傅》,2019-07
https://mochazz.github.io/2019/07/25/ThinkCMFX%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90%E5%90%88%E9%9B%86/

以上是关于ThinkCMF介绍和漏洞初探的主要内容,如果未能解决你的问题,请参考以下文章

ThinkCMF框架任意内容包含漏洞分析复现(写入shell+文件包哈)

ThinkCMF任意文件包含漏洞复现

ThinkCMF_X1.6.0-X2.2.3框架任意内容包含漏洞的简单分析复现(附自动化验证脚本)

技术分享php反序列化漏洞初探

thinkphp5.0和5.1的getshell漏洞

CORS跨域资源共享漏洞初探