现代浏览器中的 UTF-7 XSS 攻击

信息安全 网页浏览器 javascript xss 编码
2021-08-16 23:24:48

我最近阅读了Ned Batchelders 关于 UTF-7 XSS-attacks 的文章我测试了他的示例,但无法让任何 UTF-7 攻击在现代浏览器中起作用。到目前为止,我尝试了最新版本的 Firefox、Chrome 和 Safari。

我知道 Chrome 有一些 XSS 攻击预防机制,但根据我的经验,Firefox 有一个更“慷慨”的执行 javascript 的机制,即使它被破坏了 - 但是,这些浏览器似乎都没有默认选择 UTF-7 字符集,如果该网站正在使用(但未明确声明)它。

所以:有人知道为什么这不再起作用了吗?似乎 UTF-7 检测机制发生了变化,甚至可能出于安全原因?如果无法更改文档中的字符集声明或操纵标题,UTF-7 攻击是否仍能针对现代浏览器?

2个回答

此漏洞仅适用于旧版本的 Internet Explorer。现代浏览器不会自动检测编码为 UTF-7。

OWASP:-

如果不更改编码类型,这在任何现代浏览器中都不起作用,这就是它被标记为完全不受支持的原因。

维基百科:-

为了缓解这个问题,系统应该在验证之前执行解码,并且应该避免尝试自动检测 UTF-7。旧版本的 Internet Explorer 可能会被欺骗,将页面解释为 UTF-7。

ChromeFirefox似乎不再支持任何格式的 UTF-7。HTML5 规范

用户代理必须支持 WHATWG 编码标准中定义的编码。用户代理不应该支持其他编码。

用户代理不得支持 CESU-8、UTF-7、BOCU-1 和 SCSU 编码。[CESU8] [UTF7] [BOCU1] [SCSU​​]

尤其不鼓励支持基于 EBCDIC 的编码。这种编码很少用于面向公众的 Web 内容。对 UTF-32 的支持也特别不鼓励。这种编码很少使用,并且经常不正确地实现。