漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2012-013677
漏洞标题:新浪微博私信处存储型XSS
相关厂商:新浪
漏洞作者: 路人甲
提交时间:2012-10-21 20:18
修复时间:2012-12-05 20:19
公开时间:2012-12-05 20:19
漏洞类型:xss跨站脚本攻击
危害等级:高
自评Rank:15
漏洞状态:厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2012-10-21: 细节已通知厂商并且等待厂商处理中
2012-10-21: 厂商已经确认,细节仅向厂商公开
2012-10-31: 细节向核心白帽子及相关领域专家公开
2012-11-10: 细节向普通白帽子公开
2012-11-20: 细节向实习白帽子公开
2012-12-05: 细节向公众公开
简要描述:
因为“提交”,所以提交。
详细说明:
缺陷文件:http://js.t.sinajs.cn/t4/webim/js/webim.js?v=683ba479e29b6483
缺陷代码:
1. 微博私信中,点击图片,查看大图时,触发以下事件。
2. 可以看到, p = q.getAttribute("name"); 取出了图片元素的name属性。然后作为参数传递给了previewBox.changeUrl事件。
3. 再看事件被fire时的行为。
其中 function(k,l){ } 为事件回调函数, l 为 步骤1中的
4. j.pictureName.innerHTML = l.name 这句实际的运行链条是:
j.pictureName.innerHTML = l.name = p = q.getAttribute("name")
----------------------------------------
由于获取图片的name属性后,没有做二次过滤,就直接输出到了innerHTML,从而导致XSS。
POC:
将一个图片的文件名修改为:baidu_sylogo1.gif#"<img src=1 onerror=alert(document.cookie)>.gif
在WEBIM处的聊天窗口里,上传这个图片并发送。
对方点击图片后,即可触发XSS。
----------------------------------------
代入到上面的缺陷过程走一遍。
p=q.getAttribute("name")= 自动转义("baidu_sylogo1.gif#"<img src=1 onerror=alert(document.cookie)>.gif") = baidu_sylogo1.gif#"<img src=1 onerror=alert(document.cookie)>;.gif
然后.innerHTML=p 就会运行alert(document.cookie)
------------------------------------------
运行效果如下:
漏洞证明:
修复方案:
1. 在取出q.getAttribute("name")后,进行二次过滤,再输出到innerHTML
2. 当然也可以和你们现在这样,把&改为x
版权声明:转载请注明来源 路人甲@乌云
漏洞回应
厂商回应:
危害等级:低
漏洞Rank:1
确认时间:2012-10-21 23:44
厂商回复:
感谢对新浪安全的关注,漏洞已过时。
最新状态:
暂无