thecybersandeep/graphql-grip
GitHub: thecybersandeep/graphql-grip
一款基于 Burp Suite 的 GraphQL 安全测试扩展,实现模式分析与攻击载荷自动化生成。
Stars: 63 | Forks: 9
# GraphQL Grip
[](https://openjdk.org/)
[](https://portswigger.net/burp)
[](LICENSE)
[](../../releases)
Burp Suite 的 GraphQL 安全测试扩展。从中获取完整模式、识别后端、生成攻击载荷:所有操作均在 Burp 内部完成。
**主标签页:** `Schema Analysis & Testing`
**Repeater 标签页:** `Attack Payload Generator`
## 功能
**模式分析(Schema Analysis)**:执行自省以获取完整模式。如果自省被禁用,则回退到盲重建。同时识别后端类型(Apollo、Hasura、Yoga、graphql-java 等)。
**攻击生成(Attack Generation)**:位于 Repeater 标签页。选择攻击类型、调整参数、点击发送。支持 DoS(别名重载、字段重复、循环查询)、变异滥用、指令探测以及自省绕过技术。
**端点发现(Endpoint Discovery)**:查找 GraphQL 端点并检测暴露的 GraphiQL/Playground 接口。
## 安装
从 [Releases](../../releases) 获取 `graphql-grip-1.0.1.jar`,或从源码构建。在 Burp 中依次选择 **Extensions > Add**,然后导入 JAR 文件。
需要 Burp Suite 2023.12+ 以及 Java 17+。
## 快速开始
**主标签页:** 输入目标 URL,点击 **Scan & Introspect**,浏览模式结构。使用指纹引擎识别底层运行的服务。
**Repeater:** 发送任意 GraphQL 请求到 Repeater,切换到 GraphQL Grip 标签页,选择攻击类型,调整参数,生成载荷并发送。
## 大型模式支持
已在包含 18,000+ 类型的生产 API 上测试。模式树采用懒加载分页(每页 50 项),自省在 UI 线程外运行,模式导入在后台解析。
## 攻击类型
| 类别 | 攻击 |
|------|------|
| DoS | 别名重载、宽度攻击、字段重复、循环自省、片段重载、数组批处理 |
| 变异 | 别名变异、批量变异、混合批量、变异片段 |
| 指令 | @include/@skip 重载、@defer/@stream 探测、指令发现 |
| 信息泄露 | 完整自省、最小化自省、字段建议、__typename 探测 |
| 绕过 | 换行符、制表符、空格、注释、别名、片段、GET 方法 |
## 配置
设置会保留在 Burp 的偏好设置中:
| 设置 | 默认值 | 控制内容 |
|------|--------|----------|
| 别名数量 | 100 | 用于重载攻击的别名数量 |
| 批处理数量 | 10 | 批量攻击中的查询数量 |
| 字段数量 | 500 | 重复字段数量 |
| 指令数量 | 50 | 用于重载的指令数量 |
| 深度数量 | 10 | 自省攻击的嵌套深度 |
| 片段数量 | 50 | 用于重载的片段数量 |
## 引擎识别
指纹识别:Apollo Server、Hasura、GraphQL Yoga、Graphene、graphql-java、Juniper、Sangria、Hot Chocolate、GraphQL PHP、WPGraphQL、AWS AppSync、Ariadne、Strawberry、gqlgen、Dgraph。全部基于启发式规则。
## 模式重建
当自省被阻止时,Grip 会通过错误消息和字段建议进行盲探测以重建模式。
## 从源码构建
需要 Java 17+ 和 Git。
```
git clone https://github.com/thecybersandeep/graphql-grip.git
cd graphql-grip
chmod +x ./gradlew
./gradlew jar
```
Windows:`gradlew.bat jar`
输出:`build/libs/graphql-grip-1.0.1.jar`
## 项目结构
```
src/main/java/com/grip/graphql/
├── GripExtender.java # Burp extension entry point
├── GripCore.java # Core coordinator
├── GripConfig.java # Configuration management
├── api/ # Interfaces
├── editor/ # Repeater tab integration
├── event/ # Event bus system
├── http/ # HTTP client with rate limiting
├── model/ # Data models (schema, types, fields)
├── schema/ # Introspection & reconstruction
├── security/ # Engine fingerprinting
└── ui/ # Main tab & theming
```
## 更新日志
### v1.0.1
大型模式(数千个类型)不再冻结 UI。树结构采用懒加载和异步分页,文件导入在后台解析。
原始请求中的认证头(令牌、Cookie、自定义头)会自动传递到自省和模式标签页的请求中。Host 和 Content-Length 等传输头会被跳过。
修复了标量和枚举返回类型生成空 `{ }` 选择集的问题。现在订阅也会包含参数。发送到 Repeater 和 Intruder 的工作方式与完整原始请求模板一致。
HTTP 客户端限速、超时处理和认证错误检查已清理,不再有重复的头部应用或分散的时间戳跟踪。
图形视图边缘渲染现在采用单次遍历。超过 500 个类型的模式会跳过图形视图以保持响应性。
移除了死代码,修复了编译器警告,清理了未使用的导入和空的 catch 块。
### v1.0.0
初始发布。
## 许可证
MIT。详见 [LICENSE](LICENSE)。
## 免责声明
仅限授权的安全测试。请在测试您不拥有的任何系统前获得许可。
## 作者
[Sandeep Wawdane](https://www.linkedin.com/in/sandeepwawdane/)
**Repeater 标签页:** `Attack Payload Generator`
## 功能
**模式分析(Schema Analysis)**:执行自省以获取完整模式。如果自省被禁用,则回退到盲重建。同时识别后端类型(Apollo、Hasura、Yoga、graphql-java 等)。
**攻击生成(Attack Generation)**:位于 Repeater 标签页。选择攻击类型、调整参数、点击发送。支持 DoS(别名重载、字段重复、循环查询)、变异滥用、指令探测以及自省绕过技术。
**端点发现(Endpoint Discovery)**:查找 GraphQL 端点并检测暴露的 GraphiQL/Playground 接口。
## 安装
从 [Releases](../../releases) 获取 `graphql-grip-1.0.1.jar`,或从源码构建。在 Burp 中依次选择 **Extensions > Add**,然后导入 JAR 文件。
需要 Burp Suite 2023.12+ 以及 Java 17+。
## 快速开始
**主标签页:** 输入目标 URL,点击 **Scan & Introspect**,浏览模式结构。使用指纹引擎识别底层运行的服务。
**Repeater:** 发送任意 GraphQL 请求到 Repeater,切换到 GraphQL Grip 标签页,选择攻击类型,调整参数,生成载荷并发送。
## 大型模式支持
已在包含 18,000+ 类型的生产 API 上测试。模式树采用懒加载分页(每页 50 项),自省在 UI 线程外运行,模式导入在后台解析。
## 攻击类型
| 类别 | 攻击 |
|------|------|
| DoS | 别名重载、宽度攻击、字段重复、循环自省、片段重载、数组批处理 |
| 变异 | 别名变异、批量变异、混合批量、变异片段 |
| 指令 | @include/@skip 重载、@defer/@stream 探测、指令发现 |
| 信息泄露 | 完整自省、最小化自省、字段建议、__typename 探测 |
| 绕过 | 换行符、制表符、空格、注释、别名、片段、GET 方法 |
## 配置
设置会保留在 Burp 的偏好设置中:
| 设置 | 默认值 | 控制内容 |
|------|--------|----------|
| 别名数量 | 100 | 用于重载攻击的别名数量 |
| 批处理数量 | 10 | 批量攻击中的查询数量 |
| 字段数量 | 500 | 重复字段数量 |
| 指令数量 | 50 | 用于重载的指令数量 |
| 深度数量 | 10 | 自省攻击的嵌套深度 |
| 片段数量 | 50 | 用于重载的片段数量 |
## 引擎识别
指纹识别:Apollo Server、Hasura、GraphQL Yoga、Graphene、graphql-java、Juniper、Sangria、Hot Chocolate、GraphQL PHP、WPGraphQL、AWS AppSync、Ariadne、Strawberry、gqlgen、Dgraph。全部基于启发式规则。
## 模式重建
当自省被阻止时,Grip 会通过错误消息和字段建议进行盲探测以重建模式。
## 从源码构建
需要 Java 17+ 和 Git。
```
git clone https://github.com/thecybersandeep/graphql-grip.git
cd graphql-grip
chmod +x ./gradlew
./gradlew jar
```
Windows:`gradlew.bat jar`
输出:`build/libs/graphql-grip-1.0.1.jar`
## 项目结构
```
src/main/java/com/grip/graphql/
├── GripExtender.java # Burp extension entry point
├── GripCore.java # Core coordinator
├── GripConfig.java # Configuration management
├── api/ # Interfaces
├── editor/ # Repeater tab integration
├── event/ # Event bus system
├── http/ # HTTP client with rate limiting
├── model/ # Data models (schema, types, fields)
├── schema/ # Introspection & reconstruction
├── security/ # Engine fingerprinting
└── ui/ # Main tab & theming
```
## 更新日志
### v1.0.1
大型模式(数千个类型)不再冻结 UI。树结构采用懒加载和异步分页,文件导入在后台解析。
原始请求中的认证头(令牌、Cookie、自定义头)会自动传递到自省和模式标签页的请求中。Host 和 Content-Length 等传输头会被跳过。
修复了标量和枚举返回类型生成空 `{ }` 选择集的问题。现在订阅也会包含参数。发送到 Repeater 和 Intruder 的工作方式与完整原始请求模板一致。
HTTP 客户端限速、超时处理和认证错误检查已清理,不再有重复的头部应用或分散的时间戳跟踪。
图形视图边缘渲染现在采用单次遍历。超过 500 个类型的模式会跳过图形视图以保持响应性。
移除了死代码,修复了编译器警告,清理了未使用的导入和空的 catch 块。
### v1.0.0
初始发布。
## 许可证
MIT。详见 [LICENSE](LICENSE)。
## 免责声明
仅限授权的安全测试。请在测试您不拥有的任何系统前获得许可。
## 作者
[Sandeep Wawdane](https://www.linkedin.com/in/sandeepwawdane/)标签:API安全, Apollo, Burp Suite, Burp Suite 2023.12, C2日志可视化, DoS攻击, GraphiQL, GraphQL, GraphQL后端识别, Hasura, Java 17, JSON输出, JS文件枚举, Playground, Schema分析, Web安全, 内省查询, 内省绕过, 别名过载, 变更滥用, 域名枚举, 字段重复, 安全测试, 开源安全工具, 循环查询, 扩展插件, 指令探测, 指纹识别, 接口探测, 攻击性安全, 攻击载荷生成, 蓝队分析, 逆向工程平台