hacktricks/pentesting-web/unicode-injection/unicode-normalization.md

9.8 KiB

Normalizacija Unikoda

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

WhiteIntel

WhiteIntel 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.

Primarni cilj WhiteIntela je borba protiv preuzimanja naloga i napada ransomware-a koji proizilaze iz malvera za krađu informacija.

Možete posetiti njihovu veb lokaciju i isprobati njihovu mašinu besplatno na:

{% embed url="https://whiteintel.io" %}


Ovo je sažetak: https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/. Pogledajte za dalje detalje (slike preuzete sa te lokacije).

Razumevanje Unikoda i Normalizacije

Normalizacija Unikoda je proces koji osigurava da različite binarne reprezentacije karaktera budu standardizovane na istu binarnu vrednost. Ovaj proces je ključan u radu sa stringovima u programiranju i obradi podataka. Unikod 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 normalizacije Unikoda: NFC, NFD, NFKC i NFKD. Svaki algoritam koristi kanonske i kompatibilne tehnike normalizacije na različite načine. Za dublje razumevanje, možete istražiti ove tehnike na Unicode.org.

Ključne Tačke o Kodiranju Unikoda

Razumevanje kodiranja Unikoda je ključno, posebno kada se bave pitanjima interoperabilnosti među različitim sistemima ili jezicima. Evo glavnih tačaka:

  • Kodne Tačke i Karakteri: U Unikodu, 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 engleskim govornim zemljama) 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 Unikoda i njegovih različitih metoda kodiranja.

Primer kako Unikod normalizuje dva različita bajta koji predstavljaju isti karakter:

unicodedata.normalize("NFKD","chloe\u0301") == unicodedata.normalize("NFKD", "chlo\u00e9")

Lista ekvivalentnih Unicode karaktera može se pronaći ovde: https://appcheck-ng.com/wp-content/uploads/unicode_normalization.html i https://0xacb.com/normalization_table

Otkrivanje

Ako pronađete vrednost unutar web aplikacije koja se vraća nazad, 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.

Vulnerabilni Primeri

Bypass filtera za SQL Injection

Zamislite web stranicu koja koristi karakter ' za kreiranje SQL upita sa korisničkim unosom. Ova web 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:

https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/

Neki zanimljivi Unicode karakteri

  • o -- %e1%b4%bc
  • r -- %e1%b4%bf
  • 1 -- %c2%b9
  • = -- %e2%81%bc
  • / -- %ef%bc%8f
  • --- %ef%b9%a3
  • #-- %ef%b9%9f
  • *-- %ef%b9%a1
  • ' -- %ef%bc%87
  • " -- %ef%bc%82
  • | -- %ef%bd%9c
' or 1=1-- -
%ef%bc%87+%e1%b4%bc%e1%b4%bf+%c2%b9%e2%81%bc%c2%b9%ef%b9%a3%ef%b9%a3+%ef%b9%a3

" or 1=1-- -
%ef%bc%82+%e1%b4%bc%e1%b4%bf+%c2%b9%e2%81%bc%c2%b9%ef%b9%a3%ef%b9%a3+%ef%b9%a3

' || 1==1//
%ef%bc%87+%ef%bd%9c%ef%bd%9c+%c2%b9%e2%81%bc%e2%81%bc%c2%b9%ef%bc%8f%ef%bc%8f

" || 1==1//
%ef%bc%82+%ef%bd%9c%ef%bd%9c+%c2%b9%e2%81%bc%e2%81%bc%c2%b9%ef%bc%8f%ef%bc%8f

sqlmap šablon

{% embed url="https://github.com/carlospolop/sqlmap_to_unicode_template" %}

XSS (Cross Site Scripting)

Možete koristiti jedan od sledećih karaktera da prevarite web aplikaciju i iskoristite XSS:

https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/

Primetite da na primer prvi Unicode karakter može biti poslat kao: %e2%89%ae ili kao %u226e

https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/

Fuzzing Regexes

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 onda pristupa kao takav.

Alatka recollapse omogućava generisanje varijacija unosa za fuzzing backend-a. Za više informacija pogledajte github i ovaj post.

Reference

WhiteIntel

WhiteIntel je pretraživač na dark vebu koji nudi besplatne funkcionalnosti za proveru da li su kompanija ili njeni korisnici ugroženi od malvera koji krade podatke.

Primarni cilj WhiteIntela je borba protiv preuzimanja naloga i napada ransomware-a koji proizilaze iz malvera koji krade informacije.

Možete posetiti njihovu veb lokaciju i isprobati njihovu mašinu za besplatno na:

{% embed url="https://whiteintel.io" %}

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u: