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\n
Windows系统上的大多数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
随机推荐
- 一道在输入上有坑点的LCS
原题连接 http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=114&p ...
- 【0】TensorFlow光速入门-序
本文地址:https://www.cnblogs.com/tujia/p/13863181.html 序言: 对于我这么一个技术渣渣来说,想学习TensorFlow机器学习,实在是太难了: 百度&qu ...
- Spring Boot学习笔记(二)——HelloWorld实现
提示:要在Eclipse里使用Spring Boot,首先要安装STS插件,前面我们已经安装了STS插件了,可以创建Spring Boot项目了. 1.创建项目: 新建项目,选择Spring Boot ...
- Centos7或RedHat7下安装Mysql
一次简单的Mysql安装记录 前言 由于网上安装Mysql的方式有很多种,但有些方式并未安装成功,比如用Yum源,还待后续查看具体是哪一步出了问题 以rpm包的形式安装Mysql 第一步:yum in ...
- MobileNet——一种模型轻量化方法
导言 新的CNN网络的提出,提高了模型的学习能力但同时也带来了学习效率的降低的问题(主要体现在模型的存储问题和模型进行预测的速度问题),这使得模型的轻量化逐渐得到重视.轻量化模型设计主要思想在于设计更 ...
- Redis中的一致性哈希问题
在说redis中的哈希(准确来说是一致性哈希)问题之前,先来看一个问题:为什么在分布式集群中一致性哈希会得到大量应用? 在一个分布式系统中,要将数据存储到具体某个节点,或者将来自客户端的请求分配到某个 ...
- 自动化测试之Selenium篇(一):环境搭建
当前无论找工作或者是实际项目应用,自动化测试扮演着非常重要的角色,今天我们来学习下Selenium的环境搭建 Selenium简述 Selenium是一个强大的开源Web功能测试工具系列 可进行读入测 ...
- css 兼容性总结
1.就是ie6双倍边距的问题,在使用了float的情况下,不管是向左还是向右都会出现双倍,最简单的解决方法就是用display:inline;加到css里面去. 2.文字本身的大小不兼容.同样是fon ...
- Docker系列04—跨主机网络方案(overlay/weave)
在前面详细讲解了几种网络模式:none,host,bridge,container.他们解决了单个主机间的容器的通信问题,并不能实现多个主机容器之间的通信. 跨主机网络方案包括两大类: 1,docke ...
- 深入浅出 webpack 之基础配置篇
前言 前端工程化经历过很多优秀的工具,例如 Grunt.Gulp.webpack.rollup 等等,每种工具都有自己适用的场景,而现今应用最为广泛的当属 webpack 打包了,因此学习好 webp ...