hacktricks/pentesting-web/email-injections.md

8.2 KiB
Raw Blame History

电子邮件注入

使用 Trickest 来轻松构建并自动化工作流程,由世界上最先进的社区工具提供支持。 立即获取访问权限:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

从零开始学习 AWS 黑客技术,成为 htARTE (HackTricks AWS Red Team Expert)

其他支持 HackTricks 的方式:

在发送的电子邮件中注入

在发件人参数后注入 Cc 和 Bcc

From:sender@domain.com%0ACc:recipient@domain.co,%0ABcc:recipient1@domain.com

消息将发送至收件人和recipient1账户。

注入参数

From:sender@domain.com%0ATo:attacker@domain.com

消息将被发送给原始收件人和攻击者账户。

注入主题参数

From:sender@domain.com%0ASubject:This is%20Fake%20Subject

更改消息正文

注入两个换行符,然后编写您的消息以更改消息的正文。

From:sender@domain.com%0A%0AMy%20New%20%0Fake%20Message.

PHP mail() 函数利用

# The function has the following definition:

php --rf mail

Function [ <internal:standard> function mail ] {
- Parameters [5] {
Parameter #0 [ <required> $to ]
Parameter #1 [ <required> $subject ]
Parameter #2 [ <required> $message ]
Parameter #3 [ <optional> $additional_headers ]
Parameter #4 [ <optional> $additional_parameters ]
}
}

第5个参数$additional_parameters

本节将基于如何在攻击者控制此参数的情况下滥用它

此参数将被添加到PHP用来调用sendmail二进制文件的命令行中。但是它将通过函数escapeshellcmd($additional_parameters)进行清理。

攻击者可以在这种情况下为sendmail注入额外的参数

/usr/sbin/sendmail实现的差异

sendmail接口是由系统上安装的MTA电子邮件软件Sendmail、Postfix、Exim等提供。尽管基本功能(如-t -i -f参数出于兼容性原因保持不变其他功能和参数则根据安装的MTA有很大差异。

以下是不同sendmail命令/接口手册页的一些示例:

根据sendmail二进制文件的来源,已经发现了不同的选项来滥用它们并泄露文件甚至执行任意命令。查看方法请访问https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html

在电子邮件名称中注入

被忽略的电子邮件部分

符号:+、-{} 在极少数情况下可用于标记,并被大多数电子邮件服务器忽略

括号()中的注释在开头或结尾也会被忽略

白名单绕过

引号

IP地址

您也可以使用方括号中的IP作为域名

  • john.doe@[127.0.0.1]
  • john.doe@[IPv6:2001:db8::1]

其他漏洞

第三方SSO

XSS

一些服务,如githubsalesforce允许您创建包含XSS有效载荷的电子邮件地址。如果您可以使用这些提供商登录其他服务,并且这些服务没有正确清理电子邮件,您可能会导致XSS

账户接管

如果一个SSO服务允许您在不验证给定电子邮件地址的情况下创建账户(如salesforce),然后您可以使用该账户登录不同的服务,该服务信任salesforce您可以访问任何账户。
请注意salesforce会指示给定的电子邮件是否已验证因此应用程序应考虑此信息。

回复至

您可以使用 发件人: company.com回复至: attacker.com 发送电子邮件,如果由于电子邮件是来自一个内部地址而发送了自动回复攻击者可能能够接收到那个回应

硬退信率

一些应用程序如AWS有一个硬退信率在AWS中为10%),一旦超载,电子邮件服务将被阻止。

硬退信是由于某些永久原因而无法投递的电子邮件。可能是电子邮件地址是假的,可能是电子邮件域不是一个真实的域,或者可能是电子邮件收件人的服务器不接受电子邮件这意味着在1000封电子邮件中如果有100封是假的或无效的导致所有邮件退回AWS SES将阻止您的服务。

因此,如果您能够发送邮件可能是邀请从Web应用程序到任何电子邮件地址您可以通过向不存在的用户和域发送数百封邀请来引发此阻塞电子邮件服务DoS。

参考资料

通过 htARTE (HackTricks AWS Red Team Expert)从零到英雄学习AWS黑客攻击

支持HackTricks的其他方式


使用 Trickest 轻松构建并自动化工作流程,由世界上最先进的社区工具提供支持。
立即获取访问权限:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}