漏洞概要
关注数(24)
关注此漏洞
漏洞标题:点我的链接我就可能会进入你的B站账号
提交时间:2016-01-11 10:26
修复时间:2016-02-22 16:48
公开时间:2016-02-22 16:48
漏洞类型:CSRF
危害等级:中
自评Rank:10
漏洞状态:厂商已经确认
Tags标签:
无
漏洞详情
披露状态:
2016-01-11: 细节已通知厂商并且等待厂商处理中
2016-01-11: 厂商已经确认,细节仅向厂商公开
2016-01-21: 细节向核心白帽子及相关领域专家公开
2016-01-31: 细节向普通白帽子公开
2016-02-10: 细节向实习白帽子公开
2016-02-22: 细节向公众公开
简要描述:
感谢@呆子不开口!思路好赞的!我来写个详细点的利用过程。
详细说明:
在B站上,用户是允许绑定微博登陆的,然而绑定的接口是可以CSRF的,也就是说当用户登录后,点击我的链接,我就可以调用该接口完成绑定,绑定后就可以用我使用的微博进行登录了。具体接口如下:
问题的关键点在于此接口的CSRF,而另外一个难题就是如何在用户的浏览器上登录我的微博了。
0x01 注册一个微博,然后用微博授权给bilibili。要先授权的原因是在伟哥的漏洞中已经提到过,这里引用并修改一下:“新浪微博的授权有如下特点,如果当前登陆的微博曾经授权过bilibili,那么就会自动绑定成功”
0x02 用一个隐藏的iframe在用户的浏览器上登录我们指定的微博。这里使用到的接口有个问题需要注意,就是请求参数中password_4555和vk=4555_a3b5_1907935541,这两个参数是在http://login.weibo.cn/中生成的,有一定的时效性,后端会校验是否合法,因此我们需要动态生成登录的表单。我写了一个简单的flask接口,在服务端请求后提取出来生成表单,然后前端自动提交即可完成登录。
0x03 登录微博后前端就可以用Image加载指定的URL,完成绑定了。如果用户先绑定了微博,需要先解绑,然后再绑定,具体过程看漏洞证明中的代码。
0x04 用户访问完以上的页面后,我们就可以利用上面的微博账号登录到用户的bilibili账号了。
漏洞证明:
我直接给出我写个一个flask程序,依赖flask和beautifulsoup,就不在我自己的主机上搭测试环境了。
server.py,自己改一下weibo_username和weibo_password吧。
运行后访问页面,你就会发现:
修复方案:
漏洞回应
厂商回应:
危害等级:低
漏洞Rank:3
确认时间:2016-01-11 20:08
厂商回复:
谢谢
最新状态:
暂无