扫码领资料
获网安教程
来Track安全社区投稿~
赢千元稿费!还有保底奖励~(https://bbs.zkaq.cn)
在进行漏洞挖掘时,我更偏好使用移动应用而非网页,因此在一月份我决定深入研究APK接口,希望能找到一些有价值的内容。
我下载了多个不同版本的Facebook和Messenger APK,提取了所有接口,进行了分类并逐一查看。
在这个过程中,我发现了一个有趣的接口,名为:
POST auth/flashcall_account_recovery
该接口需要三个参数: cuid
、encrypted_phone_numbers
和 cli
。
CUID基本上是指加密后的电子邮件/电话,可以很容易找到。只需提供受害者的电子邮件,
POST /recover_accounts
在响应中,你将获得 CUID。
其次,在查看 Facebook 的密码恢复流程时,我注意到用于发送 Facebook OTP 代码的接口中有一个名为:
should_use_flash_call=false
如果该参数设置为 false
,用户将收到一条 OTP 短信;如果设置为 true
,则会收到一个电话以进行账户恢复。
在响应中,包含了所需的加密电话号码。
我无法确定 cli
参数的具体含义,当时唯一想到的是 “cli~command line interface”。
无法确定后,我尝试使用 null
值作为参数。
当我发送请求时,成功接收到与提供的 CUID 对应的用户 ID。
这意味着攻击者可以提供任意邮箱或手机号作为 CUID,并精确确定该邮箱的所属用户。
我很快提交了报告,问题在一天内被评估和修复。
出于好奇,我深入研究了这个端点,因为我从未使用过“电话恢复”功能来重置密码。
在我的界面上看不到此功能,在Google和YouTube上也找不到关于该恢复流程的相关信息。
于是我开始阅读smali文件,试图分析这一恢复流程的工作方式。
该端点的工作方式如下:
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 验证端点。nonce
并设置新密码。POST /flash_call_recovery
中,我最初测试了使用受害者的 cuid
和另一个用户的有效 cli
是否可行,但结果并不奏效。cli
进行暴力破解。cuid
和 enc_phone_number
。cli
进行暴力破解。nonce
。nonce
提供给 OTP 验证端点,并为受害者的账户设置新密码。References
[1]
🤦♂️: https://emojipedia.org/man-facepalming/声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。
原文始发于微信公众号(白帽子左一):漏洞挖掘 | Facebook电子邮件泄露和账户接管
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论