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

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

缺陷编号:wooyun-2012-012767

漏洞标题:腾讯微博存储型XSS漏洞--看我这标题多普通

相关厂商:腾讯

漏洞作者: 心伤的胖子

提交时间:2012-09-27 09:42

修复时间:2012-11-11 09:43

公开时间:2012-11-11 09:43

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

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

腾讯微博存储型XSS漏洞,需要用户进行交互才能够触发。

详细说明:

先给出重现过程
1、发微博处添加音乐,随便搜索一个,比如test,在出现的音乐列表中选择一个插入到微博中,在发表微博的时候截断包,

content=%23%E5%88%86%E4%BA%AB%E9%9F%B3%E4%B9%90%23%20%23We%20are%20AMARS-%E5%90%89%E6%A3%AE%E4%BF%A1%23%20http%3A%2F%2Furl.cn%2F534joC&startTime=1348674746009&endTime=1348675207813&countType=&viewModel=&attips=&pic=&musicID=1886728&musicSong=We%20are%20AMARS<img src=a onerror=alert(1)>&musicSinger=%E5%90%89%E6%A3%AE%E4%BF%A1&musicLocation=http%3A%2F%2Fstream4.qqmusic.qq.com%2F13886728.wma&musicShortUrl=534joC&apiType=8&syncQzone=0&syncQQSign=0


修改musicSong参数,在后面加上<img src=a onerror=alert(1)>,然后发表微博。
2、回到首页刚发表微博的地方,微博内容如下图:


3、点击播放,执行了我们插入的代码。
漏洞分析过程:
1、漏洞形成的原因经过简单分析是,在http://mat1.gtimg.com/www/mb/js/mi.TalkListRich_120921a.js这个js文件中有如下代码:

MI.TalkList.prototype.musicEvent = function(b) {
for (var a = this,
c = 0,
e = b.length; c < e; c++) {
var d = b[c],
f = g(d, ".albumInfo .mThumbsBox")[0];
if (f) {
…………
} else {
f = g(d, ".mThumbsBox")[0];
j = g(d, ".mBox")[0];
g(j, ".mTitBox");
var h = g(j, ".btn_mClose")[0],
i = g(j, ".btn_mPlay")[0],
j = g(j, ".btn_mPause_hover")[0],
k = g(d.parentNode.parentNode, ".msgCnt .ico_music")[0] || g(d.parentNode.parentNode, ".msgCnt .ico_qlz")[0];
f.onclick = i.onclick = function() {
MI.app({
Music: function() {
MI.TalkList.music(d)
}
});
return ! 1
};
k && (k.onclick = function() {
…………
};


点击触发click时间,然后调用MI.TalkList.music(d)函数进行音乐播放。
2、MI.TalkList.music函数在http://mat1.gtimg.com/www/mb/js/mi.Music_120821.js文件中。

MI.TalkList.music = function(a) {
MI.TalkList.lastMusic = a;
MI.Music && MI.Music.stop("", !0);
var b = g(a, ".albumInfo .mThumbsBox")[0];
…………
a = '<a class="mPlayerPlaying" href="http://music.soso.com/url_player.html?song=%esong%&singer=%esinger%&url=%songurl%&stream=0&songID=0" target="_blank" title="%song%-%singer%"><span style="margin-right:10px;">%song%-%singer%</span></a>'.replace(/\%esong\%/gi, escape(UI.A(a, "song"))).replace(/\%esinger\%/gi, escape(UI.A(a, "singer"))).replace(/\%song\%/gi, UI.A(a, "song")).replace(/\%singer\%/gi, UI.A(a, "singer")).replace(/\%songurl\%/gi, UI.A(a, "songurl")).replace(/\%songid\%/gi, UI.A(a, "songid"));
h || (UI.append(UI.html(a)[0], f), h = g(f, ".mPlayerPlaying")[0]);
n || UI.append(UI.html('<span class="mPlayerState"></span>')[0], f);
…………


上面代码中会从页面中获取歌手名和歌曲名然后替换a变量中的内容,在替换的没有对歌曲名和歌手名进行URL编码和HTML编码处理,造成存在XSS漏洞。
PS:感觉分析的挺乱的,你们看看能否看懂吧!

漏洞证明:

下图是执行了插入的代码:

修复方案:

1、在通过js输出html代码的时候对用户传入的数据进行编码处理。

版权声明:转载请注明来源 心伤的胖子@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2012-09-27 10:47

厂商回复:

非常感谢您的反馈,漏洞正在跟进处理中。

最新状态:

暂无


漏洞评价:

评论

  1. 2012-09-27 09:51 | 风萧萧 认证白帽子 ( 核心白帽子 | Rank:1020 漏洞数:76 | 人这一辈子总要动真格的爱上什么人)

    普通不火啊!

  2. 2012-09-27 09:55 | 心伤的胖子 ( 普通白帽子 | Rank:308 漏洞数:29 | 因为心伤,所以胖子。)

    @风萧萧 我也这么觉得,回头不管内容如何,先来个够火爆的标题才行。

  3. 2012-09-27 09:58 | xsser 认证白帽子 ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)

    @心伤的胖子 你绝对是个马甲!

  4. 2012-09-27 10:05 | 心伤的胖子 ( 普通白帽子 | Rank:308 漏洞数:29 | 因为心伤,所以胖子。)

    @xsser 说话要有证据,小心我告你哦,信不信明天就让你受到北山法院的传票。

  5. 2012-09-27 10:07 | 风萧萧 认证白帽子 ( 核心白帽子 | Rank:1020 漏洞数:76 | 人这一辈子总要动真格的爱上什么人)

    @xsser 认识的黑客中谁是胖子啊?还带点淡淡的忧伤。

  6. 2012-09-27 10:08 | 心伤的胖子 ( 普通白帽子 | Rank:308 漏洞数:29 | 因为心伤,所以胖子。)

    @风萧萧 胖子很多,不过那是蛋蛋的忧伤。

  7. 2012-09-27 10:39 | zeracker 认证白帽子 ( 核心白帽子 | Rank:1068 漏洞数:137 | 多乌云、多机会!微信公众号: id:a301zls ...)

    南山法院和北山法院是一家么。

  8. 2012-09-27 10:56 | 瘦蛟舞 认证白帽子 ( 普通白帽子 | Rank:687 漏洞数:78 | 铁甲依然在)

    肿么没有sina的。。。

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

    @zeracker 你的签名......

  10. 2012-10-10 15:02 | zeracker 认证白帽子 ( 核心白帽子 | Rank:1068 漏洞数:137 | 多乌云、多机会!微信公众号: id:a301zls ...)

    @horseluke 自己就这样了。

  11. 2012-10-18 16:39 | LeadUrLife ( 普通白帽子 | Rank:103 漏洞数:14 | 好好学习 天天向上)

    关注这个胖子1下