Unicode Injection

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Uvod

Zavisno o tome kako se bek-end/front-end ponaša kada prima čudne unicode karaktere, napadač može biti u mogućnosti da zaobiđe zaštitu i ubaci proizvoljne karaktere koji mogu biti korišćeni za zloupotrebu ranjivosti ubacivanja kao što su XSS ili SQLi.

Unicode normalizacija

Unicode normalizacija se dešava kada se unicode karakteri normalizuju u ASCII karaktere.

Jedan uobičajeni scenario ovog tipa ranjivosti se javlja kada sistem modifikuje unos korisnika nakon što ga je proverio. Na primer, u nekim jezicima jednostavan poziv za pretvaranje unosa u velika ili mala slova može normalizovati dati unos i unicode će biti transformisan u ASCII generišući nove karaktere. Za više informacija pogledajte:

pageUnicode Normalization

\u u %

Unicode karakteri se obično predstavljaju sa prefiksom \u. Na primer, karakter je \u3c4b(proverite ovde). Ako bek-end transformiše prefiks \u u %, rezultujući string će biti %3c4b, koji dekodiran URL-om je: <4b. I, kao što možete videti, ubacuje se karakter <. Možete koristiti ovu tehniku da ubacite bilo koji karakter ako je bek-end ranjiv. Proverite https://unicode-explorer.com/ da biste pronašli karaktere koje vam trebaju.

Ova ranjivost zapravo potiče od ranjivosti koju je pronašao istraživač, za detaljnije objašnjenje pogledajte https://www.youtube.com/watch?v=aUsAHb0E7Cg

Ubacivanje emodžija

Bek-endovi ponekad se čudno ponašaju kada prima emodžije. To se desilo u ovom writeup-u gde je istraživač uspeo da postigne XSS sa payload-om kao što je: 💋img src=x onerror=alert(document.domain)//💛

U ovom slučaju, greška je bila u tome što je server nakon uklanjanja zlonamernih karaktera pretvorio UTF-8 string iz Windows-1252 u UTF-8 (u osnovi, kodiranje unosa i konverzija iz kodiranja nisu se poklapali). Zatim, umesto pravilnog < dobijen je čudan unicode karakter: ``Tako su uzeli ovaj izlaz i ponovo pretvorili sada iz UTF-8 u ASCII. Ovo je normalizovalo u < i tako je eksploit mogao da funkcioniše na tom sistemu. Ovo se desilo:

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

Lista emoji-ja:

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Last updated