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

79 lines
5.7 KiB
Markdown
Raw Normal View History

2023-08-03 19:12:22 +00:00
# Unicode注入
2022-09-02 10:02:33 +00:00
<details>
2023-08-03 19:12:22 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 YouTube 🎥</strong></a></summary>
2022-09-02 10:02:33 +00:00
2023-08-03 19:12:22 +00:00
- 你在一家**网络安全公司**工作吗你想在HackTricks中看到你的**公司广告**吗?或者你想获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
2022-09-02 10:02:33 +00:00
2023-08-03 19:12:22 +00:00
- 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品——[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
2022-09-02 10:02:33 +00:00
2023-08-03 19:12:22 +00:00
- 获取[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com)
2022-09-02 10:02:33 +00:00
2023-08-03 19:12:22 +00:00
- **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
2022-09-02 10:02:33 +00:00
2023-08-03 19:12:22 +00:00
- **通过向[hacktricks repo](https://github.com/carlospolop/hacktricks)和[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)提交PR来分享你的黑客技巧**。
2022-09-02 10:02:33 +00:00
</details>
2023-08-03 19:12:22 +00:00
## 简介
2022-09-02 10:02:33 +00:00
2023-08-03 19:12:22 +00:00
根据后端/前端在**接收到奇怪的Unicode字符**时的行为,攻击者可能能够**绕过保护并注入任意字符**从而滥用注入漏洞如XSS或SQLi。
2022-09-02 10:02:33 +00:00
2023-08-03 19:12:22 +00:00
## Unicode规范化
2022-09-02 10:02:33 +00:00
2023-08-03 19:12:22 +00:00
Unicode规范化是指将**Unicode字符规范化为ASCII字符**的过程。
2022-09-02 10:02:33 +00:00
2023-08-03 19:12:22 +00:00
这种类型的漏洞的一个常见场景是,系统在**检查用户输入后对其进行修改**。例如,在某些语言中,对输入进行**大写或小写转换**的简单调用可能会将给定的输入规范化,并将**Unicode转换为ASCII**,从而生成新的字符。\
更多信息请参见:
2022-09-02 10:02:33 +00:00
{% content-ref url="unicode-normalization.md" %}
[unicode-normalization.md](unicode-normalization.md)
{% endcontent-ref %}
2023-08-03 19:12:22 +00:00
## `\u`转换为`%`
2022-09-02 10:02:33 +00:00
2023-08-03 19:12:22 +00:00
Unicode字符通常以**`\u`前缀**表示。例如,字符`㱋`表示为`\u3c4b`[在此处检查](https://unicode-explorer.com/c/3c4B))。如果后端将前缀**`\u`转换为`%`**,则结果字符串将为`%3c4b`,解码后为:**`<4b`**。正如你所看到的**注入了`<`字符**。\
如果后端存在漏洞,你可以使用此技术来**注入任何类型的字符**。\
请访问[https://unicode-explorer.com/](https://unicode-explorer.com/)查找所需的字符。
2022-09-02 10:02:33 +00:00
2023-08-03 19:12:22 +00:00
实际上,这个漏洞来自于一位研究人员发现的一个漏洞,更详细的解释请参见[https://www.youtube.com/watch?v=aUsAHb0E7Cg](https://www.youtube.com/watch?v=aUsAHb0E7Cg)
2022-09-02 10:02:33 +00:00
2023-08-03 19:12:22 +00:00
## 表情符号注入
2022-09-02 10:02:33 +00:00
2023-08-03 19:12:22 +00:00
后端在**接收到表情符号**时有时会表现出奇怪的行为。这就是在[**这篇文章**](https://medium.com/@fpatrik/how-i-found-an-xss-vulnerability-via-using-emojis-7ad72de49209)中发生的情况研究人员成功使用如下有效负载实现了XSS`💋img src=x onerror=alert(document.domain)//💛`
2022-09-02 10:02:33 +00:00
2023-08-03 19:12:22 +00:00
在这种情况下错误在于服务器在删除恶意字符后将UTF-8字符串从Windows-1252转换为UTF-8基本上是输入编码和转换编码不匹配。然后这不会生成正确的`<`字符而是一个奇怪的Unicode字符``\
``然后他们将此输出**再次从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;
```
2023-08-03 19:12:22 +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>
2023-08-03 19:12:22 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks 云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-09-02 10:02:33 +00:00
2023-08-03 19:12:22 +00:00
- 你在一家**网络安全公司**工作吗?想要在 HackTricks 中**宣传你的公司**吗?或者想要**获取最新版本的 PEASS 或下载 HackTricks 的 PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
2022-09-02 10:02:33 +00:00
2023-08-03 19:12:22 +00:00
- 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品——[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
2022-09-02 10:02:33 +00:00
2023-08-03 19:12:22 +00:00
- 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
2022-09-02 10:02:33 +00:00
2023-08-03 19:12:22 +00:00
- **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass),或者在 **Twitter** 上**关注**我[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
2022-09-02 10:02:33 +00:00
2023-08-03 19:12:22 +00:00
- **通过向 [hacktricks 仓库](https://github.com/carlospolop/hacktricks) 和 [hacktricks-cloud 仓库](https://github.com/carlospolop/hacktricks-cloud) 提交 PR 来分享你的黑客技巧**。
2022-09-02 10:02:33 +00:00
</details>