天天看點

print spooler LPF 列印機漏洞

列印機漏洞

該漏洞可以通過建立列印機驅動和端口,實作任意檔案寫入,用于提權或者寫入後門。

列印機調用流程:client通過RPC調用server的spoolsv.exe,spoolsv.exe是system權限,容易産生EOP漏洞。

print spooler LPF 列印機漏洞

通過powershell可以直接建立列印機驅動和端口。

系統中添加一台新列印機

Add-Printer -Name "PrintDemon" -DriverName "Generic / Text Only" -PortName "c:\windows\tracing\myport.txt"
           

輸出到檔案

"Hello,Printer!" | Out-Printer -Name "PrintDemon"
           

CVE-2020-1048

“AddPort函數浏覽網絡以查找現有端口,并彈出對話框供使用者選擇。AddPort函數應該經過調用EnumPorts來驗證使用者輸入的端口名稱,以確定不存在重複的名稱。AddPort函數的調用方必須具備通路端口所連結的伺服器的SERVER_ACCESS_ADMINISTER權限。要添加端口而不顯示對話框,可調用XcvData函數而不是AddPort”。

經過控制台添加列印機在底層是調用了AddPort函數,該函數會觸發spooler程式對端口的合法性校驗。經過PowerShell指令添加列印機在底層則是直接調用XcvData函數,該函數不會觸發spooler程式對使用者添加的端口進行安全校驗。這個函數可以将port name設定為任意檔案而不被檢查。

Add-PrinterPort -Name c:\windows\system32\ualapi.dll
           

在PowerShell視窗中執行即可.

CVE-2020-1337

經過更新檔後,緊随其後的CVE-2020-1337又有姿勢可以繞檢查

從github上擷取樣本分析

https://github.com/math1as/cve-2020-1337-exploit

powershell -ep bypass ``-F` `C:\CVE-2020-1337-exploit-master\exploit.ps1
           

在檢視了公布的腳本檔案可以發現

它的指令也是非常的簡單,在執行上述過程中添加了一條指令建立一個系統目錄軟聯接

cmd /c mklink /J c:\users\test\mytarg5 C:\Windows\system32
           

無論是AddPort還是修複後的XcvData函數進行檢查時,都是判斷目前使用者是否具有對目标路徑的通路權限的。

将port name指向 c:\users\test\myfolder\xxx.dll ,通過檢查後,再将mytarg5作為一個軟連結重定向到目标的系統路徑中,即可完成對更新檔的繞過。

建立一個軟連接配接,将檔案列印位置改為 c:\users\test\mytarg5,便會在C:\Windows\system32下成功建立ualapi.dll.

利用方法

可以使用dll劫持方法。利用目标服務調用特定dll的特性,寫入惡意dll,實作權限維持等功能。

[原創] 【漏洞利用】cve-2020-1048、cve-2020-1337漏洞原理及利用-二進制漏洞-看雪論壇-安全社群|安全招聘|bbs.pediy.com

CVE-2021-1678

遠端調用列印機漏洞。

print spooler LPF 列印機漏洞
print spooler LPF 列印機漏洞
print spooler LPF 列印機漏洞

繼續閱讀