跨站Websocket Hijacking漏洞导致的Facebook账号劫持
作者在测试Facebook的近期推出的某个新应用中(出于保密原因此处不便公开),存在跨站Websocket Hijacking漏洞,攻击者利用该漏洞可以劫持使用该新应用的用户Websocket 连接,之后构造恶意的Websocket信息,可实现对目标受害者的Facebook账号劫持。
因为该项Facebook新近推出的应用还处于测试阶段,只有少数安全人员可以受邀进行访问测试,所以以下漏洞解释中已对应用名称进行了隐匿,且暂不提供相关的漏洞利用代码。
漏洞原因
但当测试授权机制的另一个bug时,我发现了一个变化,按之前的分析来看,授权机制也应该用随机数来验证登录,但此处却开始用了用户的Facebook全局Cookie来验证用户身份。
漏洞复现
1、为了更好的说明利用,我访问REDACTED.facebook.com,然后保存主页,这里要连同其中处理websocket通信的Javascript脚本文件一起保存。因为Websocket通信消息是加密的,且这里的Javascript脚本文件是经过编码的,有些难懂,且在后续的攻击利用中要用到其中一些稍作修改的Javascript脚本文件。之后,我用包含这些修改的Javascript脚本文件启动了一个HTTP服务;
2、利用上述启动的http服务,我向同一网段的受害者发送了一个恶意链接之后,其中涉及的脚本会与REDACTED.facebook.com服务端建立起一个Websocket连接,然后会在登录阶段的身份验证时需要用到用户的Cookie信息(由于Websocket不受限于SOP或CORS策略,所以这对本地IP来说是可行的)
3、作为POC测试,受害者在访问了上述包含有本地IP的恶意链接之后,就会看到自己成功登录到了Facebook账户,而在Javascript脚本文件中,却包含了一个攻击Payload,可以当受害者登录成功后向攻击者发送一个特定的websocket,以进行Facebook账户的绑定邮箱或手机号的添加,以此实现对受害者Facebook账户的劫持。该攻击针对安卓手机APP用户亲测有效,iOS中未测试过。
漏洞上报和处理进程
2019.12.10 漏洞初报
2019.12.10 Facebook确定漏洞有效
2019.12.17 Facebook修复漏洞
2020.1.2 Facebook奖励了 12,500$
*参考来源:ysamm,clouds 编译整理,转载请注明来自 FreeBuf.COM
精彩推荐