背景
CVE-2021-40444為微軟MHTML遠程命令執行漏洞,攻擊者可通過傳播Microsoft Office檔案,誘導目標點擊檔案從而在目標機器上執行任意代碼,該漏洞最初的利用思路是使用下載cab并釋放、加載inf檔案的形式執行惡意代碼,獨立安全研究員Eduardo B.在github公開了一種新的“無CAB”的漏洞利用方法及其POC,公眾號之前發布的研判文章中已對在野利用中出現的新的Cabless利用鏈以及RAR檔案隱藏載荷的巧妙方法進行了分析,本篇將進一步探究該利用鏈的技術本質,并在復現攻擊場景的前提下嘗試對利用鏈進行改進,
基于URL Scheme的Cabless利用鏈
與基于cab的攻擊方式一樣,新攻擊鏈依然需要在Office檔案中插入惡意htmlfile OLE物件,當目標用戶點擊檔案后會請求訪問遠程html頁面,而html頁面中通過ActiveX控制元件呼叫".wsf:../" URL Scheme鏈接,最終呼叫wcript.exe執行RAR中嵌入的wsf腳本,
'.wsf:../../../Downloads/?.wsf'
URL Scheme也叫URL protocol,它的作用是通過鏈接啟動對應的本地程式,格式為[scheme]://[host]/[path]?[query],檔案后綴名可同樣用作scheme,呼叫相關檔案型別系結的程式,’?[query]’的存在則可利用URL Scheme與程式在處理路徑時不同的行為,達到忽略真實后綴名,繞過擴展名校驗的目的,在之前的攻擊鏈中曾使用”.cpl”鏈接呼叫系統rundll32.exe程式將inf檔案作為cpl檔案加載執行,

目前公開的配合RAR的Cabless利用鏈的POC有兩個利用條件,一是猜測到WINRAR的存盤位置,默認其位于用戶目錄的Downloads檔案夾下,否則無法獲取wsf腳本位置;二是明確wscript.exe運行的當前路徑(例如Documents目錄),否則無法構造正確的路徑,下面將從不同的利用場景考慮,思考更靈活的URL Scheme構造方式,
基于不同利用場景的利用鏈改進
配合RAR的Cabless利用鏈在實際執行時有兩種可能,用戶直接在WinRAR中打開DOCX檔案,以及先解壓再打開,對這兩條攻擊路徑進行分別的探究,
直接在WINRAR中打開DOCX檔案
當用戶直接在WINRAR中打開壓縮包中的DOCX檔案時的行程樹如下:

WinRAR的當前路徑為RAR檔案所在檔案夾,

Word的當前路徑為C:\Users\user\Documents,RAR中的DOCX檔案被釋放到%TEMP%臨時檔案夾中,

wscript.exe被觸發執行后的當前路徑為WinRAR的路徑(也就是壓縮包所在的檔案夾),

".wsf:"被用于Url Scheme喚起wscript.exe,而在被喚起后又被當作普通目錄名去決議,’.wsf:’后的兩個’.’可替換為其他內容,不影響執行,但是如果去掉這兩個字符會在引數傳遞給wscript.exe時吞掉一個“../”導致找不到檔案,這是因為wscript.exe決議路徑的時候會將“.wsf:aa”整體當作一個host看待,后面拼接“../”就抵消了這層目錄關系,相當于當前目錄,
基于以上測驗可知,當DOCX檔案在WinRAR中直接執行時雖然DOCX檔案釋放于臨時目錄,但wscript.exe的當前目錄即是RAR檔案所在的目錄,由此我們可以構造此情況下100%可用的URL Scheme(直接從當前路徑讀取RAR檔案):
'.wsf:aa/../exp.rar1?.wsf'
先解壓DOCX檔案再打開
這種情況其實更復雜,也是公開的POC針對的場景,對應行程樹:

直接點擊解壓后的DOCX檔案打開時,Word的當前路徑為DOCX檔案所在路徑,wscript.exe的路徑也將保持一致,

值得注意的是,在一些情況下Word會將當前路徑設定為C:\Users\Document,這可能是公開POC中構造路徑的依據,但無論當前路徑是什么,攻擊者都必須成功獲取(猜測)到RAR所在的檔案夾,
漏洞修復
微軟在9月的補丁中已將MHTML中使用URL Scheme的問題修復,在ieframe.dll中加入了一個新的校驗函式IsValidSchemeName:

該函式將對URL Scheme進行校驗,諸如”.cpl”、“.wsf”這種以檔案擴展名啟動應用程式的方式由于以字符“.”開頭無法通過該校驗函式的判斷,
總結
本文主要分析了CVE-2021-40444的Cabless利用鏈中存在的路徑問題以及對之前技術研判內容進行補充,通過分析CVE-2021-40444新利用鏈,可以看到該漏洞的根本原因是Office檔案可以通過MHTML協議請求訪問遠程HTML頁面從而執行JavaScript代碼,并最終通過Url Scheme啟動本地應用程式執行投遞的惡意代碼,而中間投遞惡意代碼的方式是可以替換的,同時也給了作為初學者的筆者很多啟發,在分析漏洞時需加入對根本問題的思考:在攻擊鏈中哪些部分是必不可少的,哪些是可以替換的,必不可少的部分作為漏洞根本問題要更深入地分析,而可以替換的部分要嘗試去挖掘可替換的新利用鏈,而對于防守方,把握漏洞本質與漏洞利用必經之路,方能以不變應萬變徹底控制各種漏洞利用變體,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/433352.html
標籤:其他
