漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2012-012746
漏洞标题:网易微博存储型XSS 1
相关厂商:网易
漏洞作者: 心伤的胖子
提交时间:2012-09-26 16:11
修复时间:2012-11-10 16:11
公开时间:2012-11-10 16:11
漏洞类型:xss跨站脚本攻击
危害等级:高
自评Rank:20
漏洞状态:厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2012-09-26: 细节已通知厂商并且等待厂商处理中
2012-09-27: 厂商已经确认,细节仅向厂商公开
2012-10-07: 细节向核心白帽子及相关领域专家公开
2012-10-17: 细节向普通白帽子公开
2012-10-27: 细节向实习白帽子公开
2012-11-10: 细节向公众公开
简要描述:
发微博处有个地方没有进行转义处理,存在存储型XSS漏洞。
详细说明:
好吧我承认我是无意中发现的,然后才跟踪出来问题的。
1、在首页发微博,截获包然后修改。
修改了voteUrl参数为bbb"><>,然后提交。
2、回到首页,已经发布了一条微博。但是在Burp中有一个下面这样的请求:
http://163.fm/getOriginal?callback=jQuery16109319937340915203_1348642196756&q=T7n6r0L&_=1348642200976
(这个地址是我后来抓取的,不过已经能够说明问题了)
内容为
jQuery16109319937340915203_1348642196756("bbb"><>");
这是一个jsonp的请求,但是问题来了,这个数据没有进行任何处理。并且这段代码肯定是要加载到首页作为js代码执行的,我们构造闭合callback的代码,后面再插入我们自己的js代码肯定能够在首页执行的。
3、然后在发送一条微博,voteUrl参数改为");alert(document.cookie);//,再次访问首页,发现没有弹框,也没有和之前类似的请求了。不过我们之前忽略一个问题就是,content这个参数为微博的内容,但是我们发的微博却包含一个网易微博的短链接地址 http://163.fm/T7n6r0L ,鼠标移到上面,奇迹出现,弹出了我们插入的js代码。
4、voteUrl这个参数从字面上理解应该是投票地址,初步分析是网易微博没有对该参数校验就直接转换为短链接地址。从http://163.fm/getOriginal?callback=jQuery16109319937340915203_1348642196756&q=T7n6r0L&_=1348642200976这个地址返回的内容也能够判断出,传入到callback的参数就是我们voteUrl的值。
5、执行了js代码,但是并不知道为什么执行?先在firebug中查找getOriginal,在
http://img2.cache.netease.com/t/cssjs/439756/script/page/home.js
中有找到:
这个只是定义,在home.js中再查找longUrl,有如下代码:
在上面的代码中我们大致可以知道问题产生的原因:
a) 修改参数voteUrl发微博
b) voteUrl会转换成一个短链接地址,短链接对应的长链接地址为voteUrl的值
c) 微博中包含这个短链接地址,当鼠标移动到短链接地址会触发mouseenter事件
d) 响应mouseenter事件后会先取短链接后面的7个字符,把这7个字符作为q参数的值,然后通过ajax去http://163.fm/getOriginal请求资源。在这一步中执行我们的js代码。
e) 最后把短链接所对应真是的长链接地址放到微博中a标签的title属性。
漏洞证明:
修复方案:
1、对voteUrl参数进行判断
2、通过jsonp调用的时候先对voteUrl的值进行js转义。
版权声明:转载请注明来源 心伤的胖子@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:15
确认时间:2012-09-27 11:05
厂商回复:
感谢您对网易的关注,漏洞已经修复。
最新状态:
暂无