Unicode Injection
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 %
\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:
Lista emoji-ja:
Last updated