Unicode Injection
Reading time: 3 minutes
tip
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Introduction
Afhangend van hoe die back-end/front-end optree wanneer dit weird unicode karakters ontvang, mag 'n aanvaller in staat wees om beskermings te omseil en arbitrêre karakters in te spuit wat gebruik kan word om inspuitingskwesbaarhede te misbruik soos XSS of SQLi.
Unicode Normalization
Unicode normalisering vind plaas wanneer unicode karakters genormaliseer word na ascii karakters.
Een algemene scenario van hierdie tipe kwesbaarheid gebeur wanneer die stelsel die invoer van die gebruiker op 'n of ander manier aanpas nadat dit dit nagegaan het. Byvoorbeeld, in sommige tale kan 'n eenvoudige oproep om die invoer hoofletters of kleinletters te maak die gegewe invoer normaliseer en die unicode sal in ASCII omgeskakel word, wat nuwe karakters genereer.
Vir meer inligting, kyk:
\u
na %
Unicode karakters word gewoonlik verteenwoordig met die \u
voorvoegsel. Byvoorbeeld, die karakter 㱋
is \u3c4b
(kyk dit hier). As 'n backend die voorvoegsel \u
in %
omskakel, sal die resulterende string %3c4b
wees, wat URL-dekodeer is: <4b
. En, soos jy kan sien, is 'n <
karakter ingespuit.
Jy kan hierdie tegniek gebruik om enige tipe karakter in te spuit as die backend kwesbaar is.
Kyk https://unicode-explorer.com/ om die karakters te vind wat jy nodig het.
Hierdie kwesbaarheid kom eintlik van 'n kwesbaarheid wat 'n navorser gevind het, vir 'n meer diepgaande verduideliking, kyk https://www.youtube.com/watch?v=aUsAHb0E7Cg
Emoji Injection
Back-ends gedra soms vreemd wanneer hulle emojis ontvang. Dit is wat gebeur het in hierdie skrywe waar die navorser daarin geslaag het om 'n XSS te bereik met 'n payload soos: 💋img src=x onerror=alert(document.domain)//💛
In hierdie geval was die fout dat die bediener, nadat dit die kwaadwillige karakters verwyder het, die UTF-8 string van Windows-1252 na UTF-8 omgeskakel het (basies het die invoer kodering en die omskakeling van kodering nie ooreengestem nie). Dan gee dit nie 'n behoorlike < nie, net 'n vreemde unicode een: ‹
``So het hulle hierdie uitvoer geneem en weer van UTF-8 na ASCII omgeskakel. Dit het die ‹
na <
genormaliseer, dit is hoe die eksploit op daardie stelsel kon werk.
Dit is wat gebeur het:
<?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;
Emoji lys:
- https://github.com/iorch/jakaton_feminicidios/blob/master/data/emojis.csv
- https://unicode.org/emoji/charts-14.0/full-emoji-list.html
tip
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.