背景介绍:
本次故事来自国外一位名叫Shubham Bhamare 的白帽子,如何在受害者不知情的情况下将任意无主手机号码添加到我的个人Facebook账户中?白帽小哥凡尔赛的说这非常简单!废话不多说,让我们来看看他是怎么做到的。
复现步骤:
第一步:在子域d.facebook.com中使用受害者的手机号码创建一个新的Facebook账号
第二步:成功创建账户后,执行一些操作(比如向随机的人发送好友请求、发布多条评论等),这样Facebook就会用阻止你进一步的活动,并显示以下界面:
第三步:单击Continue按钮并完成验证码验证,这时你会被重定向到下面的界面,在此处你必须输入相同的受害者手机号码(在此之前曾使用该号码创建过新的Facebook帐户)
第四步:输入受害者的手机号码,然后点击发送按钮,你将被重定向到下面的界面,在此必须输入动态口令(OTP):
第五步:此时如果在这里进行爆破,你会发现速率限制完全失效,这样就可以确认任意无主的手机号码了
为了测试这个漏洞,白帽小哥尝试了5000+次的Payloads发送,虽然系统没有阻拦,但是在5000+次请求之后,白帽小哥能够使用有效的Payload确认无主的手机号码
白帽小哥首先在Facebook的主域上测试该漏洞,但很难实现。因此小哥在最喜欢的子域d.facebook.com上进行测试(其他子域如m.facebook、x.facebook、mbasic.facebook、touch ch.facebook、ihone.facebook同样易受攻击)
背后的故事:
2019年7月17日(白帽小哥报道这一问题的时候),并没有寻找漏洞的心情,只是在Facebook上浏览一些表情包页面,那时候他在想应该开设自己的表情包页面来赚取一些被动收入,于是使用他的另一个手机号码创建了一个新的Facebook账户。
但在一些操作之后,由于手机号码没有得到验证,Facebook屏蔽了他,并要求确认他的手机号码,这时候白帽小哥心想,为什么不在这里使用一下爆破呢?💥 速率限制在这里完全不见了!
漏洞处理时间线:
2019年7月17日,漏洞报告提交
2019年7月22日,漏洞审核
2019年7月26日,审核通过并分类
2019年7月27日,漏洞缓解措施
2019年8月1日,漏洞完全修复
2019年8月12日,获得5000美元奖励
经验之谈:
- 在浏览网页时(即使你没有找漏洞的心情),一定要观察事物是否按预期在执行
- 尝试绕过你的每一个发现,即使你不能绕过它,你也会学到一些新东西(在本案例中,作者学习到了如何变换IP)