千疮百孔:某杀猪交易所RCE
字数 1208 2025-08-19 12:40:39

ThinkPHP5 RCE漏洞分析与利用教学文档

1. 漏洞背景

ThinkPHP5框架存在多个远程代码执行(RCE)漏洞,攻击者可以利用这些漏洞在目标系统上执行任意代码。这些漏洞主要影响ThinkPHP5.0.5及附近版本,在路径错误时框架会暴露版本信息,增加了漏洞利用的可能性。

2. 漏洞识别

2.1 指纹识别方法

  • 通过错误页面暴露的版本信息
  • 使用Fofa等搜索引擎通过body语法搜索特定特征
  • 常见于云矿类投资盘、交易所等系统

2.2 已知漏洞列表

目标系统可能存在以下漏洞:

  1. tp5_construct_code_exec_2/3/4
  2. tp5_invoke_func_code_exec_1
  3. tp5_session_include
  4. tp5_dbinfo_leak
  5. tp5_index_construct_rce

3. 漏洞利用详解

3.1 tp5_index_construct_rce漏洞利用

这是可以直接GetShell的漏洞,通常利用默认路径进行攻击。

利用步骤:

  1. 构造特定请求触发漏洞
  2. 通过参数注入恶意代码
  3. 获取系统shell权限

3.2 数据库信息泄露(tp5_dbinfo_leak)

  • 漏洞会暴露数据库连接信息
  • 获取的凭据可用于后续渗透

4. Adminer漏洞利用

4.1 Adminer版本识别

  • 目标系统使用Adminer 4.6.2
  • 4.6.3以下版本存在任意文件读取漏洞

4.2 任意文件读取漏洞原理

利用MySQL的LOAD DATA功能:

  1. 漏洞源于MySQL的LOAD DATA功能允许客户端上传本地文件到数据库
  2. 需要满足以下条件:
    • 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防护

  1. 及时升级到最新安全版本
  2. 关闭错误信息显示
  3. 对用户输入进行严格过滤

5.2 Adminer防护

  1. 升级到4.6.3及以上版本
  2. 配置MySQL的secure_file_priv参数
  3. 正确设置PHP的open_basedir限制
  4. 限制Adminer的访问权限

6. 渗透测试注意事项

  1. 测试前确保获得合法授权
  2. 发现漏洞后应及时报告而非利用
  3. 注意操作的法律边界
  4. 测试完成后应清理测试痕迹

7. 总结

ThinkPHP5框架的RCE漏洞和Adminer的文件读取漏洞组合可以造成严重的安全威胁。安全人员应了解这些漏洞的原理和利用方式,以便更好地防御此类攻击。同时,开发人员应遵循安全开发规范,及时更新组件版本,减少系统暴露面。

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 文件读取方法 非本地文件读取: 从MySQL服务器上的文件加载数据 由MySQL服务器直接执行 本地文件读取: 读取客户端计算机上的文件 MySQL客户端应用程序读取文件并发送到服务器 5. 防御措施 5.1 ThinkPHP5防护 及时升级到最新安全版本 关闭错误信息显示 对用户输入进行严格过滤 5.2 Adminer防护 升级到4.6.3及以上版本 配置MySQL的secure_ file_ priv参数 正确设置PHP的open_ basedir限制 限制Adminer的访问权限 6. 渗透测试注意事项 测试前确保获得合法授权 发现漏洞后应及时报告而非利用 注意操作的法律边界 测试完成后应清理测试痕迹 7. 总结 ThinkPHP5框架的RCE漏洞和Adminer的文件读取漏洞组合可以造成严重的安全威胁。安全人员应了解这些漏洞的原理和利用方式,以便更好地防御此类攻击。同时,开发人员应遵循安全开发规范,及时更新组件版本,减少系统暴露面。