Unicode Injection
Last updated
Last updated
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Je nachdem, wie das Backend/Frontend reagiert, wenn es seltsame Unicode-Zeichen erhält, könnte ein Angreifer in der Lage sein, Schutzmaßnahmen zu umgehen und beliebige Zeichen einzufügen, die verwendet werden könnten, um Injection-Schwachstellen wie XSS oder SQLi auszunutzen.
Die Unicode-Normalisierung erfolgt, 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 irgendwie modifiziert. Zum Beispiel könnte in einigen Sprachen ein einfacher Aufruf, um die Eingabe in Groß- oder Kleinbuchstaben zu konvertieren, die gegebene Eingabe normalisieren und die Unicode wird in ASCII umgewandelt, wodurch neue Zeichen entstehen. Für weitere Informationen siehe:
Unicode Normalization\u
zu %
Unicode-Zeichen werden normalerweise mit dem \u
-Präfix dargestellt. Zum Beispiel ist das Zeichen 㱋
\u3c4b
(hier überprüfen). Wenn ein Backend das Präfix \u
in %
umwandelt, wird die resultierende Zeichenkette %3c4b
sein, die URL-dekodiert ist: <4b
. Und, wie du sehen kannst, wird ein <
-Zeichen injiziert.
Du könntest diese Technik verwenden, um beliebige Zeichen einzufügen, wenn das Backend anfällig ist.
Überprüfe 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
Backends verhalten sich manchmal seltsam, wenn sie Emojis erhalten. Das ist, was in diesem Bericht passiert ist, wo der Forscher es geschafft hat, ein XSS mit einem Payload wie: 💋img src=x onerror=alert(document.domain)//💛
zu erreichen.
In diesem Fall war der Fehler, dass der Server nach dem Entfernen der bösartigen Zeichen die UTF-8-Zeichenkette von Windows-1252 nach UTF-8 umwandelte (grundsätzlich stimmte die Eingabecodierung und die Umwandlung von Codierungen nicht überein). Dadurch wird kein richtiges < erzeugt, sondern nur ein seltsames Unicode-Zeichen: ‹
``Also nahmen sie diese Ausgabe und konvertierten sie erneut von UTF-8 nach ASCII. Dies normalisierte das ‹
zu <
, so konnte der Exploit auf diesem System funktionieren.
Das ist, was passiert ist:
Emoji-Listen:
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)