5.1 KiB
Unicode Injection
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Introduction
U zavisnosti od toga kako se back-end/front-end ponaša kada primi čudne unicode karaktere, napadač bi mogao da obiđe zaštite i ubrizga proizvoljne karaktere koji bi mogli biti korišćeni za iskorišćavanje ranjivosti injekcije kao što su XSS ili SQLi.
Unicode Normalization
Unicode normalizacija se dešava kada se unicode karakteri normalizuju u ascii karaktere.
Jedan uobičajen scenario ove vrste ranjivosti se dešava kada sistem menja na neki način ulaz korisnika nakon što ga je proverio. Na primer, u nekim jezicima jednostavan poziv za pravljenje ulaza velikim ili malim slovima mogao bi normalizovati dati ulaz i unicode će biti transformisan u ASCII generišući nove karaktere.
Za više informacija pogledajte:
{% content-ref url="unicode-normalization.md" %} unicode-normalization.md {% endcontent-ref %}
\u
to %
Unicode karakteri se obično predstavljaju sa \u
prefiksom. Na primer, karakter 㱋
je \u3c4b
(proverite ovde). Ako backend transformiše prefiks \u
u %
, rezultantni string će biti %3c4b
, što URL dekodirano daje: <4b
. I, kao što možete videti, karakter <
je ubrizgan.
Možete koristiti ovu tehniku da ubrizgate bilo koji tip karaktera ako je backend ranjiv.
Pogledajte https://unicode-explorer.com/ da pronađete potrebne karaktere.
Ova ranjivost zapravo dolazi iz ranjivosti koju je istraživač pronašao, za dublje objašnjenje pogledajte https://www.youtube.com/watch?v=aUsAHb0E7Cg
Emoji Injection
Back-endovi se čudno ponašaju kada primi emojije. To se desilo u ovoj analizi 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 da je server nakon uklanjanja zlonamernih karaktera konvertovao UTF-8 string iz Windows-1252 u UTF-8 (osnovno, kodiranje ulaza i konverzija kodiranja su se neslagali). Tada ovo ne daje pravi < već samo čudan unicode: ‹
``Tako su uzeli ovaj izlaz i ponovo konvertovali sada iz UTF-8 u ASCII. Ovo je normalizovalo ‹
u <
tako da je ovako eksploatacija mogla da funkcioniše na tom sistemu.
To je ono što 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;
Emoji liste:
- https://github.com/iorch/jakaton_feminicidios/blob/master/data/emojis.csv
- https://unicode.org/emoji/charts-14.0/full-emoji-list.html
{% hint style="success" %}
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.