查看原文
其他

看我如何控制任意 Instagram 账户并赢得3万美元奖励

Laxman Muthiyah 代码卫士 2022-04-06

 聚焦源代码安全,网罗国内外最新资讯!

编译:奇安信代码卫士团队

作者阐述了自己如何利用 Instagram 中的一个漏洞,在无需用户同意的情况下黑掉任意 Instagram 账户。Facebook Instagram 安全团队随后修复问题并奖励作者3万美元。

Facebook 公司一直在致力于改进所有平台的安全控制,比如他们最近提高了对所有严重漏洞的奖励金如账户控制漏洞。因此我决定在 Facebook 和 Instagram 上碰碰运气。想不到还真在 Instagram 上找到了一个漏洞。

在查找账户接管漏洞时,我首先想到的是 Instagram 的“忘记密码”端点。我尝试在 Instagram web 接口上重置密码,但基于链接的密码重置机制非常强大,测试几分钟后我一无所获。

之后尝试移动恢复流,结果发现了可疑行为:当用户输入移动手机号码时,就会在手机上收到六位验证码。用户更改密码时必须输入该验证码,因此如果我们能够在验证码端电上尝试所有的100万个验证码,那么就能更改任意账户的密码。但我敢肯定应该存在针对此类暴力攻击的次数限制。我决定放手一搏。

如我所料,还真是存在次数限制规定。我大概发送了1000个请求,其中250个通过而剩下的750次受限。我又重试了1000次,结果多数受限。这说明系统在进行验证,而请求次数受到控制。

不过有两点我没想明白,请求数量和缺乏黑名单机制。我能继续发送请求且未受到拦截,即使在某短时间内发送的请求数量是受限的。

经过几天的测试后,我发现可通过竞争危险 (Race Hazard) 和 IP 轮换 (IP rotation) 来绕过次数限制机制。

竞争条件就不多说了。使用多个 IP 发送并发请求可使我不受限制地发送大量请求。我们能够发送的请求数量取决于请求的并发性和使用的 IP 数量。同时我发现验证码的有效期是10分钟,从而增加了攻击难度,也就是说我们需要数千个 IP 来执行攻击。

之后我将问题告知Facebook 安全团队,但最开始因为漏洞报告中缺少信息,他们无法复现该问题。不过经过几封邮件的沟通以及 PoC 视频,我说服他们称攻击是可行的。

PoC

请求验证码:

POST /api/v1/users/lookup/HTTP/1.1
User-Agent: Instagram 92.0.0.11.114 Android (27/8.1.0; 440dpi; 1080×2150;Xiaomi/xiaomi; Redmi Note 6 Pro; tulip; qcom; en_IN; 152830654)
Accept-Language: en-IN, en-US
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept-Encoding: gzip, deflate
Host: i.instagram.com
Connection: keep-alive

q=mobile_number&device_id=android-device-id-here


受害者将收到验证码并在10分钟内过期。

验证验证码:

POST/api/v1/accounts/account_recovery_code_verify/ HTTP/1.1
User-Agent: Instagram 92.0.0.11.114 Android (27/8.1.0; 440dpi; 1080×2150;Xiaomi/xiaomi; Redmi Note 6 Pro; tulip; qcom; en_IN; 152830654)
Accept-Language: en-IN, en-US
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept-Encoding: gzip, deflate
Host: i.instagram.com
Connection: keep-alive

recover_code=123456&device_id=android-device-id-here


现在我们需要做的就是使用多个 IP 地址来暴力攻击该端点。在限制范围内我大概能发送200个请求。

在测试中我使用了1000个不同的机器(轻易实现并发)和 IP 地址发送了20万个请求(100万概率的20%)。

发送20万个请求

在真实的攻击场景中,攻击者需要5000个 IP 才能黑掉一个账户。听起来要求较高但实际上如果使用了云服务提供商的话就比较容易了。执行完整的100万个验证码攻击的成本大概是150美元。

可参见原文链接,观看演示视频。

Facebook 安全团队看过发送20万个有效请求的视频后认同了我的报告,而且很快修复了该问题。

补丁修复后,我收到了Facebook 漏洞奖励计划发放的3万美元奖励。

 



推荐阅读

Instagram遭受严重攻击 600万名人的个人详情在DoxaGram网站出售

Facebook 被曝明文存储数百万 Instagram 用户信息



原文链接

https://thezerohack.com/hack-any-instagram#articlescroll






题图:Pixabay License




本文由奇安信代码卫士编译,不代表奇安信观点,转载请注明“转自奇安信代码卫士 www.codesafe.cn”。



奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的产品线。



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存