InQL v6.1.0 重磅发布:新功能与贡献者专属好礼来袭!

本文详细介绍了InQL Scanner v6.1.0的新特性,包括GraphQL模式暴力破解器、服务器引擎指纹识别、自动变量生成功能,以及一系列性能和可用性改进,旨在提升安全研究人员对GraphQL API进行测试的效率和深度。

InQL v6.1.0 重磅发布:新功能与贡献者专属好礼来袭!

02 Dec 2025 - 作者 Bartek Górkiewicz

引言

我们很高兴地宣布我们的 Burp Suite 扩展——InQL v6.1.0——的新版本发布了!我们先前版本(v6.0.0)中从 Jython 到 Kotlin 的完全重写为我们开始实施强大的新功能奠定了基础,而这次更新带来了第一批激动人心的特性。

这个新版本引入了关键功能,例如我们新的 GraphQL 模式暴力破解器(它利用了"你是不是想找…“建议)、服务器引擎指纹识别器、在发送请求到 Repeater/Intruder 时的自动变量生成,以及各种其他的生活质量和性能改进。

关键新功能

GraphQL 模式暴力破解器

到目前为止,当服务器启用了自省功能,或者当您已经拥有 GraphQL 模式文件时,InQL 最为有用。随着 v6.1.0 版本的发布,该工具现在可以通过滥用许多 GraphQL 服务器实现所支持的"你是不是想找…“建议,尝试重建后端模式。

这个功能的灵感来源于出色的 CLI 工具 Clairvoyance。我们实现了一个类似的算法,同样基于正则表达式和批量查询。将此功能直接构建到 InQL 中,使其更进一步成为 GraphQL 安全测试的一站式瑞士军刀,让研究人员能够在一个地方访问他们需要的所有工具。

工作原理 当 InQL 因为自省功能被禁用而无法获取模式时,您现在可以选择"启动模式暴力破解器”。然后,该工具将开始发送数百个批量查询,其中包含从单词表中猜测的字段和参数名称。

接着,InQL 通过查找特定的错误信息(例如 Argument 'contribution' is requiredField 'bugs' not found on type 'inql')来分析服务器的错误信息。它还会解析有用的建议,例如 Did you mean 'openPR'?,这大大加快了发现速度。同时,它通过有意触发类型特定的错误信息来探测找到的字段和参数的类型(例如 StringUser[Episode!])。

这个过程会重复进行,直到整个可访问的模式被映射出来。其结果是,通过服务器自身的验证反馈,一点一点地重建出模式。所有这些都不需要自省功能。

请注意,扫描可能需要时间。根据模式的复杂性、服务器速率限制和单词表的大小,完整的重建可能需要从几分钟到几个小时不等。我们建议访问 InQL 设置选项卡,为您的特定目标正确设置扫描。

您的浏览器不支持 video 标签。

GraphQL 服务器引擎指纹识别器

新版本的 InQL 现在能够识别后端服务器使用的 GraphQL 引擎。每个 GraphQL 引擎实现的安全保护和默认不安全设置略有不同,这为滥用独特的、特定于引擎的攻击向量打开了大门。

识别出的引擎可以在 Nick Aleks 的 GraphQL 威胁矩阵中查找。该矩阵是确认哪种实现可能容易受到特定 GraphQL 威胁的绝佳资源。

工作原理 与 CLI 工具 graphw00f 类似,InQL 向目标服务器发送一系列特定的 GraphQL 查询,并观察其如何响应。它可以通过分析错误信息和响应中的独特细微差别来区分具体的引擎。

例如,对于以下查询:

1
2
3
query @deprecated {
    __typename
}

一个 Apollo 服务器通常会响应一条错误信息,内容为 Directive "@deprecated" may not be used on QUERY.。然而,一个 GraphQL Ruby 服务器会响应 '@deprecated' can't be applied to queries 的信息。

当 InQL 成功识别出引擎时,它会基于 GraphQL 威胁矩阵的数据在 UI 中显示其实现的详细信息。

您的浏览器不支持 video 标签。

自动变量生成(默认值)

虽然以前的 InQL 版本在分析模式、查找循环引用和识别兴趣点方面很出色,但实际构建一个有效的查询可能会令人沮丧。该工具不处理变量,迫使您手动填充它们。新版本终于解决了这个痛点。

现在,当您在需要变量的查询(例如类型为 String 的搜索参数)上使用"发送到 Repeater"或"发送到 Intruder"时,InQL 将自动用占位值填充请求。这个简单的改变显著提高了测试 GraphQL API 的速度和流畅性。

以下是 InQL 现在将使用的默认值:

  • "String" -> "exampleString"
  • "Int" -> 42
  • "Float" -> 3.14
  • "Boolean" -> true
  • "ID" -> "123"
  • ENUM -> 第一个值

可用性与性能改进

我们还实施了各种可用性和性能改进。这些更改包括:

  • 在 InQL Scanner 选项卡内以及 Repeater/Intruder 中进行搜索
  • 改进的 POI 正则表达式匹配
  • 改进了缓存以获得更好的性能
  • 添加了延迟的 POI 和循环检测以提高模式解析速度
  • 修复了各种 Bug 和 UI 问题

加入 InQL 社区(并获得专属好礼!)

InQL 是一个开源项目,我们欢迎每一个贡献。我们想借此机会感谢社区迄今为止的所有支持、错误报告和反馈!

随着这个新版本的发布,我们很高兴地宣布一项新的举措,以奖励贡献者。为了表达我们的感谢,我们将向修复问题或创建新功能的社区成员发送 Doyensec 专属好礼和/或礼品卡。

我们希望看到您贡献的一些"好的首个问题"包括:

  • 添加以非标准格式发送 GraphQL 请求的功能 #124
  • 可自定义的输入参数值 #113
  • 添加导出到 JSON / CSV 的功能 #169
  • 跨 InQL Scanner 选项卡搜索 #68
  • 从 Burp History 中跟踪 GraphQL 操作(当自省未启用时)#170

如果您对新功能有想法或发现了错误,请在开始构建之前打开一个新议题进行讨论。这有助于每个人达成共识。

我们迫不及待地想看到您的拉取请求!

结语

正如我们提到的,我们对这个新版本以及 InQL 的发展方向感到非常兴奋。我们希望看到来自不断增长的网络安全社区的更多贡献,并迫不及待地想看到未来的发展!

记得更新到最新版本,并查看我们在 GitHub 上的 InQL 页面。

祝您黑客测试愉快!

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计