.. | ||
README.md | ||
unicode-normalization.md |
Wstrzykiwanie znaków Unicode
Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLAN SUBSKRYPCJI!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud github repos.
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ź:
{% content-ref url="unicode-normalization.md" %} unicode-normalization.md {% endcontent-ref %}
\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:
- https://github.com/iorch/jakaton_feminicidios/blob/master/data/emojis.csv
- https://unicode.org/emoji/charts-14.0/full-emoji-list.html
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLAN SUBSKRYPCJI!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.