欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

PHP邮件注入攻击技术(1)

程序员文章站 2022-06-07 09:01:38
...
1. 简介

如今,互联网的使用急剧上升,但绝大多数互联网用户没有安全知识背景。大多数的人都会使用互联网通过邮件Email的方式和他人进行通信。出于这个原因,大 多数网站允许他们的用户联系他们,向网站提供建议,报告一个问题,或者要求反馈,用户将会发送反馈给网站管理员的电子邮件。

不 幸的是,大多数web开发人员对安全编码Code-Security没有足够的认识,其中的一些程序猿使用现成的库或框架,这些库受到许多已知的漏洞。这 些漏洞是已经公布,厂商并已经对其进行了修补,并且相应的攻击源代码poc都在互联网上可下载的,但大多数开发人员都懒得升级到最新版本。

今天我们要谈论电子邮件注射,攻击者可以使用你的邮件服务器来发送垃圾邮件。

2. 邮件注入

From Wikipedia:

电子邮件注入是一个安全漏洞,这种漏洞广泛存在于在互联网电子邮件收发应用中。这是电子邮件注射和HTTP头注射类似。和SQL注入攻击类似,这种漏洞是一类常见的的漏洞,发生在当一个编程语言是嵌入到另一个,例如MYSQL嵌入到PHP中。

当一个可以提交数据到一个Web应用程序表单被添加到一个Web页面,恶意用户可能会利用MIME格式添加额外的信息到要发送的消息中 (POST/GET),比如一个新的收件人列表或一个完全不同的消息体。因为MIME格式使用回车分隔在数据包中信息(HTTP数据包中的每一行之间都有 一个换行符,在POST和HTTP HEADER之间有两个换行符),通过添加回车提交表单数据(使用FB的一些插件可以很容易的做到),可以允许一个简单的留言板是用来发送成千上万的消 息。同样,一个垃圾邮件发送者可以使用这种战术的恶意发送大量的匿名消息。

电子邮件注入是针对PHP内置邮件功能的一种攻击类型。它允许恶意攻击者注入任何邮件头字段,BCC、CC、主题等,它允许黑客通过注入手段从受害者的邮 件服务器发送垃圾邮件。由于这个原因,这种攻击称为电子邮件注入,或者邮件形式滥发。这个漏洞是不限于PHP。它可能会影响任何从用户UI接收消息并发送 电子邮件消息的应用程序。这种攻击的主要原因是不适当的用户输入验证或应用程序根本没有验证和过滤机制。

3. 邮件注入的攻击原理

中国古话说得好: 知其然才能知其所以然。

为了解释邮件注入的工作原理,我们必须先了解PHP Email函数的工作原理。下面是从PHP Manual中找到API解释

  1. mail():
  2. http://www.php.net/manual/en/function.mail.php
  3. bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )

你可以注意到,这需要三个必填参数(”目的地、主题和消息”)和其他一些可选参数和函数返回一个布尔值。


那么让我们来看看一个带漏洞的代码来演示这个漏洞:

  1. $to="littlehann@foxmail.com";
  2. if (!isset($_POST["send"]))
  3. {
  4. ?>
  5. "POST"
    action="">