InQL Scanner:GraphQL安全测试利器

InQL是一款专为GraphQL安全测试设计的工具,可作为独立脚本或Burp Suite扩展使用。它通过内省查询自动生成API文档、查询模板,并集成到Burp Repeater中,显著提升GraphQL端点漏洞检测效率。

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的步骤:

  1. 下载最新版Jython Jar
  2. 获取最新版InQL扫描器
  3. 启动Burp Suite
  4. 进入Extender > Options > Python Environment设置Jython路径
  5. 在Extender > Extension中添加Python扩展,选择inql_burp.py文件
  6. 成功启动后会显示"InQL Scanner Started!“消息

未来我们可能将该扩展整合至Burp的BApp商店。

命令行版本

公开版本我们重构了命令行界面,保留大部分Burp插件功能。现在可通过pip安装:

1
pip install inql

支持参数说明:

1
2
3
用法: inql [-h] [-t 目标URL] [-f JSON模式文件] [-k API密钥] [-p 代理地址]
           [--header 请求头] [-d] [--generate-html] [--generate-schema]
           [--generate-queries] [--insecure] [-o 输出目录]

实战演示

以anilist.co的GraphQL端点为例:

1
$ inql -t https://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月
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计