深入剖析CVE-2021-40444-Cabless利用鏈
背景
CVE-2021-40444為微軟MHTML遠(yuǎn)程命令執(zhí)行漏洞,攻擊者可通過(guò)傳播Microsoft Office文檔,誘導(dǎo)目標(biāo)點(diǎn)擊文檔從而在目標(biāo)機(jī)器上執(zhí)行任意代碼。該漏洞最初的利用思路是使用下載cab并釋放、加載inf文件的形式執(zhí)行惡意代碼。獨(dú)立安全研究員Eduardo B.在github公開(kāi)了一種新的“無(wú)CAB”的漏洞利用方法及其POC。公眾號(hào)之前發(fā)布的研判文章中已對(duì)在野利用中出現(xiàn)的新的Cabless利用鏈以及RAR文件隱藏載荷的巧妙方法進(jìn)行了分析。本篇將進(jìn)一步探究該利用鏈的技術(shù)本質(zhì),并在復(fù)現(xiàn)攻擊場(chǎng)景的前提下嘗試對(duì)利用鏈進(jìn)行改進(jìn)。
基于URL Scheme的Cabless利用鏈
與基于cab的攻擊方式一樣,新攻擊鏈依然需要在Office文檔中插入惡意htmlfile OLE對(duì)象,當(dāng)目標(biāo)用戶(hù)點(diǎn)擊文檔后會(huì)請(qǐng)求訪(fǎng)問(wèn)遠(yuǎn)程html頁(yè)面,而html頁(yè)面中通過(guò)ActiveX控件調(diào)用".wsf:../" URL Scheme鏈接,最終調(diào)用wcript.exe執(zhí)行RAR中嵌入的wsf腳本。
'.wsf:../../../Downloads/?.wsf'
URL Scheme也叫URL protocol,它的作用是通過(guò)鏈接啟動(dòng)對(duì)應(yīng)的本地程序,格式為[scheme]://[host]/[path]?[query]。文件后綴名可同樣用作scheme,調(diào)用相關(guān)文件類(lèi)型綁定的程序。’?[query]’的存在則可利用URL Scheme與程序在處理路徑時(shí)不同的行為,達(dá)到忽略真實(shí)后綴名,繞過(guò)擴(kuò)展名校驗(yàn)的目的。在之前的攻擊鏈中曾使用”.cpl”鏈接調(diào)用系統(tǒng)rundll32.exe程序?qū)nf文件作為cpl文件加載執(zhí)行。

目前公開(kāi)的配合RAR的Cabless利用鏈的POC有兩個(gè)利用條件,一是猜測(cè)到WINRAR的存儲(chǔ)位置,默認(rèn)其位于用戶(hù)目錄的Downloads文件夾下,否則無(wú)法獲取wsf腳本位置;二是明確wscript.exe運(yùn)行的當(dāng)前路徑(例如Documents目錄),否則無(wú)法構(gòu)造正確的路徑。下面將從不同的利用場(chǎng)景考慮,思考更靈活的URL Scheme構(gòu)造方式。
基于不同利用場(chǎng)景的利用鏈改進(jìn)
配合RAR的Cabless利用鏈在實(shí)際執(zhí)行時(shí)有兩種可能,用戶(hù)直接在WinRAR中打開(kāi)DOCX文件,以及先解壓再打開(kāi),對(duì)這兩條攻擊路徑進(jìn)行分別的探究。
直接在WINRAR中打開(kāi)DOCX文件
當(dāng)用戶(hù)直接在WINRAR中打開(kāi)壓縮包中的DOCX文件時(shí)的進(jìn)程樹(shù)如下:

WinRAR的當(dāng)前路徑為RAR文件所在文件夾。

Word的當(dāng)前路徑為C:\Users\user\Documents,RAR中的DOCX文件被釋放到%TEMP%臨時(shí)文件夾中。

wscript.exe被觸發(fā)執(zhí)行后的當(dāng)前路徑為WinRAR的路徑(也就是壓縮包所在的文件夾)。

".wsf:"被用于Url Scheme喚起wscript.exe,而在被喚起后又被當(dāng)作普通目錄名去解析。’.wsf:’后的兩個(gè)’.’可替換為其他內(nèi)容,不影響執(zhí)行,但是如果去掉這兩個(gè)字符會(huì)在參數(shù)傳遞給wscript.exe時(shí)吞掉一個(gè)“../”導(dǎo)致找不到文件。這是因?yàn)閣script.exe解析路徑的時(shí)候會(huì)將“.wsf:aa”整體當(dāng)作一個(gè)host看待,后面拼接“../”就抵消了這層目錄關(guān)系,相當(dāng)于當(dāng)前目錄。
基于以上測(cè)試可知,當(dāng)DOCX文件在WinRAR中直接執(zhí)行時(shí)雖然DOCX文件釋放于臨時(shí)目錄,但wscript.exe的當(dāng)前目錄即是RAR文件所在的目錄。由此我們可以構(gòu)造此情況下100%可用的URL Scheme(直接從當(dāng)前路徑讀取RAR文件):
'.wsf:aa/../exp.rar1?.wsf'
先解壓DOCX文件再打開(kāi)
這種情況其實(shí)更復(fù)雜,也是公開(kāi)的POC針對(duì)的場(chǎng)景,對(duì)應(yīng)進(jìn)程樹(shù):

直接點(diǎn)擊解壓后的DOCX文件打開(kāi)時(shí),Word的當(dāng)前路徑為DOCX文件所在路徑,wscript.exe的路徑也將保持一致。

值得注意的是,在一些情況下Word會(huì)將當(dāng)前路徑設(shè)置為C:\Users\Document,這可能是公開(kāi)POC中構(gòu)造路徑的依據(jù)。但無(wú)論當(dāng)前路徑是什么,攻擊者都必須成功獲取(猜測(cè))到RAR所在的文件夾。
漏洞修復(fù)
微軟在9月的補(bǔ)丁中已將MHTML中使用URL Scheme的問(wèn)題修復(fù),在ieframe.dll中加入了一個(gè)新的校驗(yàn)函數(shù)IsValidSchemeName:

該函數(shù)將對(duì)URL Scheme進(jìn)行校驗(yàn),諸如”.cpl”、“.wsf”這種以文件擴(kuò)展名啟動(dòng)應(yīng)用程序的方式由于以字符“.”開(kāi)頭無(wú)法通過(guò)該校驗(yàn)函數(shù)的判斷。
總結(jié)
本文主要分析了CVE-2021-40444的Cabless利用鏈中存在的路徑問(wèn)題以及對(duì)之前技術(shù)研判內(nèi)容進(jìn)行補(bǔ)充。通過(guò)分析CVE-2021-40444新利用鏈,可以看到該漏洞的根本原因是Office文檔可以通過(guò)MHTML協(xié)議請(qǐng)求訪(fǎng)問(wèn)遠(yuǎn)程HTML頁(yè)面從而執(zhí)行JavaScript代碼,并最終通過(guò)Url Scheme啟動(dòng)本地應(yīng)用程序執(zhí)行投遞的惡意代碼,而中間投遞惡意代碼的方式是可以替換的。同時(shí)也給了作為初學(xué)者的筆者很多啟發(fā),在分析漏洞時(shí)需加入對(duì)根本問(wèn)題的思考:在攻擊鏈中哪些部分是必不可少的,哪些是可以替換的。必不可少的部分作為漏洞根本問(wèn)題要更深入地分析,而可以替換的部分要嘗試去挖掘可替換的新利用鏈。而對(duì)于防守方,把握漏洞本質(zhì)與漏洞利用必經(jīng)之路,方能以不變應(yīng)萬(wàn)變徹底控制各種漏洞利用變體。
浙公網(wǎng)安備 33010602011771號(hào)