GraphQL漏洞利用技术 | 金融科技漏洞赏金系列第2部分

GraphQL漏洞利用技术 | 金融科技漏洞赏金系列第2部分

在提交了第1部分发现的漏洞报告后,我有机会与技术团队交流并获取内部信息:存在一个我尚未发现的移动端专用服务。

APK逆向分析

我首先在手机上安装了Lucky Patcher,这款应用可以备份手机已安装应用的APK文件。虽然可能有更好的工具,但这个老习惯我已保持了十年。将APK传输到电脑后,使用Apktool进行反编译:

sudo apt install apktool
apktool d <apk文件>

反编译后在Visual Studio中搜索银行域名,意外发现他们使用了次级域名(如production.medium.com),这解释了为何之前没找到移动后端服务。

子域名探测

通过Security Trails工具(避免使用模糊测试),我发现了开发(development)和测试(testing)环境子域名。这两个环境均运行着GraphQL Playground实例。

GraphQL Playground利用

虽然Playground本身不是漏洞,但通常意味着启用了内省查询(Introspection Query)。这种查询能获取服务所有可用查询、变更和数据类型的定义,相当于JSON:API中的GET /schema端点。

在Playground的文档部分已包含充足信息,但必要时可执行以下内省查询:

query IntrospectionQuery {
  __schema {
    queryType { name }
    mutationType { name }
    subscriptionType { name }
    types { ...FullType }
    directives {
      name
      description
      locations
      args { ...InputValue }
    }
  }
}
# 后续片段省略...

通过Burp等工具拦截响应,可在公共Playground网站可视化分析接口。

漏洞发现

分析后发现两个问题:

  1. 开发/测试环境:存在可获取所有用户数据的未授权查询(泄露开发者和客户个人信息)
  2. 生产环境:存在可验证邮箱/手机号是否注册的查询(PII泄露)

结果

这三个漏洞(2个高危,1个低危)均获得赏金。此外还发现需要认证的可疑查询/变更,这将是下篇文章的内容。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码

posted @ 2025-07-12 18:01  qife  阅读(28)  评论(0)    收藏  举报