一款 Burp Suite 插件,用于被动发现和手动添加 Swagger/OpenAPI 文档,并自动对 API 接口进行未授权访问探测。集成在 Burp UI 中,实时显示调用结果,并可一键发送到 Repeater 模块。
-
被动发现 (Passive Discovery)
- 自动从 Burp 流量(Proxy, Target)中被动识别
text/html,application/javascript等响应,基于响应体内容智能发现 API 文档。 - 可配置
Enable Passive Scan开关,在需要时切换为纯手动模式。
- 自动从 Burp 流量(Proxy, Target)中被动识别
-
手动提交 (Manual Submission)
- 支持在 Burp 任意位置(如 Proxy 历史)右键,选择
Extensions->APIGan->Send to APIGan。 - 自动处理编码: 解决手动提交中文乱码问题。
- WAF 绕过兼容: 即使是
.../api-docs;js这样的绕过 URL,手动提交也能正确识别。
- 支持在 Burp 任意位置(如 Proxy 历史)右键,选择
-
多版本兼容
- 兼容 Swagger 1.x, V2, OpenAPI V3.0+ 的 JSON 文档格式。
-
安全与高度可控
- 危险API过滤: 可自定义
Dangerous Keywords(危险关键字),命中 URL 的请求将自动跳过 (Status: Filtered)。 - 请求方法控制: 可自定义
Allowed Methods(允许的方法),默认仅get,post,防止执行高风险操作。 - 请求超时: 可自定义
Timeout(超时,秒),防止单个请求卡死。
- 危险API过滤: 可自定义
-
深度集成 Burp UI
- 实时交互表格: 所有 API 实时展示在表格中,包含状态(Called, Filtered, Error)、方法、URL、状态码等。
- 即时查看: 点击表格任意行,可在下方查看器中立即显示完整的请求 (Request) 和响应 (Response)。
- 一键重放: 在请求查看器中,支持
Ctrl+R或右键将请求(可修改)发送到 Repeater 模块进行深度测试。
-
强大的请求配置
Force original domain: 强制使用发现文档的域名,忽略文档内声明的host或servers(用于测试环境与生产环境域名不一致的场景)。Custom Headers: 支持添加全局Cookie,Authorization等自定义头部,用于测试需要认证的接口。Specify PreFix URL: 支持为所有 API 路径添加统一的URL前缀(例如/api/v1)。
(APIGan 主界面截图 - 展示设置面板、表格、请求/响应查看器)
``

(右键菜单截图 - 展示 "Send to APIGan")
``

- 下载
APIGan.jar文件(您编译后的文件)。 - 打开 Burp Suite ->
Extensions(扩展) ->Extender标签页。 - 点击
Add(添加),在Extension type中选择Java。 - 点击
Select file...,选择您下载的APIGan.jar文件。 - 点击
Next,插件加载成功。 - 您会看到一个新的
APIGan标签页出现,同时右键菜单Extensions下出现APIGan选项。
Enable Passive Scan(推荐): 保持勾选。Force original domain(按需): 当您在测试环境(如test.example.com)发现 API 文档,但文档内的host指向生产环境(如api.example.com)时,必须勾选此项,确保请求发往测试环境。Custom Headers(关键): 如果 API 需要认证,请在此处填入您的Cookie: ...或Authorization: Bearer ...(每行一个),然后点击Save。
- 保持
Enable Passive Scan开启。 - 正常浏览您的目标网站,使用网站功能。
HttpListener会自动监听所有流经 Burp 的流量。- 一旦在响应体中发现 API 文档,插件将自动开始解析和请求,并实时更新
APIGan标签页中的表格。
- 在 Burp 的任何地方(如
Proxy->HTTP history)找到一个您认为是 API 文档的请求(例如.../v2/api-docs或.../api-docs;js)。 - 右键点击该请求。
- 选择
Extensions->APIGan->Send to APIGan。 - 插件将立即解析此响应,并开始请求。
- 切换到
APIGan标签页查看表格。 - 重点关注:
Status为Called(调用成功, 状态码 2xx) 或Error(调用失败, 状态码 4xx/5xx) 的请求。 - 点击您感兴趣的行(例如一个
401 Unauthorized或400 Bad Request的请求)。 - 在下方的
Request查看器中检查请求包。 - 按
Ctrl+R(或右键)将其发送到Repeater模块。 - 在
Repeater中修改请求(例如添加/修改参数、更换Cookie),进行更深入的授权测试。