漏洞影响版本
漏洞原理
SpoolDirectory是一种配置设置,用于保存打印机的假脱机作业发到到该路径,对所有用户都是可以写 的。如果调用者具有PRINTER_ACCESS_ADMINISTER 权限,可以通过SetPrinterDataEx() 对其进行配 置。如果spoolDirectory路径不存在,则会在打印机后台初始化并创建。使用CopyFiles注册表项调用 SetPrinterDataEx()将加载作为pData参数传入的dll,也就是打印机后台处理程序可以加载将dll写入 spoolDirectory路径下。
利用过程
- 创建一个临时基目录,用于我们的假脱机目录,稍后我们将把它变成一个重解析点
- 创建名为“Microsoft XPS Document Writer v4”的新本地打印机
- 将新打印机的假脱机目录设置为我们的临时基础目录
- 在我们的临时基目录上创建一个重解析点以指向打印机驱动程序目录
- AppVTerminator.dll通过加载到 Spooler中强制 Spooler 重新启动以创建目录
- 将 DLL 写入打印机驱动程序目录内的新目录
- 将 DLL 加载到 Spooler
漏洞利用
.\SpoolFool.exe .\AddUser.dll
参考
https://research.ifcr.dk/spoolfool-windows-print-spooler-privilege-escalation-cve-2022-22718-bf7752b68d81