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网站可视化分析接口。
漏洞发现
分析后发现两个问题:
- 开发/测试环境:存在可获取所有用户数据的未授权查询(泄露开发者和客户个人信息)
- 生产环境:存在可验证邮箱/手机号是否注册的查询(PII泄露)
结果
这三个漏洞(2个高危,1个低危)均获得赏金。此外还发现需要认证的可疑查询/变更,这将是下篇文章的内容。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码


浙公网安备 33010602011771号