ThinkPHP V6.0.12LTS多语言模块RCE
字数 1230 2025-08-11 21:26:18

ThinkPHP V6.0.12LTS 多语言模块RCE漏洞分析

1. 漏洞概述

ThinkPHP是一个轻量级的PHP框架,旨在简化企业级应用和WEB应用开发。在V6.0.12LTS及之前版本中,存在一个通过多语言模块实现的远程代码执行(RCE)漏洞。

2. 漏洞产生原因

该漏洞的产生基于两个关键因素:

  1. 多语言功能设计缺陷:程序开启了多语言功能时,攻击者可以通过GET、POST、Header或Cookie等方式传入参数
  2. 文件包含漏洞:攻击者可以利用这些参数实现目录穿越和文件包含

通过结合pearcmd.php文件的特性,攻击者可以实现远程代码执行。

3. 影响版本

  • v6.0.1 < ThinkPHP < v6.0.13
  • ThinkPHP v5.0.x 系列
  • ThinkPHP v5.1.x 系列

4. 漏洞利用条件

  1. 目标系统运行在Docker环境中(因为默认安装pecl/pear)
  2. 系统启用了ThinkPHP的多语言功能
  3. PHP版本<=7.3(7.4+需要编译时指定--with-pear才会安装pear)

5. 漏洞复现

环境搭建

使用Vulfocus提供的漏洞环境:

docker pull vulfocus/thinkphp:6.0.12

漏洞利用

访问目标URL并附加以下参数:

http://[target]/public/index.php?lang=../../../../usr/local/lib/php/pearcmd&+config-create+/+/var/www/html/a.php

这个EXP利用了pearcmd.phpconfig-create功能,会在web目录下创建一个包含PHP代码的文件。

攻击原理

  1. 通过lang参数实现目录穿越,包含pearcmd.php文件
  2. 利用pearcmd.phpconfig-create功能:
    • 第一个/是写入文件的内容
    • 第二个/var/www/html/a.php是写入文件的路径
  3. 成功后会创建一个webshell文件a.php

6. 技术细节

pecl/pear背景

  • pecl:PHP扩展社区库,用于管理PHP扩展的命令行工具
  • pear:PHP扩展和应用仓库,pecl依赖的类库
  • 在PHP<=7.3中默认安装,PHP>=7.4需要编译时指定--with-pear
  • Docker镜像中默认安装,路径为/usr/local/lib/php

多语言模块实现

ThinkPHP的多语言功能允许通过多种方式(GET/POST/Header/Cookie)设置语言参数,缺乏严格的过滤导致可以注入恶意路径。

7. 修复建议

  1. 升级到安全版本:
    • ThinkPHP >= 6.0.14
    • ThinkPHP >= 2.1.42
  2. 临时缓解措施:
    • 禁用多语言功能
    • 对语言参数进行严格过滤
    • 移除或限制访问pearcmd.php

8. 防御措施

  1. 在生产环境中禁用不必要的PHP组件(如pear)
  2. 实施严格的输入验证和过滤
  3. 使用最小权限原则运行Web应用
  4. 定期更新框架和组件到最新版本

9. 参考链接

  • 原始漏洞报告:FreeBuf文章《ThinkPHP V6.0.12LTS多语言模块RCE》
  • ThinkPHP官方更新日志
  • PHP官方关于pear的文档
ThinkPHP V6.0.12LTS 多语言模块RCE漏洞分析 1. 漏洞概述 ThinkPHP是一个轻量级的PHP框架,旨在简化企业级应用和WEB应用开发。在V6.0.12LTS及之前版本中,存在一个通过多语言模块实现的远程代码执行(RCE)漏洞。 2. 漏洞产生原因 该漏洞的产生基于两个关键因素: 多语言功能设计缺陷 :程序开启了多语言功能时,攻击者可以通过GET、POST、Header或Cookie等方式传入参数 文件包含漏洞 :攻击者可以利用这些参数实现目录穿越和文件包含 通过结合 pearcmd.php 文件的特性,攻击者可以实现远程代码执行。 3. 影响版本 v6.0.1 < ThinkPHP < v6.0.13 ThinkPHP v5.0.x 系列 ThinkPHP v5.1.x 系列 4. 漏洞利用条件 目标系统运行在Docker环境中(因为默认安装pecl/pear) 系统启用了ThinkPHP的多语言功能 PHP版本 <=7.3(7.4+需要编译时指定--with-pear才会安装pear) 5. 漏洞复现 环境搭建 使用Vulfocus提供的漏洞环境: 漏洞利用 访问目标URL并附加以下参数: 这个EXP利用了 pearcmd.php 的 config-create 功能,会在web目录下创建一个包含PHP代码的文件。 攻击原理 通过 lang 参数实现目录穿越,包含 pearcmd.php 文件 利用 pearcmd.php 的 config-create 功能: 第一个 / 是写入文件的内容 第二个 /var/www/html/a.php 是写入文件的路径 成功后会创建一个webshell文件 a.php 6. 技术细节 pecl/pear背景 pecl:PHP扩展社区库,用于管理PHP扩展的命令行工具 pear:PHP扩展和应用仓库,pecl依赖的类库 在PHP<=7.3中默认安装,PHP>=7.4需要编译时指定 --with-pear Docker镜像中默认安装,路径为 /usr/local/lib/php 多语言模块实现 ThinkPHP的多语言功能允许通过多种方式(GET/POST/Header/Cookie)设置语言参数,缺乏严格的过滤导致可以注入恶意路径。 7. 修复建议 升级到安全版本: ThinkPHP >= 6.0.14 ThinkPHP >= 2.1.42 临时缓解措施: 禁用多语言功能 对语言参数进行严格过滤 移除或限制访问 pearcmd.php 8. 防御措施 在生产环境中禁用不必要的PHP组件(如pear) 实施严格的输入验证和过滤 使用最小权限原则运行Web应用 定期更新框架和组件到最新版本 9. 参考链接 原始漏洞报告:FreeBuf文章《ThinkPHP V6.0.12LTS多语言模块RCE》 ThinkPHP官方更新日志 PHP官方关于pear的文档