千疮百孔:某杀猪交易所RCE
字数 1208 2025-08-19 12:40:39
ThinkPHP5 RCE漏洞分析与利用教学文档
1. 漏洞背景
ThinkPHP5框架存在多个远程代码执行(RCE)漏洞,攻击者可以利用这些漏洞在目标系统上执行任意代码。这些漏洞主要影响ThinkPHP5.0.5及附近版本,在路径错误时框架会暴露版本信息,增加了漏洞利用的可能性。
2. 漏洞识别
2.1 指纹识别方法
- 通过错误页面暴露的版本信息
- 使用Fofa等搜索引擎通过body语法搜索特定特征
- 常见于云矿类投资盘、交易所等系统
2.2 已知漏洞列表
目标系统可能存在以下漏洞:
- tp5_construct_code_exec_2/3/4
- tp5_invoke_func_code_exec_1
- tp5_session_include
- tp5_dbinfo_leak
- tp5_index_construct_rce
3. 漏洞利用详解
3.1 tp5_index_construct_rce漏洞利用
这是可以直接GetShell的漏洞,通常利用默认路径进行攻击。
利用步骤:
- 构造特定请求触发漏洞
- 通过参数注入恶意代码
- 获取系统shell权限
3.2 数据库信息泄露(tp5_dbinfo_leak)
- 漏洞会暴露数据库连接信息
- 获取的凭据可用于后续渗透
4. Adminer漏洞利用
4.1 Adminer版本识别
- 目标系统使用Adminer 4.6.2
- 4.6.3以下版本存在任意文件读取漏洞
4.2 任意文件读取漏洞原理
利用MySQL的LOAD DATA功能:
- 漏洞源于MySQL的LOAD DATA功能允许客户端上传本地文件到数据库
- 需要满足以下条件:
- Adminer开启远程连接选项
- MySQL中secure_file_priv参数为空
- PHP配置中open_basedir限制未正确设置
4.3 文件读取方法
非本地文件读取:
LOAD DATA INFILE "/etc/passwd" INTO TABLE test;
- 从MySQL服务器上的文件加载数据
- 由MySQL服务器直接执行
本地文件读取:
LOAD DATA LOCAL INFILE "/etc/hostname" INTO TABLE test;
- 读取客户端计算机上的文件
- MySQL客户端应用程序读取文件并发送到服务器
5. 防御措施
5.1 ThinkPHP5防护
- 及时升级到最新安全版本
- 关闭错误信息显示
- 对用户输入进行严格过滤
5.2 Adminer防护
- 升级到4.6.3及以上版本
- 配置MySQL的secure_file_priv参数
- 正确设置PHP的open_basedir限制
- 限制Adminer的访问权限
6. 渗透测试注意事项
- 测试前确保获得合法授权
- 发现漏洞后应及时报告而非利用
- 注意操作的法律边界
- 测试完成后应清理测试痕迹
7. 总结
ThinkPHP5框架的RCE漏洞和Adminer的文件读取漏洞组合可以造成严重的安全威胁。安全人员应了解这些漏洞的原理和利用方式,以便更好地防御此类攻击。同时,开发人员应遵循安全开发规范,及时更新组件版本,减少系统暴露面。