.. | ||
README.md | ||
unicode-normalization.md |
Unicode Injection
{% hint style="success" %}
学习和实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE)
学习和实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 关注 我们的 Twitter 🐦 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 分享黑客技巧。
介绍
根据后端/前端在 接收奇怪的 unicode 字符 时的行为,攻击者可能能够 绕过保护并注入任意字符,这些字符可能被用于 利用注入漏洞,例如 XSS 或 SQLi。
Unicode 规范化
Unicode 规范化发生在 unicode 字符被规范化为 ascii 字符 时。
这种类型漏洞的一个常见场景发生在系统 以某种方式修改 用户的 输入 在检查之后。例如,在某些语言中,简单调用将 输入转换为大写或小写 可能会规范化给定的输入,unicode 将被转换为 ASCII,生成新字符。
有关更多信息,请查看:
{% content-ref url="unicode-normalization.md" %} unicode-normalization.md {% endcontent-ref %}
\u
到 %
Unicode 字符通常用 \u
前缀 表示。例如字符 㱋
是 \u3c4b
(在这里查看)。如果后端 将 前缀 \u
转换为 %
,结果字符串将是 %3c4b
,URL 解码后为:<4b
。如你所见,<
字符被注入。
如果后端存在漏洞,你可以使用此技术 注入任何类型的字符。
查看 https://unicode-explorer.com/ 找到你需要的字符。
这个漏洞实际上源于一位研究人员发现的漏洞,想要更深入的解释请查看 https://www.youtube.com/watch?v=aUsAHb0E7Cg
Emoji 注入
后端在 接收表情符号 时表现得很奇怪。这在 这篇文章 中发生,研究人员成功利用一个有效载荷实现了 XSS,例如:💋img src=x onerror=alert(document.domain)//💛
在这种情况下,错误在于服务器在删除恶意字符后 将 UTF-8 字符串从 Windows-1252 转换为 UTF-8(基本上输入编码和转换编码不匹配)。然后这并没有给出一个正确的 <,而是一个奇怪的 unicode 字符:‹
``所以他们将这个输出 再次从 UTF-8 转换为 ASCII。这 规范化 了 ‹
为 <
,这就是该系统上漏洞能够工作的方式。
发生的事情是:
<?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;
Emoji 列表:
- https://github.com/iorch/jakaton_feminicidios/blob/master/data/emojis.csv
- https://unicode.org/emoji/charts-14.0/full-emoji-list.html
{% hint style="success" %}
学习和实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE)
学习和实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 @hacktricks_live上关注我们。
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。