.. | ||
README.md | ||
unicode-normalization.md |
Unicode 注入
从零到英雄学习 AWS 黑客技术 htARTE (HackTricks AWS 红队专家)!
支持 HackTricks 的其他方式:
- 如果您想在 HackTricks 中看到您的公司广告 或 下载 HackTricks 的 PDF 版本,请查看订阅计划!
- 获取 官方 PEASS & HackTricks 商品
- 发现 PEASS 家族,我们独家的 NFT 集合
- 加入 💬 Discord 群组 或 telegram 群组 或在 Twitter 🐦 上关注我 @carlospolopm。
- 通过向 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;
表情符号列表:
- https://github.com/iorch/jakaton_feminicidios/blob/master/data/emojis.csv
- https://unicode.org/emoji/charts-14.0/full-emoji-list.html
从零开始学习AWS黑客技术,成为英雄,通过 htARTE (HackTricks AWS Red Team Expert)!
支持HackTricks的其他方式:
- 如果您想在HackTricks中看到您的公司广告或下载HackTricks的PDF,请查看订阅计划!
- 获取官方PEASS & HackTricks商品
- 发现PEASS家族,我们独家的NFTs系列
- 加入 💬 Discord群组 或 telegram群组 或在Twitter 🐦 上关注我 @carlospolopm。
- 通过向 HackTricks 和 HackTricks Cloud github仓库提交PR来分享您的黑客技巧。**