Unicode Normalization
Tip
AWS ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:HackTricks Training GCP Red Team Expert (GRTE)
Azure ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks μ§μνκΈ°
- ꡬλ κ³ν νμΈνκΈ°!
- **π¬ λμ€μ½λ κ·Έλ£Ή λλ ν λ κ·Έλ¨ κ·Έλ£Ήμ μ°Έμ¬νκ±°λ νΈμν° π¦ @hacktricks_liveλ₯Ό νλ‘μ°νμΈμ.
- HackTricks λ° HackTricks Cloud κΉνλΈ λ¦¬ν¬μ§ν 리μ PRμ μ μΆνμ¬ ν΄νΉ νΈλ¦μ 곡μ νμΈμ.
μ΄ λ΄μ©μ λ€μμ μμ½μ λλ€: https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/. μΆκ° μΈλΆμ 보λ νμΈν΄ 보μΈμ (μ΄λ―Έμ§λ κ±°κΈ°μ κ°μ Έμ¨ κ²μ λλ€).
Understanding Unicode and Normalization
μ λμ½λ μ κ·νλ μλ‘ λ€λ₯Έ λ¬Έμ μ΄μ§ ννμ΄ λμΌν μ΄μ§ κ°μΌλ‘ νμ€νλλλ‘ νλ κ³Όμ μ λλ€. μ΄ κ³Όμ μ νλ‘κ·Έλλ° λ° λ°μ΄ν° μ²λ¦¬μμ λ¬Έμμ΄μ λ€λ£° λ λ§€μ° μ€μν©λλ€. μ λμ½λ νμ€μ λ κ°μ§ μ νμ λ¬Έμ λλ±μ±μ μ μν©λλ€:
- Canonical Equivalence: λ¬Έμκ° μΈμλκ±°λ νμλ λ λμΌν λͺ¨μκ³Ό μλ―Έλ₯Ό κ°μ§λ©΄ μ κ· λλ±ν κ²μΌλ‘ κ°μ£Όλ©λλ€.
- Compatibility Equivalence: λ¬Έμκ° λμΌν μΆμ λ¬Έμλ₯Ό λνλΌ μ μμ§λ§ λ€λ₯΄κ² νμλ μ μλ μ½ν ννμ λλ±μ±μ λλ€.
λ€ κ°μ§ μ λμ½λ μ κ·ν μκ³ λ¦¬μ¦μ΄ μμ΅λλ€: NFC, NFD, NFKC, NFKD. κ° μκ³ λ¦¬μ¦μ μ κ· λ° νΈνμ± μ κ·ν κΈ°μ μ λ€λ₯΄κ² μ μ©ν©λλ€. λ κΉμ΄ μλ μ΄ν΄λ₯Ό μνμλ©΄ Unicode.orgμμ μ΄ κΈ°μ μ νμν μ μμ΅λλ€.
Key Points on Unicode Encoding
μ λμ½λ μΈμ½λ©μ μ΄ν΄νλ κ²μ νΉν μλ‘ λ€λ₯Έ μμ€ν μ΄λ μΈμ΄ κ°μ μνΈ μ΄μ©μ± λ¬Έμ λ₯Ό λ€λ£° λ λ§€μ° μ€μν©λλ€. μ£Όμ μ¬νμ λ€μκ³Ό κ°μ΅λλ€:
- Code Points and Characters: μ λμ½λμμ κ° λ¬Έμ λλ κΈ°νΈλ βμ½λ ν¬μΈνΈβλΌκ³ νλ μ«μ κ°μ΄ ν λΉλ©λλ€.
- Bytes Representation: μ½λ ν¬μΈνΈ(λλ λ¬Έμ)λ λ©λͺ¨λ¦¬μμ νλ μ΄μμ λ°μ΄νΈλ‘ ννλ©λλ€. μλ₯Ό λ€μ΄, LATIN-1 λ¬Έμλ(μμ΄ μ¬μ© κ΅κ°μμ μΌλ°μ ) νλμ λ°μ΄νΈλ₯Ό μ¬μ©νμ¬ ννλ©λλ€. κ·Έλ¬λ λ λ§μ λ¬Έμ μ§ν©μ κ°μ§ μΈμ΄λ ννμ μν΄ λ λ§μ λ°μ΄νΈκ° νμν©λλ€.
- Encoding: μ΄ μ©μ΄λ λ¬Έμκ° μΌλ ¨μ λ°μ΄νΈλ‘ λ³νλλ λ°©μμ λνλ λλ€. UTF-8μ ASCII λ¬Έμκ° νλμ λ°μ΄νΈλ‘ ννλκ³ , λ€λ₯Έ λ¬Έμλ μ΅λ λ€ κ°μ λ°μ΄νΈλ‘ ννλλ μΌλ°μ μΈ μΈμ½λ© νμ€μ λλ€.
- Processing Data: λ°μ΄ν°λ₯Ό μ²λ¦¬νλ μμ€ν μ λ°μ΄νΈ μ€νΈλ¦Όμ λ¬Έμλ‘ μ¬λ°λ₯΄κ² λ³ννκΈ° μν΄ μ¬μ©λ μΈμ½λ©μ μΈμν΄μΌ ν©λλ€.
- Variants of UTF: UTF-8 μΈμλ μ΅μ 2λ°μ΄νΈ(μ΅λ 4λ°μ΄νΈ)λ₯Ό μ¬μ©νλ UTF-16 λ° λͺ¨λ λ¬Έμμ λν΄ 4λ°μ΄νΈλ₯Ό μ¬μ©νλ UTF-32μ κ°μ λ€λ₯Έ μΈμ½λ© νμ€μ΄ μμ΅λλ€.
μ λμ½λμ 볡μ‘μ±κ³Ό λ€μν μΈμ½λ© λ°©λ²μμ λ°μν μ μλ μ μ¬μ μΈ λ¬Έμ λ₯Ό ν¨κ³Όμ μΌλ‘ μ²λ¦¬νκ³ μννκΈ° μν΄ μ΄λ¬ν κ°λ μ μ΄ν΄νλ κ²μ΄ μ€μν©λλ€.
μ λμ½λκ° λμΌν λ¬Έμλ₯Ό λνλ΄λ λ κ°μ λ€λ₯Έ λ°μ΄νΈλ₯Ό μ κ·ννλ λ°©λ²μ μ:
unicodedata.normalize("NFKD","chloe\u0301") == unicodedata.normalize("NFKD", "chlo\u00e9")
μ λμ½λ λλ± λ¬Έμ λͺ©λ‘μ μ¬κΈ°μμ μ°Ύμ μ μμ΅λλ€: https://appcheck-ng.com/wp-content/uploads/unicode_normalization.html λ° https://0xacb.com/normalization_table
λ°κ²¬νκΈ°
μΉμ± λ΄μμ λ°νλλ κ°μ μ°Ύμ μ μλ€λ©΄, **βKELVIN SIGNβ (U+0212A)**λ₯Ό 보λ΄λ³΄μΈμ. μ΄λ βKβλ‘ μ κ·νλ©λλ€ (μ΄λ₯Ό %e2%84%aaλ‘ λ³΄λΌ μ μμ΅λλ€). βKβκ° λ°νλλ€λ©΄, μ΄λ€ μ’
λ₯μ μ λμ½λ μ κ·νκ° μνλκ³ μλ κ²μ
λλ€.
λ€λ₯Έ μμ: %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λ μ λμ½λ νμ Leonishanμ
λλ€.
μ·¨μ½ν μμ
SQL μΈμ μ νν° μ°ν
μ¬μ©μ μ
λ ₯μΌλ‘ SQL 쿼리λ₯Ό μμ±νλ λ° λ¬Έμ 'λ₯Ό μ¬μ©νλ μΉ νμ΄μ§λ₯Ό μμν΄ λ³΄μΈμ. μ΄ μΉμ 보μ μ‘°μΉλ‘ μ¬μ©μ μ
λ ₯μμ λ¬Έμ **'**μ λͺ¨λ λ°μμ μμ νμ§λ§, κ·Έ μμ ν λ° μΏΌλ¦¬ μμ± μ μ μ¬μ©μ μ
λ ₯μ μ λμ½λλ₯Ό μ¬μ©νμ¬ μ κ·νν©λλ€.
κ·Έλ λ€λ©΄, μ
μμ μΈ μ¬μ©μλ ' (0x27)μ ν΄λΉνλ λ€λ₯Έ μ λμ½λ λ¬Έμ %ef%bc%87μ μ½μ
ν μ μμΌλ©°, μ
λ ₯μ΄ μ κ·νλ λ λ¨μΌ μΈμ©λΆνΈκ° μμ±λκ³ SQL μΈμ μ
μ·¨μ½μ μ΄ λ°μν©λλ€:
.png)
ν₯λ―Έλ‘μ΄ μ λμ½λ λ¬Έμλ€
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 ν νλ¦Ώ
GitHub - carlospolop/sqlmap_to_unicode_template
XSS (κ΅μ°¨ μ¬μ΄νΈ μ€ν¬λ¦½ν )
λ€μ λ¬Έμ μ€ νλλ₯Ό μ¬μ©νμ¬ μΉ μ ν리μΌμ΄μ μ μμ΄κ³ XSSλ₯Ό μ μ©ν μ μμ΅λλ€:
 (2).png)
μλ₯Ό λ€μ΄, μ μλ 첫 λ²μ§Έ μ λμ½λ λ¬Έμλ %e2%89%ae λλ %u226eλ‘ μ μ‘λ μ μμ΅λλ€.
 (1) (1).png)
νΌμ§ μ κ· ννμ
λ°±μλκ° μ κ· ννμμΌλ‘ μ¬μ©μ μ λ ₯μ νμΈν λ, μ λ ₯μ΄ μ κ· ννμμ λν΄ μ κ·νλμ§λ§ μ¬μ©λλ κ³³μ λν΄μλ μ κ·νλμ§ μμ μ μμ΅λλ€. μλ₯Ό λ€μ΄, Open Redirect λλ SSRFμμ μ κ· ννμμ΄ μ μ‘λ URLμ μ κ·νν μ μμ§λ§, κ·Έ ν μλ κ·Έλλ‘ μ κ·Όν μ μμ΅λλ€.
λꡬ recollapseλ λ°±μλλ₯Ό νΌμ§νκΈ° μν΄ μ λ ₯μ λ³νμ μμ±ν μ μκ² ν΄μ€λλ€. λ λ§μ μ 보λ githubμ μ΄ κ²μλ¬Όμ νμΈνμΈμ.
μ λμ½λ μ€λ²νλ‘μ°
μ΄ λΈλ‘κ·Έμμ, λ°μ΄νΈμ μ΅λ κ°μ 255μ΄λ©°, μλ²κ° μ·¨μ½νλ€λ©΄ μ€λ²νλ‘μ°λ₯Ό λ§λ€μ΄ νΉμ νκ³ μμμΉ λͺ»ν ASCII λ¬Έμλ₯Ό μμ±ν μ μμ΅λλ€. μλ₯Ό λ€μ΄, λ€μ λ¬Έμλ Aλ‘ λ³νλ©λλ€:
- 0x4e41
- 0x4f41
- 0x5041
- 0x5141
μ°Έκ³ λ¬Έν
- 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
- https://portswigger.net/research/bypassing-character-blocklists-with-unicode-overflows
Tip
AWS ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:HackTricks Training GCP Red Team Expert (GRTE)
Azure ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks μ§μνκΈ°
- ꡬλ κ³ν νμΈνκΈ°!
- **π¬ λμ€μ½λ κ·Έλ£Ή λλ ν λ κ·Έλ¨ κ·Έλ£Ήμ μ°Έμ¬νκ±°λ νΈμν° π¦ @hacktricks_liveλ₯Ό νλ‘μ°νμΈμ.
- HackTricks λ° HackTricks Cloud κΉνλΈ λ¦¬ν¬μ§ν 리μ PRμ μ μΆνμ¬ ν΄νΉ νΈλ¦μ 곡μ νμΈμ.


