momomuchu/burpctl
GitHub: momomuchu/burpctl
burpctl 通过 Python CLI 与 Kotlin REST 扩展将 Burp Suite 的完整功能面暴露为命令行接口,使安全测试和 fuzzing 可以脚本化、自动化地运行在 Burp 内部上下文中。
Stars: 0 | Forks: 1
# burpctl
[](https://github.com/momomuchu/burpctl/releases)
[](https://github.com/momomuchu/burpctl/actions/workflows/ci.yml)
[](#license)
[](bp/)
[](https://portswigger.net/burp)
相比于 `ffuf` 或 Turbo Intruder,选择 `burpctl` 的理由在于:它们虽然速度很快,但它们运行在 Burp *外部* —— 你会丢失 session、cookies、上游配置以及 scope。`burpctl` 在客户端构建攻击,并通过 Burp 的 **Repeater** (`/repeater/send`) 发送每一次请求,*而不是* 使用 Burp 的 Intruder 引擎 —— 因此,你可以在一个可脚本化的命令中继承所有这些上下文,而无需在 UI 中进行大量点击。并且,由于它依赖于 Repeater,它绕过了 **Burp Community** 对 Intruder 应用的刻意速率限制:在保持处于你正在使用的 proxy 内部的同时,以全速进行多位置、矩阵式的 fuzzing。
它包含两个部分:
- **`burpctl`** —— 一个快速、完全类型化的 **Python CLI**(你将使用的交互界面;`bp` 是它的 2 字符别名)。
- **burp-rest-extension** —— 一个 **Kotlin** Burp 扩展,它将 Burp 的 [Montoya API](https://portswigger.net/burp/documentation/desktop/extensions/creating) 暴露为本地 REST API 供 `burpctl` 驱动。
```
you ──► burpctl (CLI) ──REST :8089──► burp-rest-extension ──Montoya──► Burp Suite (Pro / Community)
```
## 功能
- 💥 **灵活的客户端 fuzzing** —— 标记 *任意* 字节范围(`header:`、`cookie:`、`body:`、`query:`、`path:`、原始 `offset:`),同时支持多个位置,以及全部四种攻击类型(sniper、battering-ram、pitchfork、cluster-bomb),并内置异常检测。在 Community 版本上不受速率限制。
- 🎯 **通过单一 CLI 操控完整的 Burp 功能面** —— proxy history、repeater、intruder、scanner、target/scope、decoder、collaborator、sitemap、sessions。
- 🔎 **安全检查** —— 内置针对 auth-bypass、IDOR、CORS 和安全 headers 的探测;发现问题时使用退出码 `5`,以便你可以对 CI/脚本进行拦截控制。
- 📒 **Run Ledger** —— 每次操作都会在本地记录,且 **仅包含 sha256 指纹**(绝不记录原始 body),并且 **默认开启 secret 脱敏**。
- 🧰 **同样适用于 Community 版** —— 只有启动 `collaborator` 和 `scan` 需要 Pro 版(它们会以退出码 `4` 退出并给出清晰提示);其他所有功能均可在 Community 上运行。
- 🔩 **可脚本化且对自动化友好** —— `--format json` 输出 NDJSON(每行一条记录);稳定的退出码;无交互式提示。这也使得它很容易由脚本或 AI agents 驱动。
- ✅ **规范驱动且经过测试** —— 433 个 Python 测试 + 一套 Kotlin 测试套件,`mypy --strict` + `ruff` 无任何报错,每次 push 均触发 CI。
## 快速开始
**前置要求:** Burp Suite (Pro 或 Community) · JDK 17+ (用于构建扩展) · Python 3.11+ (用于 `burpctl`)。
**1. 构建并加载扩展**
```
./gradlew shadowJar # → build/libs/burp-rest-extension.jar
```
在 Burp 中:**Extensions → Add → Extension type: Java → 选择该 JAR 文件。**
REST 服务器会自动启动 —— 在扩展的 Output 标签页中寻找 `Server started on http://127.0.0.1:8089`。
**2. 安装并使用 `burpctl`**
```
cd bp && uv tool install . # or: pipx install . (installs `burpctl` + `bp` alias)
burpctl health # is the extension up?
burpctl proxy --host target.example --limit 20 # captured history → request IDs
# 同时 fuzz 两个位置,cluster-bomb,仅显示异常:
burpctl fuzz 42 --pos 'header:X-Forwarded-For' --payloads X-Forwarded-For=ssrf.txt \
--pos 'cookie:role' --payloads role=privesc.txt \
--type cluster-bomb --anomalous-only
burpctl check idor 'https://target/api/user?id=1' --param id --own 1 --target 2 # exits 5 if vulnerable
```
👉 **完整的命令参考:[`bp/README.md`](bp/README.md)。**
## 仓库结构
| 路径 | 说明 |
|---|---|
| [`bp/`](bp/) | `burpctl` CLI (Python) — [README](bp/README.md) · [CHANGELOG](bp/CHANGELOG.md) |
| `src/main/kotlin/com/burprest/` | Burp REST 扩展 (Kotlin / Ktor / Montoya) |
| [`docs/`](docs/) | 基于源码的契约:[SPEC](docs/SPEC.md) · [CLI 语法](docs/CLI.md) · [OUTPUT](docs/OUTPUT.md) · [ALGORITHMS](docs/ALGORITHMS.md) · [ADRs](docs/adr/) |
REST 接口面包含 **13 个路由组 / 69 个 endpoints**,全部在 `docs/SPEC.md` 中经过源码验证;每个
响应均为 `{success, data, error}`。
## 构建与测试
```
./gradlew test # Kotlin extension
cd bp && uv run pytest -q && uv run mypy --strict src && uv run ruff check src tests # burpctl: 433 tests, typed, linted
```
## 贡献
欢迎提交 Issues 和 PRs —— `burpctl` 是规范驱动和测试优先的。请从
**[CONTRIBUTING.md](CONTRIBUTING.md)** 开始阅读(规范、开发环境设置、完成定义/Definition of Done),查看
**[ROADMAP](ROADMAP.md)** 了解规划内容,并按照
**[SECURITY.md](SECURITY.md)** 的指引私下报告漏洞。
## 许可证
[MIT](LICENSE)
标签:CISA项目, Kotlin, Python, Web安全, 后台面板检测, 无后门, 蓝队分析, 逆向工具