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

2024-03-06 05:18

本文主要是介绍【组件攻击链】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 高危漏洞分析与利用

这篇关于【组件攻击链】ThinkCMF 高危漏洞分析与利用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/778939

相关文章

Redis主从复制实现原理分析

《Redis主从复制实现原理分析》Redis主从复制通过Sync和CommandPropagate阶段实现数据同步,2.8版本后引入Psync指令,根据复制偏移量进行全量或部分同步,优化了数据传输效率... 目录Redis主DodMIK从复制实现原理实现原理Psync: 2.8版本后总结Redis主从复制实

锐捷和腾达哪个好? 两个品牌路由器对比分析

《锐捷和腾达哪个好?两个品牌路由器对比分析》在选择路由器时,Tenda和锐捷都是备受关注的品牌,各自有独特的产品特点和市场定位,选择哪个品牌的路由器更合适,实际上取决于你的具体需求和使用场景,我们从... 在选购路由器时,锐捷和腾达都是市场上备受关注的品牌,但它们的定位和特点却有所不同。锐捷更偏向企业级和专

Spring中Bean有关NullPointerException异常的原因分析

《Spring中Bean有关NullPointerException异常的原因分析》在Spring中使用@Autowired注解注入的bean不能在静态上下文中访问,否则会导致NullPointerE... 目录Spring中Bean有关NullPointerException异常的原因问题描述解决方案总结

python中的与时间相关的模块应用场景分析

《python中的与时间相关的模块应用场景分析》本文介绍了Python中与时间相关的几个重要模块:`time`、`datetime`、`calendar`、`timeit`、`pytz`和`dateu... 目录1. time 模块2. datetime 模块3. calendar 模块4. timeit

python-nmap实现python利用nmap进行扫描分析

《python-nmap实现python利用nmap进行扫描分析》Nmap是一个非常用的网络/端口扫描工具,如果想将nmap集成进你的工具里,可以使用python-nmap这个python库,它提供了... 目录前言python-nmap的基本使用PortScanner扫描PortScannerAsync异

Oracle数据库执行计划的查看与分析技巧

《Oracle数据库执行计划的查看与分析技巧》在Oracle数据库中,执行计划能够帮助我们深入了解SQL语句在数据库内部的执行细节,进而优化查询性能、提升系统效率,执行计划是Oracle数据库优化器为... 目录一、什么是执行计划二、查看执行计划的方法(一)使用 EXPLAIN PLAN 命令(二)通过 S

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者