91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何通過WebPageTest服務0day漏洞實現Mozilla AWS環境遠程代碼執行

發布時間:2021-12-18 14:47:01 來源:億速云 閱讀:195 作者:柒染 欄目:安全技術

這篇文章將為大家詳細講解有關如何通過WebPageTest服務0day漏洞實現Mozilla AWS環境遠程代碼執行,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

Assetnote CS安全團隊在分析Mozilla AWS云服務網絡環境攻擊面時,發現了部署于其中的網絡性能測試工具WebPageTest存在一個0day漏洞,利用該漏洞最終實現了對Mozilla AWS服務器的遠程代碼執行(RCE)。

WebPageTest介紹

WebPageTest是一款開源的Web前端性能分析工具,其有在線版本和本地搭建版本兩種,能針對特定網站提供免費的性能評測,支持IE和Chrome瀏覽器,它會模擬使用真正的瀏覽器(IE和Chrome)連接速度,從全球多個地點運行免費網站速度測試。可以運行簡單的測試或執行高級測試,包括多步驟事務、視頻捕獲、內容阻塞等等。還將依據測試結果提供豐富的診斷信息,包括資源加載瀑布圖,頁面速度優化檢查和改進建議,會給每一項內容一個最終的評級。企業或組織可以下載    開源版本搭建內部測試站點,對內部網站進行性能測試分析。

在內網部署的WebPageTest服務中,可以通過修改其中的settings.ini文件來啟用一些基本的用戶名密碼驗證,所以還是建議對此進行配置,以便阻止一些匿名用戶的登錄訪問。    

在Assetnote CS安全團隊評估的很多內網WebPageTest服務中,都缺乏基本的用戶驗證措施,所以,可能產生的結果就是,攻擊者可以利用WebPageTest的一系列性能測試工具,來發起SSRF(服務端請求偽造)攻擊,實現對目標內網資源的訪問獲取。

漏洞概況

2017年11月,Assetnote CS安全團隊在對Mozilla的AWS(亞馬遜云服務)環境測試過程中,發現了以下兩個網絡資產:

wpt-vpn.stage.mozaws.net

wpt1.dev.mozaws.net

這兩個網絡資產都屬Mozilla AWS環境中的WebPageTest服務測試實例,而且,Mozilla AWS環境中部署的WebPageTest服務沒有任何基本的用戶名密碼驗證措施,在與白帽Mathias的合作下,我們對其中部署的WebPageTest服務進行了源碼分析,經過數個小時的測試,我們就發現了一個可以導致遠程代碼執行(RCE)的攻擊鏈。

由于在當時這算是一個0day漏洞,所以,我們及時與Mozilla公司和WebPageTest團隊進行了溝通協商,修復了這個漏洞。在2018年1月17日的修復版本中可以看到其中提交的commit信息。

漏洞發現利用

在WebPageTest的源碼中,首先引起我們注意的是/www/work/workdone.php腳本具備的上傳和解壓任意zip文件功能,該php腳本文件包含了限制127.0.0.1之外的訪問源邏輯,代碼如下(第110行): 

...!strcmp($_SERVER['REMOTE_ADDR'], "127.0.0.1")...

同樣在這個php文件中,我們發現了另外一個危險之處,那就是上傳任意zip文件并解壓至一個已知位置的邏輯,代碼如下(第133-136行):

if (isset($_FILES['file']['tmp_name'])) {  ExtractZipFile($_FILES['file']['tmp_name'], $testPath);  CompressTextFiles($testPath);}

基于以上代碼邏輯,如果我們能把IP偽裝為127.0.0.1,那么是不是就可以通過它們來實現服務端代碼執行了呢?但是,事實沒有我們想得這么簡單,在/www/work/workdone.php中的第321行,還存在這么一個方法函數:

SecureDir($testPath);

SecureDir方法函數的代碼定義在/www/common_lib.inc文件的第2322 - 2347行:

/*** Make sure there are no risky files in the given directory and make everything no-execute** @param mixed $path*/function SecureDir($path) {    $files = scandir($path);    foreach ($files as $file) {        $filepath = "$path/$file";        if (is_file($filepath)) {            $parts = pathinfo($file);            $ext = strtolower($parts['extension']);            if (strpos($ext, 'php') === false &&                strpos($ext, 'pl') === false &&                strpos($ext, 'py') === false &&                strpos($ext, 'cgi') === false &&                strpos($ext, 'asp') === false &&                strpos($ext, 'js') === false &&                strpos($ext, 'rb') === false &&                strpos($ext, 'htaccess') === false &&                strpos($ext, 'jar') === false) {                @chmod($filepath, 0666);            } else {                @chmod($filepath, 0666);    // just in case the unlink fails for some reason                unlink($filepath);            }        } elseif ($file != '.' && $file != '..' && is_dir($filepath)) {            SecureDir($filepath);        }    }}

它會檢查過濾掉一些危險的文件,并確保無任何文件的執行操作,由于它在之后后續的代碼流中才出現,因此就存在一種可利用的競爭條件(Race Condition ),即解壓到web服務器的PHP文件在被過濾刪除之前可被短暫地訪問到。    

在我們構造的攻擊鏈中,其前提條件非常簡單,由于在目標資產wpt-vpn.stage.mozaws.net的WebPageTest服務中,執行Traceroute命令后,我們可以獲取到WebPageTest生成的一個有效 test ID,有了這個ID號就比較好辦了。比如,我們在其中執行執行對https://google.com的Traceroute命令:

如何通過WebPageTest服務0day漏洞實現Mozilla AWS環境遠程代碼執行之后,WebPageTest服務會跳轉到一個包含test ID的性能測試結果URL頁面去:

http://wpt-vpn.stage.mozaws.net/result/171124_GW_9/

這里,171124_GW_9為test ID。

到此,我們還差著127.0.0.1 IP偽造這一步,如果這步能成功,就能有效訪問到workdone.php文件,發起命令執行了。

經過分析,我們在 /www/common.inc 文件中的第70行發現了以下代碼邏輯:

if (isset($_SERVER["HTTP_FASTLY_CLIENT_IP"]))

  $_SERVER["REMOTE_ADDR"] = $_SERVER["HTTP_FASTLY_CLIENT_IP"];

從這個代碼段中可以發現,我們能通過發送請求的方式,把 FASTLY-CLIENT-IP 請求頭設置為127.0.0.1,從而實現以遠程用戶身份任意更改 $_SERVER["REMOTE_ADDR"]的IP地址。

綜上所述,我們可以設置兩個Burp Intruder 攻擊擴展來實現最終的服務端代碼執行。其中一個Burp Intruder用來實現上傳一個惡意的zip文件,另外一個Burp Intruder用來訪問解壓過后存在于目標系統中的php文件。我們對上述競爭條件的利用,最大Burp Intruder線程數為200。

如何通過WebPageTest服務0day漏洞實現Mozilla AWS環境遠程代碼執行

但好在有高速請求插件Turbo Intruder的幫助下,我們的漏洞利用鏈就比較穩定了。最終,我們在Mozilla    AWS網絡環境中成功實現了服務端代碼執行。如下,我們在wpt-vpn.stage.mozaws.net中實現了對phpinfo() 的調用讀取:    

如何通過WebPageTest服務0day漏洞實現Mozilla AWS環境遠程代碼執行

關于如何通過WebPageTest服務0day漏洞實現Mozilla AWS環境遠程代碼執行就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

福州市| 酉阳| 游戏| 盐山县| 康保县| 苏尼特左旗| 和硕县| 图木舒克市| 山西省| 施秉县| 夏邑县| 牙克石市| 莫力| 扶绥县| 高雄市| 铁岭市| 龙山县| 奇台县| 庄浪县| 嘉定区| 恩施市| 阳西县| 谢通门县| 鄂托克前旗| 晴隆县| 泸水县| 平罗县| 车险| 漾濞| 陵水| 全南县| 靖安县| 邯郸县| 从化市| 资溪县| 手游| 信阳市| 阳原县| 德钦县| 南平市| 保山市|