bWAPP----Mail Header Injection (SMTP)
Mail Header Injection (SMTP)
本地没有搭环境,没法演示,附上转载的
https://www.acunetix.com/blog/articles/email-header-injection/
什么是电子邮件标题注入?
通常的做法是网站实施联系表单,反过来将合法用户的电子邮件发送给消息的预期收件人。大多数情况下,这样的联系表单将设置SMTP标头From,Reply-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 \n" .
"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\nbcc: spam@victim.com&replyTo=attacker@attacker.com&message=Attacker message
在此示例中,攻击者正在插入换行符(\n在\r\nWindows系统上的大多数UNIX和Linux系统上),并附加一个包含附加电子邮件地址的密码SMTP标头,SMTP服务器将向BCC发送电子邮件。
攻击者可以使用这样的策略匿名发送大量消息,甚至发送网络钓鱼电子邮件,其中接收者认为这些消息源自可信来源。还值得注意的是,此漏洞不限于PHP; 它可能会影响任何基于任意用户输入发送电子邮件的应用程序。
检测电子邮件头部注入漏洞
为了自动检测电子邮件头部注入,我们需要依赖中介服务,因为检测到这样一个漏洞需要带外和时间延迟的向量。Acunetix 在自动扫描期间通过使用AcuMonitor作为其中介服务来解决此问题。
在扫描期间,Acunetix将找到联系表单,并注入指向AcuMonitor电子邮件地址的自定义BCC SMTP标头。如果有问题的应用程序导致SMTP服务器发送电子邮件到AcuMonitor,那么AcuMonitor知道它是易受攻击的,它会发送一个通知回到Acunetix,表明它应该提高电子邮件头插入警报。
减轻
减少电子邮件标题注入涉及验证用户输入,不允许输入中的任何换行符,这将导致添加另一个SMTP标头。一般来说,当验证用户输入时,实现强输入验证的最简单和最强劲的方法是通过白名单中允许的字符用于SMTP标头。
分享这篇文章
bWAPP----Mail Header Injection (SMTP)的更多相关文章
- mail Header Injection Exploit
Preventing Email Header Injection - PHundamental PHP Best Practices - http://nyphp.org/phundamentals ...
- HTTP Header Injection in Python urllib
catalogue . Overview . The urllib Bug . Attack Scenarios . 其他场景 . 防护/缓解手段 1. Overview Python's built ...
- linux使用mail发送外部smtp邮件
linux使用mail发送外部smtp邮件 第一章 说明 参考资料: http://coolnull.com/2614.html linux自带的mail可以实现外部smtp发邮件.不需要本地配置po ...
- 使用java mail的网易smtp协议 发送邮件
package com.enation.newtest; import java.security.GeneralSecurityException; import java.util.Propert ...
- java mail 使用 gmail smtp 发送邮件
smtp 服务器:smtp.gmail.com 使用ssl的端口:465 用户名:username@gmail.com 密码:password** 基本配置没有问题,关键在于Google对安全性要求非 ...
- centos mail使用外部SMTP发送邮件
1.安装mailx yum install mailx -y 安装好后,编辑配置文件 mailx -V 12.4 7/29/08 <<mailx的版本号 rpm -qc mailx /e ...
- 使用System.Net.Mail中的SMTP发送邮件(带附件)
System.Net.Mail 使用简单邮件传输协议SMTP异步发送邮件 想要实现SMTP发送邮件,你需要了解这些类 SmtpClient :使用配置文件设置来初始化 SmtpClient类的新实例. ...
- Linux下配置mail使用外部SMTP发送邮件
修改/etc/mail.rc,增加两行:指定外部的smtp服务器地址.帐号密码等. # vi /etc/mail.rc set from=demo@qq.com smtp=smtp.qq.com se ...
- simple mail example for smtp debug
vim /etc/mail.rc head /etc/rc.local | mail -s "test_email" pyz_sub1@mailtest.com
随机推荐
- Jmeter入门(5)- jmeter取样器的HTTP请求
一.HTTP管理器 位置:线程组右键 ==> 添加 ==> 配置元件 1.HTTP信息头管理器 添加测试计划 添加线程组 添加HTTP请求 添加请求头(HTTP信息头管理器) 设置请求参数 ...
- 关于设置Vscode缩进,保存代码任然缩进无效解决方式
在Vscode按F1,运行命令,输入Formatter config 把内容更改为以下代码 { "onSave": true, "javascript": { ...
- Messenger实现进程间通信(IPC)
messenger内部也是实现aidl通信,所以可以看做一个轻量级aidl,但相对比较简单.首先开启一个服务并实现一个Handler用来处理消息,在onbind方法中返回IBinder对象,通过Ser ...
- B. GameGame 解析(思維、博弈)
Codeforce 1383 B. GameGame 解析(思維.博弈) 今天我們來看看CF1383B 題目連結 題目 兩個人在玩遊戲,有一個長度為\(n\)的數列\(a\),每次每個人選一個數字和目 ...
- uniapp使用swiper组件做tab切换动态获取高度
swiper对高度进行了限制,所以说通常做出了tab切换的效果但是内容经常被截取掉???? 所以我在前端做了一个动态获取高度的功能 选项卡标题也就是tab切换的效果 选项卡内容区域的高度自适应 因为进 ...
- MONGODB03 - 分组计数_分组去重计数(基于 spring-data-mongodb)
前因 项目中有查询MongoDB单表统计相关功能,涉及到MongoDB数据聚合相关操作,其中在多字段分组去重计数相关操作API上资料较少,spring-data-mongodb相关的API介绍也不够直 ...
- Python使用JsAPI发起微信支付 Demo
Python使用JsAPI发起微信支付 Demo 这个是基于Django框架. 了解更多,可以关注公众号"轻松学编程" 1.公众号设置.微信商户号设置 这些都可以在官网查得到, 公 ...
- 【USACO】Cow Brainiacs
题意描述 Cow Brainiacs 求 \(n!\) 在 \(b\) 进制表示下的第一位非 \(0\) 位的数字. 算法分析 闲话 忙人自动略过 之前做过一道 \(10\) 进制表示下的题目,感觉差 ...
- Serilog源码解析——使用方法
在上两篇文章(链接1和链接2)中,我们通过一个简易 demo 了解到了一个简单的日志记录类库所需要的功能,即一条日志有哪些数据,以及如何通过一次记录的方式将同一条日志消息记录到多个日志媒介中.在本文中 ...
- ACM已刷题
ZOJ: 1001.1002.1003.1004.1005.1006.1037.1045.1048.1049.1067.1087.1091.1016. swjtuoj: 2433 注:没链接的应该是最 ...