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

75 lines
5.5 KiB
Markdown
Raw Normal View History

2024-02-10 21:30:13 +00:00
# 유니코드 인젝션
2022-09-02 10:02:33 +00:00
<details>
2024-02-10 21:30:13 +00:00
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요<strong>!</strong></summary>
2022-09-02 10:02:33 +00:00
2024-02-10 21:30:13 +00:00
HackTricks를 지원하는 다른 방법:
2022-09-02 10:02:33 +00:00
2024-02-10 21:30:13 +00:00
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](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) 컬렉션입니다.
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)을 **팔로우**하세요.
* **Hacking 트릭을 공유하려면 PR을** [**HackTricks**](https://github.com/carlospolop/hacktricks) **및** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **깃허브 저장소에 제출**하세요.
2022-09-02 10:02:33 +00:00
</details>
2024-02-10 21:30:13 +00:00
## 소개
2022-09-02 10:02:33 +00:00
2024-02-10 21:30:13 +00:00
백엔드/프론트엔드가 **이상한 유니코드 문자를 받을 때**, 공격자는 **보호 기능을 우회하고 임의의 문자를 삽입**하여 XSS 또는 SQLi와 같은 **인젝션 취약점을 악용**할 수 있습니다.
2022-09-02 10:02:33 +00:00
2024-02-10 21:30:13 +00:00
## 유니코드 정규화
2022-09-02 10:02:33 +00:00
2024-02-10 21:30:13 +00:00
유니코드 정규화는 **유니코드 문자를 ASCII 문자로 정규화**하는 과정입니다.
2022-09-02 10:02:33 +00:00
2024-02-10 21:30:13 +00:00
이 유형의 취약점의 일반적인 시나리오는 시스템이 사용자의 **입력을 확인한 후에 입력을 수정**하는 경우입니다. 예를 들어, 언어에 따라 **입력을 대문자 또는 소문자로 변환**하는 간단한 호출은 주어진 입력을 정규화하고 **유니코드가 ASCII로 변환**되어 새로운 문자가 생성될 수 있습니다.\
자세한 내용은 다음을 참조하세요:
2022-09-02 10:02:33 +00:00
{% content-ref url="unicode-normalization.md" %}
[unicode-normalization.md](unicode-normalization.md)
{% endcontent-ref %}
2024-02-10 21:30:13 +00:00
## `\u`를 `%`로 변환
2022-09-02 10:02:33 +00:00
2024-02-10 21:30:13 +00:00
유니코드 문자는 일반적으로 **`\u` 접두사**로 표시됩니다. 예를 들어, 문자 `㱋``\u3c4b`입니다([여기에서 확인하세요](https://unicode-explorer.com/c/3c4B)). 백엔드가 접두사 **`\u``%`로 변환**하면 결과적으로 문자열은 `%3c4b`가 되며, 이를 URL 디코딩하면 **`<4b`**가 됩니다. 그리고 보시다시피 **`<` 문자가 삽입**됩니다.\
백엔드가 취약하다면 이 기술을 사용하여 **임의의 종류의 문자를 삽입**할 수 있습니다.\
필요한 문자를 찾으려면 [https://unicode-explorer.com/](https://unicode-explorer.com/)를 확인하세요.
2022-09-02 10:02:33 +00:00
2024-02-10 21:30:13 +00:00
이 취약점은 실제로 연구원이 발견한 취약점에서 나온 것입니다. 더 깊은 설명은 [https://www.youtube.com/watch?v=aUsAHb0E7Cg](https://www.youtube.com/watch?v=aUsAHb0E7Cg)에서 확인할 수 있습니다.
2022-09-02 10:02:33 +00:00
2024-02-10 21:30:13 +00:00
## 이모지 인젝션
2022-09-02 10:02:33 +00:00
2024-02-10 21:30:13 +00:00
백엔드는 때때로 **이모지를 받을 때 이상하게 동작**합니다. 이는 [**이 writeup**](https://medium.com/@fpatrik/how-i-found-an-xss-vulnerability-via-using-emojis-7ad72de49209)에서 발생한 것으로, 연구원은 `💋img src=x onerror=alert(document.domain)//💛`와 같은 페이로드로 XSS를 성공적으로 수행했습니다.
2022-09-02 10:02:33 +00:00
2024-02-10 21:30:13 +00:00
이 경우, 문제는 악성 문자를 제거한 후 서버가 UTF-8 문자열을 Windows-1252에서 UTF-8로 **변환**했기 때문에 발생했습니다 (기본적으로 입력 인코딩과 변환 인코딩이 일치하지 않음). 그런 다음 이는 올바른 < 아닌 이상한 유니코드인 `` 생성합니다.\
``그래서 이 출력을 **다시 UTF-8에서 ASCII로 변환**했습니다. 이로 인해 ```<`로 **정규화**되어 해당 시스템에서 이 취약점이 작동할 수 있었습니다.\
다음은 발생한 일입니다:
2022-09-02 10:02:33 +00:00
```php
<?php
$str = isset($_GET["str"]) ? htmlspecialchars($_GET["str"]) : "";
$str = iconv("Windows-1252", "UTF-8", $str);
$str = iconv("UTF-8", "ASCII//TRANSLIT", $str);
echo "String: " . $str;
```
2024-02-10 21:30:13 +00:00
이모지 목록:
2022-09-02 10:02:33 +00:00
* [https://github.com/iorch/jakaton\_feminicidios/blob/master/data/emojis.csv](https://github.com/iorch/jakaton\_feminicidios/blob/master/data/emojis.csv)
* [https://unicode.org/emoji/charts-14.0/full-emoji-list.html](https://unicode.org/emoji/charts-14.0/full-emoji-list.html)
<details>
2024-02-10 21:30:13 +00:00
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요<strong>!</strong></summary>
2022-09-02 10:02:33 +00:00
2024-02-10 21:30:13 +00:00
HackTricks를 지원하는 다른 방법:
2022-09-02 10:02:33 +00:00
2024-02-10 21:30:13 +00:00
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](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) 컬렉션입니다.
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**를** 팔로우하세요.
* **Hacking 트릭을 공유하려면** [**HackTricks**](https://github.com/carlospolop/hacktricks)와 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소에 PR을 제출하세요.
2022-09-02 10:02:33 +00:00
</details>