vBulletin是一款基于PHP編程語(yǔ)言和MySQL數(shù)據(jù)庫(kù)服務(wù)器且被廣泛采用的網(wǎng)絡(luò)論壇軟件包,它為互聯(lián)網(wǎng)上超過(guò)10萬(wàn)個(gè)網(wǎng)站提供支持,其中包括《財(cái)富》世界500強(qiáng)和Alexa排名前100萬(wàn)的企業(yè)網(wǎng)站和論壇。
近日,意大利安全公司TRUEL IT的一名安全研究人員和一名不愿透露姓名的獨(dú)立安全研究人員發(fā)現(xiàn),vBulletin存在兩個(gè)未修復(fù)的零日漏洞,其中一個(gè)漏洞可導(dǎo)致遠(yuǎn)程攻擊者在最新版 vBulletin應(yīng)用服務(wù)器中執(zhí)行惡意代碼。
兩位研究人員通過(guò)Beyond Security 公司的SecuriTeam安全披露項(xiàng)目披露了這些漏洞的詳情。漏洞影響了vBulletin 5(vBulletin的版本5),且并未被修復(fù)。
除了發(fā)布安全性聲明外,Beyond Security公司從2017年11月21日起就試圖聯(lián)系vBulletin官方,但一直沒(méi)有收到該公司的任何回復(fù)。這也是為什么此次會(huì)公開(kāi)披露這兩個(gè)漏洞的最主要原因之一。
遠(yuǎn)程任意代碼執(zhí)行漏洞第一個(gè)漏洞,也就是前面提到的遠(yuǎn)程任意代碼執(zhí)行漏洞。它屬于一個(gè)文件包含問(wèn)題,可導(dǎo)致遠(yuǎn)程代碼執(zhí)行,允許遠(yuǎn)程攻擊者包含來(lái)自vBulletin服務(wù)器的任何文件并且執(zhí)行任意PHP代碼。
未經(jīng)身份驗(yàn)證的攻擊者可以通過(guò)向index.php發(fā)出包含“routestring=”參數(shù)的GET請(qǐng)求來(lái)觸發(fā)這個(gè)漏洞。該請(qǐng)求允許攻擊者向安裝在Windows操作系統(tǒng)上的vBulletin服務(wù)器創(chuàng)建一個(gè)精心制作的請(qǐng)求,并在Web服務(wù)器上包含任何文件。
研究人員還提供了概念驗(yàn)證(PoC)漏洞利用代碼來(lái)展示漏洞的利用情況,該漏洞到目前還沒(méi)有獲得獲得CVE編號(hào)。
遠(yuǎn)程任意文件刪除漏洞第二個(gè)漏洞編號(hào)為CVE-2017-17672,并被描述為一個(gè)反序列化問(wèn)題。未經(jīng)身份驗(yàn)證的攻擊者可以利用該漏洞刪除任意文件,甚至在某些情況下執(zhí)行惡意代碼。
這個(gè)漏洞來(lái)源于用戶提供的輸入中PHP的unserialize()的不安全使用,這允許未經(jīng)身份驗(yàn)證的攻擊者能夠刪除任意文件,并可能在vBulletin安裝上執(zhí)行任意代碼。
研究人員解釋說(shuō),vB_Library_Template是一個(gè)公開(kāi)的API,它的cacheTemplates()函數(shù)允許從數(shù)據(jù)庫(kù)獲取一組給定模板的信息,以便將它們存儲(chǔ)在緩存變量中。
$ temnplateidlist變量可以來(lái)自于用戶輸入,直接提供給unserialize(),進(jìn)而產(chǎn)生了一個(gè)任意的反序列化原語(yǔ)。
并非vBulletin首次曝零日漏洞早在2015年11月就有媒體報(bào)道,在一起攻擊事件中,攻擊者用零日漏洞攻擊了vBulletin的官網(wǎng),攻擊導(dǎo)致40萬(wàn)名vBulletin用戶帳號(hào)、密碼及其他敏感數(shù)據(jù)泄露。
與此同時(shí),攻擊者還利用同樣的漏洞攻擊了基于vBulletin軟件包制作的Foxit軟件公司論壇。根據(jù)當(dāng)時(shí)來(lái)自網(wǎng)絡(luò)安全公司的說(shuō)法,這個(gè)漏洞在被發(fā)現(xiàn)時(shí)已經(jīng)存在了3年之久,屬于一個(gè)遠(yuǎn)程代碼執(zhí)行漏洞,允許攻擊者幾乎可以完全控制基于vBulletin軟件包制作的論壇網(wǎng)站。
vBulletin官方在之后發(fā)布了一個(gè)安全補(bǔ)丁vBulletin 5(5.1.4~5.1.9),并對(duì)其所有用戶強(qiáng)制進(jìn)行了密碼重置。