溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何利用Drupal漏洞并通過惡意圖片實(shí)現(xiàn)一鍵RCE

發(fā)布時(shí)間:2021-11-23 22:27:49 來源:億速云 閱讀:215 作者:柒染 欄目:網(wǎng)絡(luò)管理

這篇文章將為大家詳細(xì)講解有關(guān)如何利用Drupal漏洞并通過惡意圖片實(shí)現(xiàn)一鍵RCE,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

近期,Drupal發(fā)布了兩個(gè)針對(duì)7.x和8.x版本的關(guān)鍵漏洞修復(fù)補(bǔ)丁。攻擊者可以利用這兩個(gè)漏洞來實(shí)現(xiàn)遠(yuǎn)程代碼執(zhí)行,但他們首先要將惡意圖片上傳至遠(yuǎn)程服務(wù)器,并通過一系列偽造鏈接來欺騙已認(rèn)證的網(wǎng)站管理員來幫助他們實(shí)現(xiàn)代碼執(zhí)行。雖然這種方式比較“曲折”,但這也已經(jīng)足夠了。

漏洞利用演示

這兩個(gè)漏洞編號(hào)分別為ZDI-19-130和ZDI-19-291,將這兩個(gè)漏洞組合使用后,攻擊者將能夠?qū)崿F(xiàn)一鍵式代碼執(zhí)行。在賬戶注冊(cè)的過程中,攻擊者可以將嵌入了惡意代碼的圖片以頭像的形式上傳,也可以在論壇的評(píng)論區(qū)上傳。已禁用用戶注冊(cè)和用戶評(píng)論功能的Drupal網(wǎng)站不會(huì)受到這種攻擊的影響,請(qǐng)廣大網(wǎng)站管理員盡快將自己的Drupal站點(diǎn)升級(jí)為最新版本。

其中,ZDI-19-130是一個(gè)PHP反序列化漏洞,該漏洞將允許攻擊者利用網(wǎng)站管理員來實(shí)現(xiàn)遠(yuǎn)程代碼執(zhí)行,而ZDI-19-291是一個(gè)持久型XSS漏洞,攻擊者可以利用該漏洞強(qiáng)迫網(wǎng)站管理員發(fā)送惡意請(qǐng)求,并觸發(fā)漏洞ZDI-19-130。

關(guān)于ZDI-19-130的利用原理可以參考Thomas在今年Black Hat上的演講【白皮書】,或參考Thomas在BSidesMCR上的    演講內(nèi)容。簡(jiǎn)而言之,這是一種通過Phar文件觸發(fā)PHP反序列化漏洞的一種新方法,PHP Phar文件的元數(shù)據(jù)會(huì)以PHP序列化對(duì)象的形式存儲(chǔ),針對(duì)Phar文件的文件操作會(huì)觸發(fā)服務(wù)器在已存儲(chǔ)的元數(shù)據(jù)上執(zhí)行反序列化-unserialization()操作,并最終導(dǎo)致遠(yuǎn)程代碼執(zhí)行。

漏洞ZDI-19-291則是Drupal在處理已上傳文件的文件名過程中存在的一個(gè)漏洞,該漏洞與PCRE-Perl兼容的正則表達(dá)式有關(guān)。當(dāng)用戶上傳文件時(shí),Drupal會(huì)使用PRCE來修改文件名,以避免文件名重復(fù)。但是如果多次上傳文件,Drupal就會(huì)刪除文件的擴(kuò)展名,并導(dǎo)致攻擊者可以上傳任意HTML文件。

漏洞分析

攻擊第一階段:ZDI-19-291

這份PHP代碼段可以用來測(cè)試Drupal的部分源碼:【點(diǎn)我獲取】。

根據(jù)源碼的注釋,下面這段代碼會(huì)嘗試刪除文件名中值小于0x02的ASCII控制字符,并將其替換成下劃線(‘_‘)。代碼中的’/u’表示PHP引擎會(huì)將PCRE表達(dá)式以及相關(guān)字符串以UTF-8編碼進(jìn)行處理:

如何利用Drupal漏洞并通過惡意圖片實(shí)現(xiàn)一鍵RCE

攻擊第一階段測(cè)試結(jié)果:

如何利用Drupal漏洞并通過惡意圖片實(shí)現(xiàn)一鍵RCE

其中,\xFF字節(jié)已經(jīng)失效,\x80字節(jié)沒有有效的起始字節(jié),PHP拋出了一個(gè)“PREG_BAD_UTF8_ERROR”錯(cuò)誤,$basename變量被設(shè)置為了NULL。

在Drupal源碼中,執(zhí)行完preg_replace()后不會(huì)進(jìn)行錯(cuò)誤檢查。當(dāng)一個(gè)帶有無效UTF-8字符文件名的圖片上傳至Drupal兩次時(shí),該函數(shù)將會(huì)使用$basename變量值來運(yùn)行,并將其視作空字符串來處理。最后,函數(shù)會(huì)返回$destination,也就是’_’.$counter++的結(jié)果。

如何利用Drupal漏洞并通過惡意圖片實(shí)現(xiàn)一鍵RCE

這樣一來,攻擊者就可以通過用戶注冊(cè)功能向Drupal網(wǎng)站上傳一個(gè)GIF圖片,然后Drupal會(huì)用以下方式存儲(chǔ)圖片:

/sites/default/files/pictures/<YYYY-MM>/_0

而不是默認(rèn)存儲(chǔ)方式:

/sites/default/files/pictures/<YYYY-MM>/profile_pic.gif

雖然應(yīng)用會(huì)對(duì)上傳圖片的屬性進(jìn)行檢測(cè),但添加“GIF”或“.gif”字樣已經(jīng)可以滿足檢測(cè)條件了。

另一種方法是通過評(píng)論編輯器上傳惡意GIF文件。這種情況下,圖片會(huì)被存儲(chǔ)至/sites/default/files/inline-images/_0。但是,攻擊者在評(píng)論某篇文章之前注冊(cè)一個(gè)用戶賬號(hào)。

攻擊者將惡意GIF/HTML文件上傳至Drupal服務(wù)器之后,可以欺騙瀏覽器將文件以HTML頁面的形式呈現(xiàn)出來:

如何利用Drupal漏洞并通過惡意圖片實(shí)現(xiàn)一鍵RCE

此時(shí),攻擊者將可以在目標(biāo)Drupal站點(diǎn)上實(shí)現(xiàn)持久化XSS攻擊了。通過利用這種漏洞,攻擊者將能夠強(qiáng)迫擁有管理員權(quán)限的用戶發(fā)送攻擊第二階段的惡意請(qǐng)求。

可執(zhí)行PoC:【點(diǎn)我獲取】

漏洞利用-第二階段:ZDI-19-130

ZDI-19-130是一個(gè)反序列化漏洞,可以通過/admin/config/media/file-system節(jié)點(diǎn)的file_temporary_path請(qǐng)求參數(shù)來觸發(fā)。攻擊者還可以指定“phar://”流封裝器來讓file_temporary_path請(qǐng)求參數(shù)指向攻擊者上傳至Drupal服務(wù)器的惡意Phar文檔。

下面的system_check_directory()函數(shù)是表單回調(diào)函數(shù),負(fù)責(zé)處理用戶請(qǐng)求。根據(jù)我們的研究,“!is_dir($directory)”可以直接讓PHP觸發(fā)針對(duì)Phar文檔中元數(shù)據(jù)的反序列化操作。通過POP鏈利用技術(shù),攻擊者將能夠使用專門制作的Phar文檔來在Web服務(wù)器中實(shí)現(xiàn)任意代碼執(zhí)行。

如何利用Drupal漏洞并通過惡意圖片實(shí)現(xiàn)一鍵RCE

漏洞利用-第二階段:Polyglot文件

在利用ZDI-19-130之前,我們需要上傳一個(gè)Phar文檔,我們可以在用戶注冊(cè)階段將JPEG/Phar Polyglot文件以用戶頭像的形式上傳。下面給出的是一個(gè)JPEG/PharPolyglot文件樣本,它會(huì)執(zhí)行cat /etc/passwd命令,并利用漏洞ZDI-19-130。

Phar文檔跟JAR文件很像,它是一個(gè)組件包集合文件。在我們的漏洞利用場(chǎng)景中,使用的是基于TAR的Phar文檔。

為了創(chuàng)建Polyglot文件,攻擊者需要選擇一個(gè)JPEG圖片向量?;赥AR的惡意Phar文檔需要存儲(chǔ)在JPEG文件開頭的JPEG注釋域中。需要注意的是,我們需要修復(fù)TAR文件的校驗(yàn)碼,否則TAR文件會(huì)崩潰。

關(guān)于如何利用Drupal漏洞并通過惡意圖片實(shí)現(xiàn)一鍵RCE就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI