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

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

缺陷编号:wooyun-2013-020277

漏洞标题:QQ空间某功能缺陷导致日志存储型XSS - 4

相关厂商:腾讯

漏洞作者: gainover

提交时间:2013-03-18 21:24

修复时间:2013-05-02 21:25

公开时间:2013-05-02 21:25

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

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-03-18: 细节已通知厂商并且等待厂商处理中
2013-03-19: 厂商已经确认,细节仅向厂商公开
2013-03-29: 细节向核心白帽子及相关领域专家公开
2013-04-08: 细节向普通白帽子公开
2013-04-18: 细节向实习白帽子公开
2013-05-02: 细节向公众公开

简要描述:

依然是某处功能缺陷,加上开发人员犯了某种古老的过滤错误导致我不好意思的又来了。

详细说明:

1. 模板日志,看到有这么一个播放器,在播放器里加一首歌,随便发个日志,同时抓包。

1.jpg


2.jpg


2. 我们搜索 MusicPlayer.swf, 可以定位到 http://ctc.qzs.qq.com/qzone/app/blog/v6/script/content_templateblog_parser.js
看下日志源代码,我们可以看到这里实际上是一个 <div data="xxxxx" name="xxxxx"></div>

4.jpg


这个可以给我们在定位代码的时候有所启示。 搜索 "data" 或 'data'

3.jpg


可以看到Music.Parser调用了 data 属性里的数据并返回,
3. 那么哪里调用了 Music.Parser呢?搜索 "Music.Parser("

5.jpg


可以看到,数据进一步到了 TemplateBlogParser.music
4. 接着 TemplateBlogParser.music 被哪里用到了呢?

6.jpg


可以看到数据进一步到了aData.content
5. 稍微继续往下看,可以看到 aData进入了一处 eval, 不过这里eval处是无法利用的。

7.jpg


如上图,这里的代码相当于是执行了
aObj=new MusicPlayer(itemId,aData);
6. 进一步跟踪,找到MusicPlayer对象的定义。搜索 "function MusicPlayer"
找到MusicPlayer后,我们观察它的第2个参数(即data)的流向。

8.jpg


可以看到,data.content 进入了 this.data.content。
7. 继续往下面代码看。

9.jpg


接着this.data.content进入了 this.convertKorean() 函数,看样子是做了一次转换。
8. 我们进而看看,this.convertKorean 函数对数据进行了什么处理。

this.convertKorean = function(str) {
var div = document.createElement("div");
div.innerHTML = str;
str = div.innerText || div.textContent;
return str;
};


看到这段代码,顿时觉得有戏!!我们的str被传入到了 div.innerHTML中。
这段代码的功能,实际上是去掉 str中的 html标签,
然而这段代码实际上是犯了一个很经典的"过滤错误",开发人员建立一个临时的div,然后取出innerText/textContent。但是实际上无论 div 是否被追加到DOM中,innerHTML="<img src=1 onerror=alert(1)>" 都是会被执行的。
9. 这里一来,我们回溯回去,我们的str实际上就是来自于我们最初的 data中的值。
接下来的就好办啦!我们找到最开始抓到的数据,修改并发包。
<div class="blog_details_20120222"><div name="title">xxxxxxxxxxx</div><div name="text"><br />x<br />xxxxxxx</div><img name="pic" style="display:block;" width="280" height="230" alt="??" position="0_-7" isDefaultPhoto="1" rotation="0" scale="0" src="http://ctc.qzs.qq.com/qzone/space_item/orig/3/87731/module_1.jpg" /><div name="title">xxxxxx</div><div name="title">xxxx</div><div name="title">xxxx</div><div name="MultiImageController" data=""></div><div name="music" data="http://stream16.qqmusic.qq.com/31303066.mp3|<img src=1 onerror=&quot;alert(document.cookie)&quot;>|A-Ha|0"></div></div>
11. 可以看到成功弹出cookies

10.jpg


IE下一样。

漏洞证明:

见详细说明

修复方案:

数据进入 this.convertKorean 之前,或者从 getAttribute("data") 取出数据之后,对数据进行 HTMLEncode.

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2013-03-19 10:51

厂商回复:

非常感谢您的报告。这个问题我们已经确认,正在与业务部门进行沟通制定解决方案。如有任何新的进展我们将会及时同步。

最新状态:

暂无


漏洞评价:

评论

  1. 2013-03-18 21:25 | Rookie ( 普通白帽子 | Rank:288 漏洞数:78 | 123)

    二哥就是二哥 每个月都要来几次

  2. 2013-03-18 21:27 | 小胖子 认证白帽子 ( 核心白帽子 | Rank:1727 漏洞数:125 | 如果大海能够带走我的矮丑...)

    二哥真的怒了!!!!!

  3. 2013-03-18 21:32 | cnrstar ( 普通白帽子 | Rank:157 漏洞数:20 | Be my personal best!)

    逆天了!

  4. 2013-03-18 21:54 | rasca1 ( 实习白帽子 | Rank:53 漏洞数:16 | 菜鸟一只)

    靠,为毛我们再找也找不到,差距啊,,

  5. 2013-03-18 22:49 | 鬼魅羊羔 ( 普通白帽子 | Rank:299 漏洞数:41 | (#‵′)凸(#‵′)凸(#‵′)凸(#‵′)凸(#‵...)

    @gainover 你知道我想表达啥不?

  6. 2013-03-18 22:52 | rasca1 ( 实习白帽子 | Rank:53 漏洞数:16 | 菜鸟一只)

    你想和他搞基,很明显了

  7. 2013-03-18 23:18 | se55i0n ( 普通白帽子 | Rank:1567 漏洞数:172 )

    @鬼魅羊羔 二哥是骨干美

  8. 2013-03-18 23:26 | 鬼魅羊羔 ( 普通白帽子 | Rank:299 漏洞数:41 | (#‵′)凸(#‵′)凸(#‵′)凸(#‵′)凸(#‵...)

    @se55i0n 我喜欢瘦的,哈哈

  9. 2013-03-19 08:44 | 心伤的瘦子 ( 普通白帽子 | Rank:147 漏洞数:21 | 严肃点~此号为虚拟小号,并不存在实体...)

    二哥你好,二哥再见

  10. 2013-03-19 09:12 | 鬼魅羊羔 ( 普通白帽子 | Rank:299 漏洞数:41 | (#‵′)凸(#‵′)凸(#‵′)凸(#‵′)凸(#‵...)

    @心伤的瘦子 说!你把胖子怎么了!?

  11. 2013-03-19 09:46 | Metasploit ( 实习白帽子 | Rank:37 漏洞数:7 | http://www.metasploit.cn/)

    连载

  12. 2013-03-19 10:31 | El4pse ( 路人 | Rank:29 漏洞数:7 | 世界上从来没有不可能这几个字,可不可能完...)

    你又调皮了。。好一整子没见着你了

  13. 2013-03-19 20:02 | 心伤的瘦子 ( 普通白帽子 | Rank:147 漏洞数:21 | 严肃点~此号为虚拟小号,并不存在实体...)

    @鬼魅羊羔 瘦子来崇拜你们了,还需要胖子吗

  14. 2013-03-19 20:23 | 小胖子 认证白帽子 ( 核心白帽子 | Rank:1727 漏洞数:125 | 如果大海能够带走我的矮丑...)

    @心伤的瘦子 还需要更胖的吗?

  15. 2013-04-18 21:42 | lucky ( 普通白帽子 | Rank:409 漏洞数:81 | 三人行必有我师焉########################...)

    学习了!二哥大作!

  16. 2013-04-19 06:32 | 廷廷 ( 路人 | Rank:0 漏洞数:1 | 有很强的好奇心,爱好广泛,求女女带走。。...)

    二哥这量不少啊,月月轻松