InQL——GraphQL 安全测试的 Burp 扩展

nQL v5.0 – 用于高级 GraphQL 测试的 Burp 扩展

Doyensec 研究岛
GitHub
GitHub 版本(按日期排序)
GitHub 发布日期
GitHub 里程碑
dev 分支前进
GitHub 贡献者
GitHub 按标签发布问题
GitHub 按标签发布问题
图片[10]-InQL——GraphQL 安全测试的 Burp 扩展

🚀 简介

欢迎使用 InQL v5.0,这是我们开源 GraphQL 测试工具的一次重大更新。此版本提供了新功能和改进功能,旨在增强您的 GraphQL 测试能力,使其更加高效、有效。

感谢您对 InQL 的信任。祝您测试愉快!

⚠️重大更新和重大变更

我们对 InQL v5.0 的某些方面进行了战略性修改,导致 v4 中的一些功能被弃用。值得注意的是,独立模式和 CLI 模式、嵌入式 GraphiQL 服务器和计时器选项卡不再可用。

这种精简使我们能够专注于完善 InQL 的核心功能,尽管我们认识到它可能会影响您已建立的工作流程。这一点尤其重要,因为其中一些功能在著名的Black Hat GraphQL书中得到了重点介绍。

我们的目标是在即将推出的 v5.1 版本中实现与 v4 完全相同的功能。在此期间,请考虑使用最新的v4.0.7 版本或从v4 分支构建 InQL 。

❗ GQLSpection – 独立模式和 CLI 模式的后继者

为了简化我们的代码库,InQL v5.0 中已删除了允许在 Burp 之外使用 InQL 的独立模式CLI 。这些功能现在捆绑在GQLSpection中,GQLSpection 是一个多用途 CLI 工具和 Python 2/3/Jython 兼容库。

GQLSpection 有助于发送自省查询、解析结果、生成查询和变异以及执行兴趣点搜索。

❗ 弃用“计时器”选项卡

InQL v4 中的Timer选项卡已在 v5.0 中停用,因为 Burp 的内置Logger工具提供了更准确、更全面的可视化查询执行时间的替代方案。以下是使用 Burp 的Logger的快速指南:

  • 输入 GraphQL 端点作为您的搜索词。
  • 显示“开始响应计时器”“结束响应计时器”列。
    • 结束响应计时器:这表示服务器完全返回响应所需的时间。它反映了已弃用的“计时器”选项卡提供的数据,但更精确。
    • 启动响应计时器:这表示服务器在开始发回响应之前处理响应所花费的时间,这是 DoS 条件的一个关键指标。

❗ GraphiQL 和循环关系检测

由于时间限制,这些功能暂时不会出现在 v5.0 版本中。不过,我们致力于在 v5.1 中重新引入它们。

🌟 功能

InQL 用户界面配备两个主要组件:扫描仪攻击者

扫描仪是InQL v5.0 的核心,您可以在其中分析 GraphQL 端点或本地自省架构文件。它会自动生成所有可能的查询和变更,并将它们组织成结构化视图以供您分析。

✅ 可定制的扫描

InQL v5.0 可让您灵活地自定义扫描。调整生成的查询的深度或用于缩进的空格数。您还可以执行“兴趣点”扫描来检测 GraphQL 架构中的潜在漏洞。

✅ 兴趣点分析

运行兴趣点扫描后,您将获得涵盖各种潜在漏洞的丰富数据集。您可以根据需要启用或禁用这些类别。

✅ 增强与 Burp 的交互

InQL v5.0 与 Burp 无缝集成,使您能够直接从 Burp 中的任何 GraphQL 请求生成查询。您还可以将自动生成的查询发送到其他 Burp 工具进行进一步分析。

✅ 自定义标题

您可以为每个域设置自定义标头,并根据观察到的流量自动填充域列表。

攻击者组件允许您运行批量 GraphQL 攻击,这对于规避实施不当的速率限制很有用。

📝 Burp 的原生消息编辑器

Burp 的原生消息编辑器现在带有一个额外的“GraphQL”选项卡,提供了一种查看和修改 GraphQL 请求的有效方法。

图像

⬇️ 安装

要成功安装 InQL v5.0,请确保满足以下要求:

打嗝:

  • 仅支持最新版本的 Burp。
  • 兼容“专业版”和“社区版”。

Java:

  • Montoya API 需要 Java 17 或更高版本。

💻 从 git 构建 InQL 扩展

  1. 安装 Java 17+,例如在基于 Debian 的发行版中:
$ sudo apt install -y openjdk-17-jdk
$ java --version
openjdk 17.0.6 2023-01-17
  1. 克隆 repo 并拉取子模块:
$ git clone https://github.com/doyensec/inql
$ cd inql
$ git checkout dev
$ git submodule init
$ git submodule update
  1. 构建 InQL 扩展:
$ ./gradlew

将文件build/InQL.jar作为 Java 扩展加载到 Burp 中。

🛠️ 设置开发环境

按照上述方法构建 InQL 后,您可以准备开发环境。

首先使用 Python 2.7 设置虚拟环境以实现 Jython 兼容性。请注意,使用 pip 构建库需要必要的标头。例如,使用 virtualenv:

$ sudo apt install -y python2.7 python2.7-dev python2-setuptools-whl python2-pip-whl python3-virtualenv
$ virtualenv -p python2.7 ./venv/

使用venvpyenv等也可以。

设置好 venv 后,激活它并安装开发要求:

$ . ./venv/activate
$ pip install -r requirements_dev.txt

从子模块安装 GQLSpection(作为开发库,因此您可以直接编辑它):

$ pip install -e lib/GQLSpection/

安装预提交脚本以在每次提交之前自动运行检查:

$ pre-commit install

现在,每次提交时都会运行一系列测试,包括 isort 和 pylint。但是,如果有必要,它还会更改文件,并在这种情况下取​​消提交以供您检查。因此,请务必检查发生了什么,手动添加更改(git add)并再次运行git commit(因为原始提交未通过)。

您的环境已准备好开发 InQL!请注意,GQLSpection 需要自己的设置。哦,如果 GQLSpection 子模块过期,您会在 中看到一条有关它的消息git status。通过运行来修复它:

$ git submodule update

(这也可以在需要时通过修改自动完成~/.gitconfig

国内下载链接

© 版权声明
THE END
喜欢就支持一下吧
点赞23 分享