0x00:介绍
IMAP 就是 Internet Mail Access Protocol 的缩写翻译来就是邮件访问协议,也就是用来收邮件的(和它类似的还有个 POP3,也是用来收邮件的)。SMTP 就是 Simple Mail Transfer Protocol 的缩写翻译来就是邮件传输协议,也就是用来发邮件的。
IMAP/SMTP 注入也就是收邮件发邮件的注入,有很多类似于这样的功能,例如要发消息给某个用户组或者某个用户,程序会提供一个发邮件的方式,输入名称、邮件地址、邮件内容即可。或者是一些重要的邮件通知功能找回密码登录等,要用户填入信息进行验证发送邮件给自己。而注入就是未对用户输入的地址做严格的过滤和限制,导致可以加入一些其他的邮件头,例如 CC 抄送等。
0x01:邮件头
基本所有的邮件都支持原文查看,类似于网页查看源代码,比如 qq 邮箱点击显示原文来查看邮件的原始内容,即带标题头的内容。
以下是常见的标题头字段说明。
- return-path:邮件的回复地址。
- from:发件人地址。
- to:收件人地址。
- subject:邮件主题,即邮件名。
- body:邮件内容。
- date:邮件发送日期。
- cc:抄送。
- bcc:密送。
而我们程序中发送邮件时则需要按这种模式来发送邮件。
0x02:示例
拿 bwapp 的 mail 注入来做示例,这里因为 bwapp 发送邮件使用的是 mail 函数,它不支持 smtp 的身份验证功能,所以不方便发邮件,我们这里只分析它的原理和利用方法,大家如果感兴趣下去可以使