Unicode Injection

Support HackTricks

Introduction

Kulingana na jinsi back-end/front-end inavyofanya kazi wakati in pata wahusika wa unicode wa ajabu, mshambuliaji anaweza kupita ulinzi na kuingiza wahusika wa kiholela ambao wanaweza kutumika kudhulumu udhaifu wa kuingiza kama XSS au SQLi.

Unicode Normalization

Unicode normalization inatokea wakati wahusika wa unicode wanapohaririwa kuwa wahusika wa ascii.

Moja ya hali ya kawaida ya aina hii ya udhaifu inatokea wakati mfumo unafanya mabadiliko kwa namna fulani kwenye ingizo la mtumiaji baada ya kulikagua. Kwa mfano, katika lugha zingine, simu rahisi ya kufanya ingizo kuwa kubwa au dogo inaweza kuhariri ingizo lililotolewa na unicode itabadilishwa kuwa ASCII ikizalisha wahusika wapya. Kwa maelezo zaidi angalia:

Unicode Normalization

\u to %

Wahusika wa unicode mara nyingi huwakilishwa na \u prefix. Kwa mfano, wahusika ni \u3c4b(angalia hapa). Ikiwa back-end inabadilisha prefix \u kuwa %, string inayotokana itakuwa %3c4b, ambayo imefutwa URL ni: <4b. Na, kama unavyoona, wahusika < wanaingizwa. Unaweza kutumia mbinu hii ku ingiza aina yoyote ya wahusika ikiwa back-end ina udhaifu. Angalia https://unicode-explorer.com/ kupata wahusika unahitaji.

Udhaifu huu kwa kweli unatokana na udhaifu ambao mtafiti alipata, kwa maelezo zaidi angalia https://www.youtube.com/watch?v=aUsAHb0E7Cg

Emoji Injection

Back-ends fulani hufanya kazi kwa njia ya ajabu wanap pokea emojis. Hivyo ndivyo ilivyotokea katika hii ripoti ambapo mtafiti alifanikiwa kupata XSS kwa payload kama: 💋img src=x onerror=alert(document.domain)//💛

Katika kesi hii, kosa lilikuwa kwamba server baada ya kuondoa wahusika wabaya ilibadilisha string ya UTF-8 kutoka Windows-1252 hadi UTF-8 (kimsingi uandishi wa ingizo na kubadilisha kutoka uandishi vilikuwa tofauti). Kisha hii haisababishi < sahihi bali unicode ya ajabu: ``Hivyo walichukua matokeo haya na kugeuza tena sasa kutoka UTF-8 hadi ASCII. Hii ilihariri kuwa < hii ndiyo jinsi exploit ilivyoweza kufanya kazi kwenye mfumo huo. Hii ndiyo ilivyotokea:

<?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 orodha:

Support HackTricks

Last updated