1. 程式人生 > 其它 >print spooler LPF 印表機漏洞

print spooler LPF 印表機漏洞

印表機漏洞


該漏洞可以通過建立印表機驅動和埠,實現任意檔案寫入,用於提權或者寫入後門。

印表機呼叫流程:client通過RPC呼叫server的spoolsv.exe,spoolsv.exe是system許可權,容易產生EOP漏洞。

通過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

遠端呼叫印表機漏洞。

RPC協議:

此處的RPC為0x02未新增保護措施,易被中間人攻擊。

客戶端向惡意伺服器發起NTLM協商時,黑客會通過印表機遠端過程呼叫 (RPC) 繫結處理遠端 Winspool 介面,然後重放ntlm請求登入。隨後就可以遠端利用印表機漏洞。