mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 22:52:06 +00:00
152 lines
9.8 KiB
Markdown
152 lines
9.8 KiB
Markdown
# Normalizacija Unikoda
|
|
|
|
<details>
|
|
|
|
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
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**](https://github.com/sponsors/carlospolop)!
|
|
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
|
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
|
* **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)**.**
|
|
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
|
|
|
</details>
|
|
|
|
### [WhiteIntel](https://whiteintel.io)
|
|
|
|
<figure><img src="/.gitbook/assets/image (1224).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
[**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**.
|
|
|
|
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/**](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](https://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:
|
|
```python
|
|
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](https://appcheck-ng.com/wp-content/uploads/unicode\_normalization.html) i [https://0xacb.com/normalization\_table](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/](<../../.gitbook/assets/image (699).png>)
|
|
|
|
**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/](<../../.gitbook/assets/image (312) (2).png>)
|
|
|
|
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/](<../../.gitbook/assets/image (215) (1) (1).png>)
|
|
|
|
### 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**](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/).
|
|
|
|
## Reference
|
|
|
|
* [**https://labs.spotify.com/2013/06/18/creative-usernames/**](https://labs.spotify.com/2013/06/18/creative-usernames/)
|
|
* [**https://security.stackexchange.com/questions/48879/why-does-directory-traversal-attack-c0af-work**](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**](https://jlajara.gitlab.io/posts/2020/02/19/Bypass\_WAF\_Unicode.html)
|
|
|
|
### [WhiteIntel](https://whiteintel.io)
|
|
|
|
<figure><img src="/.gitbook/assets/image (1224).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
[**WhiteIntel**](https://whiteintel.io) 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" %}
|
|
|
|
<details>
|
|
|
|
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
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**](https://github.com/sponsors/carlospolop)!
|
|
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
|
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
|
|
* **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)**.**
|
|
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
|
|
|
|
</details>
|