Facebook账户接管漏洞

2021-09-14 10:26:33 浏览数 (1)

在漏洞挖掘方面,我更喜欢apps而不是web。

我下载了一堆不同版本的FB和Messenger APK,收集了所有的端点,对它们进行了分类并进行了检查。

在这个过程中,我遇到了一个有趣的端点,名为:

POST auth/flashcall_account_recovery

该端点需要3个参数

cuid, encrypted_phone_numbers & cli

CUID基本上意味着加密的电子邮件/电话,很容易找到。只需将受害者的电子邮件提供给

POST /recover_accounts

而作为回应,你会得到CUID。

第二,在浏览Facebook的密码恢复流程时。

我注意到,在负责发送FB OTP代码的端点中,有一个参数名为。

should_use_flash_call=false

如果它是false,你会在你的手机中收到一个OTP短信,如果设置为true,你会收到一个电话,而不是OTP来恢复账户。而在响应中,它包含了所需的加密的电话号码。

我无法弄清楚cli是什么。我想到的唯一东西是cli~命令行界面。由于想不出来,我就提供了null值来代替。当提出请求时。我收到了属于该用户的用户ID,我提供的CUID是其电子邮件值。这意味着攻击者可以提供任何人的电子邮件/电话作为CUID,而在回应中他完全可以确定该电子邮件是属于谁的。

所以我开始通过阅读smali文件来分析这个恢复流程是如何工作的。

端点的工作方式如下。

1.我输入我的电子邮件/电话。2.选择电话恢复选项。3.我收到一个电话。4.该电话号码将自动提供给端点

POST /flash_call_recovery

cuid=x&enc_phone=x&cli= 1xxxxx

实际上在cli参数中,我们应该提供在步骤3中接收电话的电话号码。现在,这一切都明白了为什么它被称为电话恢复。我猜cli的意思是类似于来电识别的东西。在一个理想的情况下,当提供了所有的有效值后,我们会收到以下的响应。

{“id”:”UserID”,”nonce”:”XXXX”,"skip_logout_pw_reset":""}

这个nonce值充当一个OTP代码,然后被提供给OTP验证端点。OTP验证端点负责验证nonce并设置新密码

POST /flash_call_recovery中,我最初测试将受害者的CUID提供给另一个用户的有效CLI是否会起作用,但它没有。我试着到处翻转每个参数,但没有一个管用。现在,我剩下的唯一选择就是暴力破解cli。考虑到FB对速率严格限制,因为它甚至对非认证端点实施了速率限制,我对此几乎不抱任何希望 但令我绝对吃惊的是,它在这个端点上没有实施速率限制。

因此,攻击的过程是这样的:用户在Flashcall恢复端点中提供受害者的CUIDenc_phone_number。对Cli进行暴力攻击 从响应中收到nonce在OTP验证端点中提供nonce,并为受害者的账户设置一个新的密码。以下视频演示了默认电话帐户恢复过程的工作原理。

视频内容

0 人点赞