<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJAVU**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
[**WhiteIntel**](https://whiteintel.io) je pretraživač pokretan **dark-web**-om koji nudi **besplatne** funkcionalnosti za proveru da li je kompanija ili njeni korisnici **kompromitovani** od strane **malvera za krađu podataka**.
**Ovo je sažetak:** [**https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/**](https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/). Pogledajte za dalje detalje (slike preuzete sa te lokacije).
Unicode normalizacija je proces koji osigurava da različite binarne reprezentacije karaktera budu standardizovane na istu binarnu vrednost. Ovaj proces je ključan prilikom rukovanja stringovima u programiranju i obradi podataka. Unicode standard definiše dva tipa ekvivalencije karaktera:
1.**Kanonska ekvivalencija**: Karakteri se smatraju kanonski ekvivalentnim ako imaju isti izgled i značenje kada se štampaju ili prikazuju.
2.**Kompatibilna ekvivalencija**: Slabija forma ekvivalencije gde karakteri mogu predstavljati isti apstraktni karakter ali se mogu prikazivati na različite načine.
Postoje **četiri algoritma Unicode normalizacije**: NFC, NFD, NFKC i NFKD. Svaki algoritam koristi kanonske i kompatibilne tehnike normalizacije na različite načine. Za detaljnije razumevanje, možete istražiti ove tehnike na [Unicode.org](https://unicode.org/).
Razumevanje kodiranja Unicode-a je ključno, posebno prilikom rukovanja pitanjima interoperabilnosti među različitim sistemima ili jezicima. Evo glavnih tačaka:
* **Kodne Tačke i Karakteri**: U Unicode-u, svakom karakteru ili simbolu je dodeljena numerička vrednost poznata kao "kodna tačka".
* **Reprezentacija Bajtova**: Kodna tačka (ili karakter) je predstavljena jednim ili više bajtova u memoriji. Na primer, LATIN-1 karakteri (uobičajeni u zemljama engleskog govornog područja) se predstavljaju koristeći jedan bajt. Međutim, jezici sa većim skupom karaktera zahtevaju više bajtova za reprezentaciju.
* **Kodiranje**: Ovaj termin se odnosi na to kako se karakteri transformišu u niz bajtova. UTF-8 je rasprostranjeni standard kodiranja gde se ASCII karakteri predstavljaju koristeći jedan bajt, a do četiri bajta za ostale karaktere.
* **Obrada Podataka**: Sistemi koji obrađuju podatke moraju biti svesni korišćenog kodiranja kako bi ispravno konvertovali niz bajtova u karaktere.
* **Varijante UTF**: Pored UTF-8, postoje i drugi standardi kodiranja poput UTF-16 (koristi minimalno 2 bajta, do 4) i UTF-32 (koristi 4 bajta za sve karaktere).
Važno je razumeti ove koncepte kako bi se efikasno rukovalo i umanjile potencijalne probleme koji proizilaze iz kompleksnosti Unicode-a i njegovih različitih metoda kodiranja.
**Lista ekvivalentnih Unicode karaktera može se pronaći ovde:** [https://appcheck-ng.com/wp-content/uploads/unicode\_normalization.html](https://appcheck-ng.com/wp-content/uploads/unicode\_normalization.html) i [https://0xacb.com/normalization\_table](https://0xacb.com/normalization\_table)
Ako pronađete vrednost unutar veb aplikacije koja se vraća, možete pokušati poslati **'KELVIN SIGN' (U+0212A)** koji se **normalizuje u "K"** (možete ga poslati kao `%e2%84%aa`). **Ako se "K" vrati nazad**, tada se vrši neka vrsta **Unicode normalizacije**.
Drugi **primer**: `%F0%9D%95%83%E2%85%87%F0%9D%99%A4%F0%9D%93%83%E2%85%88%F0%9D%94%B0%F0%9D%94%A5%F0%9D%99%96%F0%9D%93%83` nakon **unicode** postaje `Leonishan`.
Zamislite veb stranicu koja koristi karakter `'` za kreiranje SQL upita sa korisničkim unosom. Ova veb stranica, kao sigurnosna mera, **briše** sve pojave karaktera **`'`** iz korisničkog unosa, ali **nakon te brisanja** i **pre kreiranja** upita, **normalizuje** korisnički unos pomoću **Unicode-a**.
Zatim, zlonamerni korisnik može ubaciti drugačiji Unicode karakter ekvivalentan sa `' (0x27)` poput `%ef%bc%87`, kada se unos normalizuje, kreiran je jednostruki navod i pojavljuje se **SQLInjection ranjivost**:
Kada backend **proverava korisnički unos sa regexom**, moguće je da se **unos****normalizuje** za **regex** ali ne i za mesto gde se **koristi**. Na primer, u slučaju otvorenog preusmeravanja ili SSRF-a, regex može **normalizovati poslati URL** ali se zatim **pristupa njemu onakvom kakav je**.
Alatka [**recollapse**](https://github.com/0xacb/recollapse) omogućava **generisanje varijacija unosa** za fuzzing backend-a. Za više informacija pogledajte **github** i ovaj [**post**](https://0xacb.com/2022/11/21/recollapse/).
[**WhiteIntel**](https://whiteintel.io) je pretraživač pokrenut na dark web-u koji nudi **besplatne** funkcionalnosti za proveru da li su kompanija ili njeni korisnici **pogođeni** od strane **malvera koji krade informacije**.
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**