• bWAPP----Mail Header Injection (SMTP)


    Mail Header Injection (SMTP)

    本地没有搭环境,没法演示,附上转载的

    https://www.acunetix.com/blog/articles/email-header-injection/

    什么是电子邮件标题注入?

    通常的做法是网站实施联系表单,反过来将合法用户的电子邮件发送给消息的预期收件人。大多数情况下,这样的联系表单将设置SMTP标头FromReply-to以便让收件人轻松处理联系表单中的通信,就像其他电子邮件一样。

    不幸的是,除非用户的输入在插入SMTP头之前被验证,否则联系表单可能容易受到电子邮件头插入(也称为SMTP头注入)的攻击。这是因为攻击者可以将额外的头部注入到消息中,从而指示SMTP服务器执行与预期不同的指令。

    以下PHP代码是一种易受电子邮件头部注入攻击的典型联系人表单的示例。以下代码将由网站访问者提供的名称和电子邮件地址,并准备电子邮件的标题列表。

    使用From标题,以便电子邮件的收件人(在本示例中为root @ localhost)将知道电子邮件作者是谁。回复标题允许电子邮件的收件人通过他们的电子邮件客户端中的回复按钮回复发送电子邮件的人。

    <?php
    if(isset($_POST['name']))
    {
    $name = $_POST['name'];
    $replyto = $_POST['replyTo'];
    $message = $_POST['message'];
    
    $to = 'root@localhost';
    $subject = 'My Subject';
    
    // Set SMTP headers
    $headers = "From: $name 
    " .
    "Reply-To: $replyto";
    
    mail($to, $subject, $message, $headers);
    }
    ?>

    典型的正版POST请求如下。

    POST /contact.php HTTP/1.1
    Host: www.example.com
    
    name=Joe Bloggs&replyTo=joebloggs@example.com&message=Example message

    攻击者可以通过发送以下POST请求来滥用此联系表单。

    POST /contact.php HTTP/1.1
    Host: www.example.com
    
    name=Attacker
    bcc: spam@victim.com&replyTo=attacker@attacker.com&message=Attacker message

    在此示例中,攻击者正在插入换行符( Windows系统上的大多数UNIX和Linux系统上),并附加一个包含附加电子邮件地址的密码SMTP标头,SMTP服务器将向BCC发送电子邮件。

    攻击者可以使用这样的策略匿名发送大量消息,甚至发送网络钓鱼电子邮件,其中接收者认为这些消息源自可信来源。还值得注意的是,此漏洞不限于PHP; 它可能会影响任何基于任意用户输入发送电子邮件的应用程序。

    检测电子邮件头部注入漏洞

    为了自动检测电子邮件头部注入,我们需要依赖中介服务,因为检测到这样一个漏洞需要带外和时间延迟的向量。Acunetix 在自动扫描期间通过使用AcuMonitor作为其中介服务来解决此问题

    在扫描期间,Acunetix将找到联系表单,并注入指向AcuMonitor电子邮件地址的自定义BCC SMTP标头。如果有问题的应用程序导致SMTP服务器发送电子邮件到AcuMonitor,那么AcuMonitor知道它是易受攻击的,它会发送一个通知回到Acunetix,表明它应该提高电子邮件头插入警报。

    减轻

    减少电子邮件标题注入涉及验证用户输入,不允许输入中的任何换行符,这将导致添加另一个SMTP标头。一般来说,当验证用户输入时,实现强输入验证的最简单和最强劲的方法是通过白名单中允许的字符用于SMTP标头。

    分享这篇文章
  • 相关阅读:
    [图解]在输入框和文本框中获取和设置光标位置,以及选中文本和获取选中文本值的方法 --- 详解,兼容所有浏览器。
    关于鼠标事件的screenY,pageY,clientY,layerY,offsetY属性 (详细图解)
    get新技能: 如何设置元素高度与宽度成特定比例。宽度改变,高度自动按比例改变。 例如设置宽高比16:9。
    jQuery源码 Ajax模块分析
    jQuery 1.9 Ajax代码带注释
    html5 自定义数据属性 ,也就是 data-* 自定义属性---笔记。
    client/scroll/offset width/height/top/left ---记第一篇博客
    JSON对象长度和遍历方法
    如何组织css,写出高质量的css代码
    css中文本框与按钮对不齐解决方案
  • 原文地址:https://www.cnblogs.com/hongren/p/7154814.html
Copyright © 2020-2023  润新知