Unicode Injection

Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Einführung

Je nachdem, wie sich das Back-End/Front-End verhält, wenn es seltsame Unicode-Zeichen empfängt, kann ein Angreifer möglicherweise Schutzmaßnahmen umgehen und beliebige Zeichen einschleusen, die zur Ausnutzung von Injektionslücken wie XSS oder SQLi verwendet werden könnten.

Unicode-Normalisierung

Die Unicode-Normalisierung tritt auf, wenn Unicode-Zeichen in ASCII-Zeichen normalisiert werden.

Ein häufiges Szenario dieser Art von Schwachstelle tritt auf, wenn das System die Eingabe des Benutzers nach der Überprüfung auf irgendeine Weise modifiziert. Zum Beispiel könnte in einigen Sprachen ein einfacher Aufruf zum Ändern der Eingabe in Groß- oder Kleinschreibung die gegebene Eingabe normalisieren und das Unicode in ASCII umwandeln, wodurch neue Zeichen generiert werden. Weitere Informationen finden Sie unter:

pageUnicode Normalization

\u zu %

Unicode-Zeichen werden normalerweise mit dem Präfix \u dargestellt. Zum Beispiel ist das Zeichen \u3c4b (hier überprüfen). Wenn ein Backend das Präfix \u in % umwandelt, wird der resultierende String %3c4b sein, der URL-decodiert <4b ist. Und, wie Sie sehen können, wird ein <-Zeichen eingeschleust. Sie können diese Technik verwenden, um beliebige Zeichen einzuschleusen, wenn das Backend anfällig ist. Überprüfen Sie https://unicode-explorer.com/, um die benötigten Zeichen zu finden.

Diese Schwachstelle stammt tatsächlich von einer Schwachstelle, die ein Forscher gefunden hat. Für eine detailliertere Erklärung siehe https://www.youtube.com/watch?v=aUsAHb0E7Cg

Emoji-Injektion

Back-Ends verhalten sich manchmal seltsam, wenn sie Emojis empfangen. Das ist in diesem Write-up passiert, wo es dem Forscher gelungen ist, XSS mit einer Payload wie 💋img src=x onerror=alert(document.domain)//💛 zu erreichen.

In diesem Fall lag der Fehler darin, dass der Server nach Entfernen der bösartigen Zeichen die UTF-8-Zeichenfolge von Windows-1252 in UTF-8 konvertiert hat (im Grunde genommen stimmten die Eingabe-Codierung und die Konvertierungscodierung nicht überein). Dann wird kein ordnungsgemäßes <, sondern ein seltsames Unicode-Zeichen erzeugt: ``Dann haben sie diese Ausgabe genommen und noch einmal von UTF-8 in ASCII konvertiert. Dadurch wurde das in < normalisiert, und so konnte der Exploit auf diesem System funktionieren. Das ist passiert:

<?php

$str = isset($_GET["str"]) ? htmlspecialchars($_GET["str"]) : "";

$str = iconv("Windows-1252", "UTF-8", $str);
$str = iconv("UTF-8", "ASCII//TRANSLIT", $str);

echo "String: " . $str;

Emoji-Listen:

Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated