來(lái)自Secarma的安全研究員Sam Thomas?發(fā)現(xiàn)了一種新的開(kāi)發(fā)技術(shù),可以使黑客更容易使用以前風(fēng)險(xiǎn)較低的函數(shù)觸發(fā)PHP編程語(yǔ)言中的關(guān)鍵反序列化漏洞。這項(xiàng)新技術(shù)使成千上萬(wàn)的Web應(yīng)用程序受到遠(yuǎn)程代碼執(zhí)行攻擊,包括由一些流行的內(nèi)容管理系統(tǒng)(如WordPress和Typo3)提供支持的網(wǎng)站。
反序列化漏洞
序列化就是把對(duì)象轉(zhuǎn)換成字節(jié)流,便于保存在內(nèi)存、文件、數(shù)據(jù)庫(kù)中;反序列化即逆過(guò)程,由字節(jié)流還原成對(duì)象。PHP反序列化或?qū)ο笞⑷肼┒醋畛跏窃?009年記錄的,這可能允許攻擊者通過(guò)向unserialize()PHP函數(shù)提供惡意輸入來(lái)執(zhí)行不同類型的攻擊。
研究人員發(fā)現(xiàn)攻擊者可以使用針對(duì)Phar檔案的低風(fēng)險(xiǎn)函數(shù)來(lái)觸發(fā)反序列化攻擊,而無(wú)需在各種場(chǎng)景中使用unserialize()函數(shù)。
Phar文件是PHP中的一種存檔格式,它以序列化格式存儲(chǔ)元數(shù)據(jù),只要文件操作函數(shù)(fopen,file_exists,file_get_contents等)試圖訪問(wèn)存檔文件,它就會(huì)被反序列化。
“對(duì)于直接文件操作(例如”file_exists“)和間接操作(例如在XML中的外部實(shí)體處理期間發(fā)生的那些操作(即,正在利用XXE漏洞時(shí)))都是如此,”
利用針對(duì)WordPress站點(diǎn)的PHP反序列化攻擊
托馬斯演示了如何使用作者帳戶對(duì)Wordpress站點(diǎn)執(zhí)行此攻擊,以完全控制Web服務(wù)器。為了成功利用該漏洞,攻擊者需要做的就是將包含惡意有效負(fù)載對(duì)象的有效Phar存檔上傳到目標(biāo)的本地文件系統(tǒng),并使文件操作功能使用“phar://”流包裝器訪問(wèn)它。
托馬斯還透露,攻擊者甚至可以使用JPEG圖像利用此漏洞,最初是通過(guò)修改前100個(gè)字節(jié)將Phar存檔轉(zhuǎn)換為有效的JPEG。
“應(yīng)用程序[WordPress]中某些縮略圖功能的工作方式使得具有上傳和修改媒體項(xiàng)目權(quán)限的攻擊者能夠充分控制”file_exists“調(diào)用中使用的參數(shù),從而導(dǎo)致反序列化發(fā)生,”
一旦精心設(shè)計(jì)的縮略圖上傳到目標(biāo)WordPress服務(wù)器上,攻擊者就可以使用另一個(gè)函數(shù)使用“phar://”流包裝器調(diào)用與Phar存檔相同的圖像文件,最終在程序反序列化元數(shù)據(jù)時(shí)執(zhí)行任意代碼。
“該漏洞存在是由于作為圖像文件傳遞的數(shù)據(jù)不安全反序列化,然后通過(guò)’/wpincludes/post.php’腳本中’wp_get_attachment_thumb_file’函數(shù)中的’phar://’流包裝器執(zhí)行,具有創(chuàng)建/編輯帖子能力的遠(yuǎn)程認(rèn)證攻擊者可以上傳惡意圖像并在易受攻擊的系統(tǒng)上執(zhí)行任意PHP代碼。”
托馬斯去年早些時(shí)候向WordPress安全團(tuán)隊(duì)報(bào)告了此漏洞,該公司承認(rèn)了這一問(wèn)題。但是,該公司發(fā)布的補(bǔ)丁并未完全解決問(wèn)題。
Thomas還報(bào)告了2018年6月9日Typo3的漏洞,該供應(yīng)商在版本7.6.30,8.7.17和9.3中解決了這個(gè)問(wèn)題。