Unicode Injection
简介
根据后端/前端在接收奇怪的Unicode字符时的行为,攻击者可能能够绕过保护措施并注入任意字符,从而可能被用于滥用注入漏洞,如XSS或SQLi。
Unicode规范化
Unicode规范化发生在将Unicode字符规范化为ASCII字符时。
这种类型漏洞的常见情况是,系统在检查用户输入后以某种方式修改用户的输入。例如,在某些语言中,对输入进行大写或小写处理可能会规范化给定的输入,将Unicode转换为ASCII生成新字符。 更多信息请查看:
Unicode Normalization\u
转换为%
\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。这将将‹
规范化为<
,这就是该系统上漏洞利用的原理。
这就是发生的情况:
表情符号列表:
最后更新于