原文:https://ysamm.com/?p=684
描述
当Instagram用户授权使用Instagram Basic Display API创建的第三方Instagram应用程序时,返回的访问令牌可用于访问 graph.instagram.com/graphql 端点,该端点允许应用程序的所有者进行查询/更改并绕过给定的API权限或可在某些情况下完全接管该帐户。
繁殖步骤
根据Instagram Basic Display API的文档,任何用户都可以创建一个Instagram应用程序,该应用程序将向用户权限请求,例如user,media。创建后,该应用程序会经Facebook批准。如果应用程序审查成功,则应用程序所有者可以将Instagram用户从其网站重定向到Instagram授权页面,并且如果用户选择使用该应用程序,则他应该收到一个Instagram访问令牌。

生成并返回给网站所有者的访问令牌应该只能访问有限的API端点集,以查询Facebook记录的某些用户信息或媒体。但是,由于最近对API进行了一些更改,因此访问令牌在可以访问更多Graph API的地方生成,例如graph.instagram.com/graphql端点,并且也可以在某些直接导致Facebook.com查询/突变的操作中使用接管Instagram帐户或与其链接的Page / Business帐户的可能性。
最后,解释一下如何滥用它:
–攻击者可以创建一个正常的应用程序,然后开始在其网站中嵌入Instagram应用程序授权请求。由于授权页面仅显示应用程序只能访问有限的权限,因此受害人会接受使用,尽管攻击者可以接管其帐户。
–由于该API允许使用长期访问令牌,因此使用Instagram进行身份验证或为Instagram见解和分析提供服务的网站所有者将拥有庞大的Instagram用户群,他可以以此为目标来获取信息或接管其帐户。当然,由于受害人已经授权了该应用程序,因此不需要受害人进行交互。
概念证明
- 受害者被重定向到https://www.instagram.com/oauth/authorize?app_id=ATTACKER_APP_ID&response_type=code&redirect_uri=https://attacker.website/&scope=user_profile
- 受害者授权第三方Instagram应用程序并接受授予诸如user_profile之类的基本权限
- 攻击者收到access_token并尝试进行GraphQL突变,这将使Instagram帐户与Facebook页面断开连接(给出此示例是因为帐户接管方法更加复杂,并且在以后的错误中仍然可能对我有帮助 )
- https:/ /graph.instagram.com/graphql?access_token=IG_THIRD_PARTY_TOKEN&doc_id=3131323080272171&method=POST
影响
Instagram第三方应用程序访问令牌可用于执行未经授权的更改,这些更改可能导致Instagram帐户被接管或Facebook业务和页面被接管。
根据Facebook的说法,此错误已修复,没有发现滥用的迹象。
时间线
2021年3月15日-报告已发送 2021年
3月18日-Facebook确认2021年4
月14日-Facebook已修复
2021年5月4日-Facebook授予了$ 18K的赏金(包括奖金)
译者按:
Auth2.0时代,由于对Access_Token的保护不到位,导致攻击者通过类似重定向的手段获取AT导致账户接管。
本文迁移自知识星球“火线Zone”