Unicode Injection
介绍
根据后端/前端在 接收奇怪的 unicode 字符 时的行为,攻击者可能能够 绕过保护并注入任意字符 ,这些字符可能被用于 利用注入漏洞 ,例如 XSS 或 SQLi。
Unicode 规范化
Unicode 规范化发生在 unicode 字符被规范化为 ascii 字符 时。
这种类型漏洞的一个常见场景发生在系统 以某种方式修改 用户的 输入 在检查之后 。例如,在某些语言中,简单调用将 输入转换为大写或小写 可能会规范化给定的输入, unicode 将被转换为 ASCII ,生成新字符。 有关更多信息,请查看:
Unicode Normalization
\u
到
%
\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
。这
规范化
了
‹
为
<
,这就是该系统上漏洞能够工作的方式。
发生的事情是: