vigolium/burp-vigolium

GitHub: vigolium/burp-vigolium

一款将 Burp Suite 流量深度对接至 Vigolium 安全扫描引擎的扩展,支持双向同步、多种扫描调度及结果管理。

Stars: 5 | Forks: 0

# Vigolium Burp Suite 扩展 一款 Burp Suite 扩展,用于将 HTTP 流量发送至 Vigolium 安全扫描引擎、查看生成的扫描结果,以及进行双向流量同步。它支持从 Burp 进行显式调度、自动 Proxy 转发、Target Site map 快照,以及用于 CLI 和服务器集成的可选的、仅限环回(loopback-only)的实时桥接。 - **版本:** `0.2.0` - **GitHub:** [github.com/vigolium/vigolium](https://github.com/vigolium/vigolium) - **文档:** [docs.vigolium.com](https://docs.vigolium.com/) - **官网:** [www.vigolium.com](https://www.vigolium.com/) | Vigolium Burp 集成 1 | Vigolium Burp 集成 2 | |:---:|:---:| | ![Vigolium Burp 集成 1](https://static.pigsec.cn/wp-content/uploads/repos/cas/50/50933e5e948fbd0869a6886598d4cd29adec9afabcca375b69dd4d27a2b7ba0a.png) | ![Vigolium Burp 集成 2](https://static.pigsec.cn/wp-content/uploads/repos/cas/80/80d0d390bcf6c4d085dc2d811b66ae32837d90019959a7b0d26aea67bb4af9bc.png) | | ![Vigolium Burp 集成 3](https://static.pigsec.cn/wp-content/uploads/repos/cas/38/38c7e25eb55efbd1540cc31b1286715a650f42341708dd25a3db2a3d97e49cb6.png) | ![Vigolium Burp 集成 4](https://static.pigsec.cn/wp-content/uploads/repos/cas/bc/bc78d4a068a180f72363ab188b1d3ec550058e7dd129e12112b8834825e3de40.png) | ## 架构 ``` Selected or Proxy traffic ──► Vigolium Extension ──► Vigolium API ──► Scan Engine ▲ │ └──── Records ◄──────┘ Burp Target Site map ── snapshot upload ───────────► Vigolium API Vigolium CLI/server ◄── loopback live bridge ────► Burp Proxy history / Site map ``` ## 功能特性 - **三种调度工作流** — 将选定的 Burp 流量发送至摄取 (ingestion)、原生扫描 (native scan) 或 Agentic 扫描 (agentic scan) - **直接上下文菜单操作** — 无需打开嵌套菜单,即可直接从 Proxy History、Target Site map、Repeater 以及其他受支持的 Burp 请求视图中进行调度 - **Proxy 模式** — 根据可配置的包含、排除和范围内 (in-scope) 规则自动转发 Proxy 流量 - **Target Site map 快照** — 使用 `Ctrl+Alt+S` 按需同步当前的 Target Site map,或按可配置的时间间隔自动同步 - **双向实时桥接** — 通过可选的、仅限环回的监听器,从 Vigolium 查询实时的 Burp 历史记录,或将 Vigolium 流量复制到 Burp 的 Target Site map 中 - **Findings 工作流** — 过滤和排序 findings,在多个证据标签页之间切换,在 Burp 编辑器中检查消息,展开查看完整描述,并将完整的 finding 复制为 Markdown - **HTTP 记录工作流** — 在查看已存储的请求和响应记录时,支持对每个数据列进行过滤、分页和排序 - **扫描追踪** — 通过一致的工具栏、分页、刷新控制和日志视图来审查原生扫描和 Agentic 扫描 - **键盘驱动刷新** — 在任何记录视图中使用 `Ctrl+Alt+R` 激活其“刷新”按钮 - **集成诊断** — 测试 Vigolium 服务器和本地 Bridge 连接,检查请求计数器,并在 Logs 标签页中跟踪活动情况 ## 标签页 | 标签页 | 用途 | |-----|---------| | **Findings Records** | 可搜索和排序的 findings、证据标签页、请求/响应编辑器、描述以及 Markdown 复制功能 | | **HTTP Records** | 与 Vigolium 同步的、可过滤和排序的请求/响应记录 | | **Scanning Records** | 原生和 Agentic 扫描历史、分页、自动刷新和扫描日志 | | **Bridge** | Target Site Map 快照、实时环回监听器、Proxy 转发和过滤规则 | | **Settings** | 扩展版本、服务器连接、扫描选项、请求统计和可配置的热键 | | **Logs** | 带有时间戳的活动日志 (INFO/WARN/ERROR) | ## 技术栈 | 组件 | 选择 | |-----------|--------| | Burp API | Montoya API | | 构建 | Gradle (Kotlin DSL) + Shadow plugin | | Java | 21 | | HTTP Client | OkHttp | | JSON | Gson | ## 安装说明 从 [burp-vigolium.jar](https://github.com/vigolium/burp-vigolium/blob/main/burp-vigolium.jar) 下载预构建的 jar 包,并通过 Burp 的 **Extensions > Add** 加载它。 加载扩展后: 1. 打开 **Vigolium → Settings**。 2. 在 Server Connection 行中输入 Vigolium 的 **Server URL** 和 **API Key**。 3. 选择 **Test Connection** 并确认服务器可达。 4. 使用 Burp 上下文菜单操作或配置的快捷键之一来发送流量。 已安装的扩展版本显示在 Settings 视图的右上角。正式发布版本从 JAR 清单中读取此值;在本地 IDE 中运行则显示为 `development`。 ## 构建 (从源码) ``` ./gradlew spotlessCheck test shadowJar ``` 输出 jar 包将通过 Shadow plugin 构建在 `build/libs/burp-vigolium.jar` 路径下。 ## 配置说明 首先,启动 Vigolium 服务器,以便扩展有 API 可以连接: ``` vigolium server -A ``` 然后获取需要在扩展中输入的 API key: ``` vigolium config ls server.auth_api_key --force ``` ### 服务器连接和扫描选项 默认的服务器 URL 为 `http://127.0.0.1:9002`。服务器 URL 和 API Key 存储在 Burp 的扩展首选项中,用于发起经过认证的 API 请求。**Test Connection** 按钮会调用服务器健康状态接口,并且不会阻塞 Burp UI。 在 **Scan Options** 下,可选择提供以逗号分隔的模块列表和超时时间(例如 `30s` 或 `2m`)。将其中任何一个值留空则会使用服务器默认值。**Scan All HTTP Records** 会使用这些选项提交所有已存储的 HTTP 记录。 ### 记录视图 Findings Records 和 HTTP Records 表格支持点击每一数据列表头进行排序。点击一次按升序排列,再次点击按降序排列,第三次点击则恢复默认排序。`#` 列仅作为行位置指示器,而不是可排序的数据字段。 选择一个 finding 后,会在 Burp 的消息编辑器中打开其主要的请求和响应。额外的证据会显示为相邻的标签页,因此无需使用下拉菜单即可比较证据。**Show Description** 会展开 finding 摘要,而橙色的 **Copy Finding as Markdown** 操作会复制元数据、描述、匹配的 URL、请求、响应以及额外的证据。 ### 键盘快捷键 操作的快捷键可以在 **Settings → Keyboard Shortcuts** 下进行修改。默认快捷键如下: | 操作 | 默认快捷键 | |--------|------------------| | 发送至摄取 | `Ctrl+Alt+V` | | 发送至原生扫描 | `Ctrl+Alt+N` | | 发送至 Agentic 扫描 | `Ctrl+Alt+A` | | 对 Target Site map 进行快照 | `Ctrl+Alt+S` | | 刷新活动的记录视图 | `Ctrl+Alt+R` | 刷新快捷键是上下文相关的:当焦点位于 Findings Records、HTTP Records、Native Scans 或 Agentic Scans 内部时,它会激活相应视图的“刷新”按钮。 ### Target Site Map 快照 打开 **Vigolium → Bridge → Target Site Map Snapshot** 可立即运行快照或启用定期快照。定期快照默认处于禁用状态;启用后,默认时间间隔为五分钟。如果希望快照排除范围外 (out-of-scope) 的流量,请使用 **In-scope only**。默认快捷键为 `Ctrl+Alt+S`,可以在 **Settings → Keyboard Shortcuts** 下进行修改。 在当前的 Burp 会话期间,快照是增量进行的,且在服务器上是幂等的。请求和可用的响应会以有界的数据块上传;未更改的记录不会被重复上传。 ### 实时桥接 实时桥接默认处于禁用状态。要启用它,请打开 **Vigolium → Bridge**,选择 **Enable live bridge**,并输入监听器 URL(默认为 `http://127.0.0.1:9009`)。扩展程序会在该环回地址上启动一个内嵌的 HTTP 服务器;它会拒绝非环回的绑定地址。选择 **In-scope items only** 可防止桥接搜索返回超出 Burp Target 范围的流量。此过滤器默认处于禁用状态。**Test Connection** 按钮用于检查监听器的健康状态接口。 该监听器不需要凭据。它仅绑定到经过验证的环回地址,拒绝意外的 Host 和 Origin 标头,并且保持可选且默认禁用。 在 Vigolium 的常规流量视图中,将该监听器作为额外数据源使用: ``` export VIGOLIUM_BURP_BRIDGE_URL="http://127.0.0.1:9009" # CLI:将本地数据库与实时 Burp Proxy 历史记录合并 vigolium traffic # Server:将实时 Burp 行合并到 GET /api/http-records vigolium server # 将所有 bridge 可见的 Proxy 历史记录持久化到 Vigolium 的数据库中 vigolium import # 持久化所选流量页面(添加 --all 包含所有匹配记录) vigolium traffic --save-to-vigolium-db # 将所选 Vigolium 数据库流量复制到 Burp 的 Target Site map 中 vigolium traffic --save-to-burp # 将修改后的重放请求及其新响应保存到 Burp 的 Target Site map 中 vigolium replay --record-uuid --save-to-burp ``` 实时数据行会被标记为 `source: burp`。原有的流量过滤器、排序、 分页、JSON 输出和记录详情工作流依然适用。 另外,也可以使用 `VIGOLIUM_BURP_BRIDGE_URL` 来设置监听器 URL。 Bridge 导入是幂等的:新观察到的请求会被插入,已更改的 响应会刷新现有的数据库行,而未更改的流量将被跳过。 搜索和检查操作保持只读。内部的 Site map 写入路由接受 与 Vigolium 的 `/api/ingest-http` 相同的 `burp_base64` 请求/响应字段, 并调用 Montoya 的 `SiteMap.add`;用户无需直接调用它。 禁用该设置或卸载扩展会停止监听器,并使其临时结果引用失效。 #### 使用 `curl` 将流量导入 Burp 启用实时桥接后,以下请求会通过环回监听器将一次 HTTP 交互导入到 Burp 的 **Target → Site map** 中: ``` curl --silent --show-error \ --request POST 'http://127.0.0.1:9009/api/burp-bridge/sitemap' \ --header 'Content-Type: application/json' \ --data '{ "input_mode": "burp_base64", "url": "https://example.com/imported", "source": "curl", "http_request_base64": "R0VUIC9pbXBvcnRlZCBIVFRQLzEuMQ0KSG9zdDogZXhhbXBsZS5jb20NCkFjY2VwdDogKi8qDQoNCg==", "http_response_base64": "SFRUUC8xLjEgMjAwIE9LDQpDb250ZW50LUxlbmd0aDogMg0KDQpPSw==" }' ``` 请求体包含一个经过 Base64 编码的 `GET /imported` 请求和一个简短的 `200 OK` 响应。`http_request_base64` 是必填项;当只有请求可用时,`http_response_base64` 是可选的。成功的响应会包含 `"added":1`。此监听器不使用 Vigolium API key 或任何单独的 bridge 凭据。 ## 扩展使用的 API 端点 | 方法 | 端点 | 描述 | |--------|----------|-------------| | `GET` | `/health` | 测试与 Vigolium 服务器的连接 | | `POST` | `/api/ingest-http` | 存储选定或自动转发的 Burp 流量 | | `POST` | `/api/scan-request` | 为选定的流量启动原生扫描 | | `POST` | `/api/agent/run/swarm` | 为选定的流量启动 Agentic 扫描 | | `POST` | `/api/scan-all-records` | 使用配置的选项扫描所有已存储的 HTTP 记录 | | `POST` | `/api/burp/sitemap/snapshot` | 上传幂等的 Target Site map 快照数据块 | | `GET` | `/api/findings` | 列出和过滤 findings | | `GET` | `/api/http-records` | 列出和过滤已存储的 HTTP 记录 | | `GET` | `/api/scans` | 列出原生扫描运行记录并获取其日志 | | `GET` | `/api/agent/sessions` | 列出 Agentic 扫描会话并获取其日志 | 所有 Vigolium API 请求均使用 `Authorization: Bearer {API_KEY}`。 环回桥接监听器独立于 Vigolium API: | 方法 | Bridge 端点 | 用途 | |--------|-----------------|---------| | `GET` | `/health` | 报告监听器的健康状态、功能和范围内 (in-scope) 模式 | | `POST` | `/api/burp-bridge/search` | 搜索 Burp Proxy 历史记录或 Target Site map | | `POST` | `/api/burp-bridge/inspect` | 检索用于临时搜索引用的请求/响应数据 | | `POST` | `/api/burp-bridge/sitemap` | 将 Base64 编码的请求/响应项添加到 Burp 的 Target Site map 中 | 其双向传输无需身份验证,且仅限于本地计算机使用。监听器会拒绝意外的 Host 和 Origin 标头。搜索结果使用临时引用,当监听器重启或扩展卸载时,这些引用将会失效。 ## 许可证 Vigolium 由 [@j3ssie](https://twitter.com/j3ssie) 用 ♥ 制作,[@theblackturtle](https://github.com/theblackturtle) 为核心贡献者。
标签:API集成, Burp Suite 插件, CISA项目, JS文件枚举, Web安全, 可观测性, 后台面板检测, 域名枚举, 安全扫描, 时序注入, 流量转发, 蓝队分析