HTML-Einfügung in eine E-Mail-Vorlage

Jan 09 2023
E-Mails im Namen eines Unternehmens versenden? So habe ich diese Schwachstelle in mehreren großen Unternehmen gefunden, die es mir ermöglicht, auf einfache Weise Prämien zu verdienen. Hallo Jäger.
Kredit: Pinterest

E-Mails im Namen eines Unternehmens versenden? So habe ich diese Schwachstelle in mehreren großen Unternehmen gefunden, die es mir ermöglicht, auf einfache Weise Prämien zu verdienen.

Hallo Jäger . Das Ziel hier ist es, E-Mails im Namen eines Unternehmens zu versenden – von seiner E-Mail-Adresse – mit der Möglichkeit, den Inhalt und damit die HTML-Vorlage zu ändern/anzupassen .

Welche Auswirkungen hat eine solche Schwachstelle?

Die Auswirkungen dieser Schwachstelle können erheblich sein, ein Angreifer würde das Vertrauen der Benutzer in die Plattform ausnutzen, um sie auf betrügerische Websites (Phishing usw.) umzuleiten oder sie sogar dazu zu drängen, unerwünschte Aktionen von ihren Konten aus durchzuführen. Programme schätzen den Schweregrad dieser Schwachstelle im Allgemeinen zwischen niedrig und mittel ein .

Wie funktioniert es?

HTML-Injektion ist eine Schwachstelle, bei der eine Anwendung Benutzereingaben akzeptiert und die Eingabe dann in HTML einbettet. Ein Angreifer kann HTML aus Benutzereingaben einfügen, sodass sein bösartiger Code in die von der Anwendung generierte Gesamtvorlage eingebettet wird.

Dies ist auf eine unzureichende Bereinigung von Benutzereingaben zurückzuführen. Es ist sehr einfach zu beheben, bleibt aber sehr oft unter dem Radar – insbesondere dieser Angriffsvektor – zur Freude von Bug-Jägern.

Die berühmte goldene Regel für Entwickler: Vertraue niemals Benutzereingaben

Identifizierung verschiedener Angriffsvektoren und Ausnutzung

Das erste, was Sie tun müssen, um diese Schwachstelle zu identifizieren, ist, eine Funktion in der Anwendung zu finden, die E-Mails sendet: Die meisten Anwendungen haben einen Abschnitt „Kontakt“ oder einen Abschnitt „Hilfe“, um Anfragen an die Teams des Unternehmens zu senden. Diese Funktionen sind die grundlegendsten, und die Liste ist nicht vollständig. Je nach Art der Anwendung können verschiedene Funktionen zum Senden von E-Mails gefunden werden.

Sobald diese Funktionalitäten gefunden wurden, müssen sie getestet und auf das Vorhandensein mehrerer Kriterien überprüft werden :

Wir nehmen das Beispiel eines Formulars, das es ermöglicht, eine Anfrage (Bitte um Hilfe) an das technische Personal des Unternehmens zu senden

[1] Erhalte ich beim Absenden des Formulars eine E-Mail (an die im Formular angegebene E-Mail-Adresse oder an die E-Mail-Adresse, die mit dem Konto verknüpft ist, von dem die Anfrage gesendet wurde)?

Wenn nicht – stellen Sie sicher, dass dies einige Zeit dauern kann – dann müssen Sie nicht weiter suchen. Bevor Sie hoffen, Code in eine Vorlage einzufügen, muss die betreffende Vorlage noch vorhanden sein.

[2] Wenn ich beim Absenden des Formulars eine E-Mail erhalte, ist es möglich, eine beliebige E-Mail-Adresse im Formular/in der Anfrage anzugeben?

Um die Sicherheitsanfälligkeit auszunutzen, muss ich in der Lage sein, andere Personen anzusprechen, sodass ich entweder mit dem betreffenden Formular die E-Mail-Adresse meiner Wahl angeben kann, oder ich muss verbunden sein, um das Formular zu senden, und daher wird die E-Mail automatisch an gesendet Die E-Mail-Adresse bindet an das verbundene Konto:

Fangen Sie in diesem Fall die Anfrage in Ihrem bevorzugten Proxy ab und überprüfen Sie, ob Ihre E-Mail-Adresse nicht in der HTTP-Anfrage (im Prinzip POST) enthalten ist, und versuchen Sie, sie in die E-Mail-Adresse Ihrer Wahl zu ändern.

[3] Werden einige der im Formular bereitgestellten Informationen in der erhaltenen E-Mail wiedergegeben?

Beispiel einer E-Mail mit den im Formular eingegebenen Werten

Wenn dies nicht der Fall ist, überprüfen Sie, ob einige Ihrer persönlichen Daten – falls Sie mit Ihrem Konto verbunden sind – in der E-Mail enthalten sind, wie beispielsweise Benutzername, Nachname oder Vorname.

Ändern Sie in diesem Fall die angezeigte(n) Information(en) und versuchen Sie dort Ihre Payload einzugeben. Auch wenn die fraglichen Informationen nicht in der Anwendung interpretiert werden, können sie in der E-Mail interpretiert werden , dies wird als Injektion zweiter Ordnung bezeichnet, die Injektion erfolgt nicht direkt aus den Benutzereingaben des Formulars, sondern aus an anderer Stelle aufgezeichneten Informationen , zum Beispiel auf dem Konto.

Wenn nicht, können wir nicht versuchen, Code einzufügen oder sogar einen Filter zu umgehen.

[4] Der letzte Schritt besteht darin, zu versuchen, HTML-Code einzufügen, der von der betreffenden Vorlage interpretiert wird

Wie bereits erwähnt, wird diese Art von Schwachstelle oft unter den Radar gebracht, und einige Anwendungen haben weder Front-End- noch Back-End-Seitenfilter und eine einfache Payload einschließlich HTML-Code reicht aus:

vul<strong>ne</strong>rable

Manchmal haben sich Entwickler auf Front-End-Filter konzentriert, die es unmöglich machen, Formulare mit Sonderzeichen zu senden: Hören Sie hier nicht auf , senden Sie das Formular mit zufälligen Werten, fangen Sie die Anfrage in Ihrem Proxy ab und geben Sie dann Ihre Payloads direkt vom Proxy ein. Dadurch werden alle Schutzvorrichtungen der Front gesprengt, die manchmal die letzte Bastion gegenüber dem Kopfgeld sind. Wenn auch auf der Rückseite Schutz vorhanden ist, geben Sie in den ersten Minuten nicht auf, versuchen Sie, die Filter zu umgehen, die Methodik hier ist die gleiche wie bei XSS-Schwachstellen.

Haben Sie Probleme, einen Filter für einen bestimmten Charakter zu umgehen? Schauen Sie sich an:https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/XSS%20Injection/README.md

Dies war mein erster Bericht, danke fürs Lesen. Wenn Sie Fragen haben, lassen Sie es mich wissen.

Mein Twitter-Account:https://twitter.com/blank_cold