InQL扫描器
2020年3月26日 - Andrea Brancaleoni
InQL现已开源!作为我们持续安全研究的一部分,我们开发了这款内部工具来加速GraphQL安全测试工作。很高兴宣布InQL已在Github上发布。
功能特性
InQL可作为独立脚本或Burp Suite扩展(支持专业版和社区版)使用。该工具利用GraphQL内省查询功能,自动提取查询(queries)、变更(mutations)、订阅(subscriptions)、字段(fields)和参数(arguments),并收集默认及自定义对象信息。这些数据会被处理成HTML和JSON格式的API文档,同时为所有已知类型生成查询模板。
扫描器能识别基础查询类型并将其替换为占位符,使查询模板可直接用于远程API端点测试。结合Burp Repeater的请求发送功能,该特性将大幅降低GraphQL端点漏洞利用的时间成本。
Burp Suite扩展功能
通过inql扩展,您可以:
- 搜索已知GraphQL URL路径
- 检测暴露的GraphQL开发控制台(如GraphiQL、GraphQL Playground等)
- 在含GraphQL的HTTP请求/响应中显示专属标签页
- 通过模板生成功能快速创建Repeater测试请求
- 在设置标签页进行个性化配置
视频标签不支持提示
安装指南
在Burp Suite中使用inql的步骤:
- 下载最新版Jython Jar
- 获取最新版InQL扫描器
- 启动Burp Suite
- 进入Extender > Options > Python Environment设置Jython路径
- 在Extender > Extension中添加Python扩展,选择inql_burp.py文件
- 成功启动后会显示"InQL Scanner Started!“消息
未来我们可能将该扩展整合至Burp的BApp商店。
命令行版本
公开版本我们重构了命令行界面,保留大部分Burp插件功能。现在可通过pip安装:
|
|
支持参数说明:
|
|
实战演示
以anilist.co的GraphQL端点为例:
|
|
该命令会生成包含所有查询、变更和订阅详情的HTML文档。
未来规划
自2018年发布首篇GraphQL安全研究文章以来,我们持续优化测试方法论和工具链。作为常规渗透测试的一部分,我们将继续改进检测能力并提升工具稳定性。该项目凝聚了Doyensec研究团队的心血。
相关技术文章:
- 《InQL v5技术深度解析》2023年8月
- 《Proxy Enriched序列图介绍》2023年2月
- 《那些容易被忽略的GraphQL问题》2021年5月
- 《InQL Scanner v3发布》2020年11月
- 《GraphQL安全概览与测试技巧》2018年5月