4.8 KiB
Unicode注入
从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家)!
支持HackTricks的其他方式:
- 如果您想看到您的公司在HackTricks中做广告或下载PDF格式的HackTricks,请查看订阅计划!
- 获取官方PEASS & HackTricks周边产品
- 探索PEASS家族,我们独家的NFTs收藏品
- 加入 💬 Discord群 或 电报群 或 关注我们的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
,解码后为:<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
从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家)!
支持HackTricks的其他方式:
- 如果您想在HackTricks中看到您的公司广告或下载PDF格式的HackTricks,请查看订阅计划!
- 获取官方PEASS & HackTricks周边产品
- 探索PEASS家族,我们的独家NFTs
- 加入 💬 Discord群组 或 电报群组 或 关注我们的Twitter 🐦 @carlospolopm。
- 通过向HackTricks和HackTricks Cloud github仓库提交PR来分享您的黑客技巧。