5.7 KiB
Unicode注入
☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 YouTube 🎥
-
你在一家网络安全公司工作吗?你想在HackTricks中看到你的公司广告吗?或者你想获得PEASS的最新版本或下载PDF格式的HackTricks吗?请查看订阅计划!
-
发现我们的独家NFTs收藏品——The PEASS Family
-
加入💬 Discord群组或电报群组,或者关注我在Twitter上的🐦@carlospolopm。
-
通过向hacktricks repo和hacktricks-cloud repo提交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
,解码后为:<4b
。正如你所看到的,注入了<
字符。
如果后端存在漏洞,你可以使用此技术来注入任何类型的字符**。
请访问https://unicode-explorer.com/查找所需的字符。
实际上,这个漏洞来自于一位研究人员发现的一个漏洞,更详细的解释请参见https://www.youtube.com/watch?v=aUsAHb0E7Cg
表情符号注入
后端在接收到表情符号时有时会表现出奇怪的行为。这就是在这篇文章中发生的情况,研究人员成功使用如下有效负载实现了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
☁️ HackTricks 云 ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
你在一家网络安全公司工作吗?想要在 HackTricks 中宣传你的公司吗?或者想要获取最新版本的 PEASS 或下载 HackTricks 的 PDF吗?请查看订阅计划!
-
发现我们的独家NFTs收藏品——The PEASS Family
-
加入💬 Discord 群组 或 Telegram 群组,或者在 Twitter 上关注我🐦@carlospolopm。
-
通过向 hacktricks 仓库 和 hacktricks-cloud 仓库 提交 PR 来分享你的黑客技巧。