Unicode Injection

Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Wprowadzenie

W zależności od zachowania serwera back-endowego/front-endowego w przypadku, gdy otrzymuje on dziwne znaki Unicode, atakujący może być w stanie obejść zabezpieczenia i wstrzyknąć dowolne znaki, które mogą być wykorzystane do wykorzystania podatności na wstrzykiwanie, takie jak XSS lub SQLi.

Normalizacja Unicode

Normalizacja Unicode występuje, gdy znaki Unicode są normalizowane do znaków ASCII.

Jednym z powszechnych scenariuszy tego rodzaju podatności jest sytuacja, gdy system modyfikuje w jakiś sposób wejście użytkownika po jego sprawdzeniu. Na przykład, w niektórych językach, proste wywołanie zmiany wielkości liter wejścia może spowodować normalizację podanego wejścia, a znaki Unicode zostaną przekształcone na ASCII, generując nowe znaki. Aby uzyskać więcej informacji, sprawdź:

pageUnicode Normalization

\u na %

Znaki Unicode zwykle są reprezentowane za pomocą prefiksu \u. Na przykład znak to \u3c4b (sprawdź tutaj). Jeśli serwer zmienia prefiks \u na %, wynikowy ciąg będzie %3c4b, który po dekodowaniu URL to: <4b. Jak widać, zostaje wstrzyknięty znak <. Możesz użyć tej techniki do wstrzykiwania dowolnego rodzaju znaków, jeśli serwer jest podatny. Sprawdź https://unicode-explorer.com/, aby znaleźć potrzebne znaki.

Ta podatność faktycznie wynika z podatności, którą odkrył badacz. Aby uzyskać bardziej szczegółowe wyjaśnienie, sprawdź https://www.youtube.com/watch?v=aUsAHb0E7Cg

Wstrzykiwanie emoji

Serwery back-endowe czasami zachowują się dziwnie, gdy otrzymują emoji. Tak właśnie stało się w tym opisie, gdzie badaczowi udało się osiągnąć XSS za pomocą payloadu takiego jak: 💋img src=x onerror=alert(document.domain)//💛

W tym przypadku błąd polegał na tym, że serwer po usunięciu szkodliwych znaków przekonwertował ciąg UTF-8 z Windows-1252 na UTF-8 (w zasadzie kodowanie wejściowe i konwersja z kodowania były niezgodne). W rezultacie nie otrzymujemy prawidłowego znaku <, a dziwny znak Unicode: ``Następnie ten wynik został ponownie przekonwertowany z UTF-8 na ASCII. To spowodowało normalizację na <, dzięki czemu exploit mógł działać w tym systemie. Oto, co się stało:

<?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;

Listy emoji:

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated