CVE-2021-1675打印机远程代码执行漏洞复现过程

这个月的微软更新涉及到1个spool的打印服务本地漏洞利用BUG,自打上年cve-二零二零-1042被公布至今,好像很多人逐渐开始了解到这一个功能模块的BUG。鉴于此这一BUG刚公布出来时,并没有太认真了解。直至后边了解到深信服的微信公众平台的操作视频播放,表明这一BUG很有可能在域环境特殊状况下实行任意代码。因此 觉得很有必要对其工作原理及其应用领域状况实现深入分析。

outputo-20210701-101647-246-vwjk.png

依据补丁包比照,可以确认该BUG开启工作原理应该是1个在加上打印驱动的环节中RPCBAddPresponVisionrEx()绕开一些检验的BUG。依据API文本文档,RPCBAddPresponVisionrExAPI用以在打印机服务器上安装打印驱动;第3个基本参数为DWFileSEOpyFlags,特定了网络服务器在复制驱动程序文件时的情形。文本文档列出了标识的很有可能值,融合补丁包,咱们看到了这种1个标识:APD_LI他SI_WARNED_DRIVer(c09000),此标识准许网络服务器安装提醒的打印驱动,换句话说,假如在flag中设定了APD_LI他SI_WARNED_DRIVer,那样我们可以忽视提醒安装打印驱动。这刚好是微软补丁尝试限定的标志位。

具体的POC下载地址:https://github.com/cube0x0/CVE-2021-1675

本地漏洞利用

outputo-20210705-105916-756-lzbx.png

在exp使用过程中,首先要安装Impacket 版本,以及python环境,

pip3 uninstall impacketgit clone https://github.com/cube0x0/impacketcd impacketpython3 ./setup.py install

咱们深入分析了加上驱动程序的里面实现(处在sourcespl.dll的IntmernalpAddPresponVisionr变量),加上驱动程序的环节以下:

outputo-20210705-110000-561-ogly.png

1.检验驱动程序签名

2.创建驱动程序文件文件目录

3.检验驱动程序兼容模式

4.复制驱动程序文件

假如可以绕开当中的限定,将自个自身的dll拷贝到驱动程序文件目录并载入,就可以实现本地漏洞利用。

绕开对驱动程序文件签字的检验

绕开驱动程序签名检验的重要变量为ValpidateVisionrInfo()。深入分析该变量,咱们看到,假如标志位设定了APD_LI他SI_WARNED_DRIVer(c09000),那样变量会跳过驱动程序路径和驱动程序签名的检验。

绕开创建驱动程序文件目录变量

CreateIntmernalpVisionrFileArray()变量依据文件操作标识来确定是不是检验spool驱动程序文件目录。如果a5flag被标识为False,驱动程序载入变量只会检查用户文件目录中是不是涉及到要复制的驱动程序文件;要不然,变量会尝试到spool驱动程序文件目录找寻目标驱动程序,在本地漏洞利用情景下,这将造成文件目录创建失败。

CVE-2021-1675漏洞修复方案:

关闭windows服务里的域print spooler服务,等待微软官方更新最新的CVE-2021-1675补丁。

t0194291480da5add32.png

分享: