hacktricks/network-services-pentesting/pentesting-smtp/smtp-smuggling.md

4.4 KiB
Raw Blame History

SMTP Smuggling

{% hint style="success" %} 学习和实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE)
学习和实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)

支持 HackTricks
{% endhint %}

基本信息

这种类型的漏洞最初是在 这篇文章中发现的,文中解释了在完成电子邮件时,利用 SMTP 协议解释的差异进行攻击是可能的,这允许攻击者在合法邮件的正文中走私更多邮件,从而冒充受影响域的其他用户(例如 admin@outlook.com绕过 SPF 等防御措施。

为什么

这是因为在 SMTP 协议中,要发送的邮件数据由用户(攻击者)控制,攻击者可以发送特别构造的数据,利用解析器之间的差异,在接收方走私额外的邮件。请查看原始文章中的这个示例:

https://sec-consult.com/fileadmin/user_upload/sec-consult/Dynamisch/Blogartikel/2023_12/SMTP_Smuggling-Overview__09_.png

如何

为了利用这个漏洞,攻击者需要发送一些数据,使得出站 SMTP 服务器认为这只是 1 封邮件,但入站 SMTP 服务器认为有多封邮件

研究人员发现,不同的入站服务器将不同的字符视为邮件消息数据的结束,而出站服务器则不这样认为。
例如,常规的数据结束是 \r\n.\r。但如果入站 SMTP 服务器也支持 \n.,攻击者可以在其邮件中添加该数据,并开始指示新的 SMTP 命令以走私它,就像在前面的图像中一样。

当然,这只有在出站 SMTP 服务器也不将这些数据视为消息数据的结束时才有效,因为在这种情况下,它将看到 2 封邮件而不是 1 封,因此最终这是在这个漏洞中被利用的不同步。

潜在的不同步数据:

  • \n.
  • \n.\r

还要注意SPF 被绕过,因为如果你从 user@outlook.com 走私一封来自 admin@outlook.com 的邮件,发件人仍然是 outlook.com

参考文献

{% hint style="success" %} 学习和实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE)
学习和实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)

支持 HackTricks
{% endhint %}