Unicode Injection

Support HackTricks

Introduction

Afhangende 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 nagegaan is. 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:

Unicode Normalization

\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 gedekodeer is: <4b. En, soos jy kan sien, is 'n < karakter ingespuit. Jy kan hierdie tegniek gebruik om enige soort 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 iets 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 omgeskakel van UTF-8 na ASCII. Dit het die genormaliseer na < en 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:

Ondersteun HackTricks

Last updated