对B站的点击劫持攻击测试:通过点击劫持为B站账号刷关注、骗充电
我 我怎么可能开公众号呢这件事的起因是昨晚心血来潮试着嵌入各家常用网站,发现只有B站可以正常嵌入而且无异样。高兴之余,突然想到,会不会B站可以被点击劫持攻击呢。
一试,还真的可以。下面是个演示,欢迎体验:
https://closed.social/test/bili.html
(需要在电脑版浏览器打开,毕竟B站和绝对大多数国产app一样本来就没法在手机浏览器完整使用。如果非要在移动端看效果的话,勾选“桌面版网站”)
简单说,任意网站、甚至部分电子邮件(当然你也可以用邮件给别人发链接)都可以用<iframe>嵌入B站的页面,然后设置成透明的。接下来,诱导网站访问者进行点击操作(例如关闭广告,例如某些不可描述的内容),而实际上用户点击的是B站里的关注按钮。此时如果访问者的浏览器中B站是登录状态,就不知不觉中关注了这个特定账号。


用相同的方法似乎还可以进行一些更复杂的操作,例如涉及到钱的充电。因为我并非B站用户就没有做完整的测试了。

这都2020年了,还能见到这种古董级别(2008年被正式提出)的安全漏洞,我只能说感到非常..新鲜。
不过更加诡异的是,b似乎并非没有防范iframe嵌套。b站既有基于csp的设置(已经比X-Frame-Options先进了),也有js的前端判断,但是该防范的问题反而没有防范。

其实这也不是第一次发现b站在iframe方面有坑了。之前还发现过,b站的某个内部播放界面,通过js判断Referrer来只允许被白名单上的网站嵌入或者链接,否则就不加载视频。可同时,这个页面还干了另外一件事情,如果通过UA判断出来是手机浏览器,就跳转到另外一个带mobile的地址。在这个手机版的播放页面再进行相同检查的时候,Referrer自然已经是*.bilibili.com自己了。于是最终效果就是,桌面版确实只有白名单上的网站可以嵌套,但是手机版不管谁嵌套都可以正常播放。这个bug看得我目瞪口呆。
跑题了跑题了。总之呢,点击劫持攻击也不是什么小漏洞了,谁要是有兴趣而且知道该怎么反馈的话可以去反馈反馈,我就不折腾了。我连测试的时候用的b站账号都是临时用代收短信平台搞的(摊手)。
(上一段划掉)
最后还是跑去跟b站提交漏洞了,真香。不过那个哔哩哔哩安全应急响应中心看起来像是个只写了一半的网站。我也不知道提交了有没有人看 = =
后续:
有热心群众转发给了b站的同学。应要求就只文字描述不发图了。回复大意是,这个问题暂时忽略处理,因为业务还需要使用iframe,第一次推进没干得过业务。这个漏洞利用门槛很高,需要引导用户打开恶意链接再进行一系列点击操作,基本是垃圾洞,后面再努力推进一下业务,感谢反馈。
其实我觉得他们的推进可能是想全站禁iframe,那我是业务我也不能接受啊。其实我非常希望b站对视频播放页面的限制再少一点。不过禁止敏感界面被嵌入也不麻烦呀,甚至只是禁止在被嵌入的情况进行关注、充电等敏感操作也不是什么难事。
算了不管了反正他们知道就行。不过我在思考,既然已经尽了告知义务,他们也没打算修并且认为利用门槛很高(这点我不太理解),我小小地利用一下是不是也不过分啊。
