Email Injections
Last updated
Last updated
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:
Die Nachricht wird an die Konten des Empfängers und des Empfängers1 gesendet.
Die Nachricht wird an den ursprünglichen Empfänger und das Angreifer-Konto gesendet.
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.
Injizieren Sie einen Zeilenumbruch, und schreiben Sie dann Ihre Nachricht, um den Text der Nachricht zu ändern.
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.
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 zu missbrauchen 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
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.
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
Sie können auch IPs als Domainnamen in eckigen Klammern verwenden:
john.doe@[127.0.0.1]
john.doe@[IPv6:2001:db8::1]
Wie in dieser Forschung erklärt, können E-Mail-Namen auch codierte Zeichen enthalten:
PHP 256 Überlauf: Die PHP-Funktion chr
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:
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.
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
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.
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. &#xNAN;Note, dass salesforce angibt, ob die angegebene E-Mail verifiziert wurde oder nicht, aber die Anwendung sollte diese Informationen berücksichtigen.
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.
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-Service 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.
Verwende Trickest, um einfach Workflows zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden. Erhalte heute Zugang:
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)