
toolbox v0.2.1
通过CLI和MCP在人类与代理之间进行协作式应用安全测试
基于 MCP 的应用安全测试工具,专为你的编码代理打造。
它不是扫描器,而是一个协作工作台。代理不擅长处理 UI 和有状态 API,而这两者正是你所擅长的。Sectool 让你可以通过其代理探索应用程序,同时由代理分析并操纵你生成的相同认证流量。
你负责处理认证和 UI 交互,代理则负责查询流量、修改请求、发现反射、监控带外交互,并尝试其他排列组合。将双方能力相结合,常规任务会变得更简单,隐藏的指标更不易被遗漏,复杂测试也能更加彻底。
快速开始
1. 安装 sectool
go install github.com/go-appsec/toolbox/sectool@latest
没有 Go? 从最新版本下载适用于你平台的二进制文件(Linux、macOS、Windows——amd64 和 arm64)。
2. 启动 MCP(模型上下文协议)服务器
sectool mcp
这将在 9119 端口启动一个 MCP 服务器,并带有 8080 端口的内置 HTTP 代理。
3. 配置你的浏览器
将浏览器的代理设置指向 127.0.0.1:8080(或使用 --proxy-port 指定的端口)。
如需进行 HTTPS 拦截,请安装来自 ~/.sectool/ca.pem 的 CA 证书(首次运行时自动生成)。大多数浏览器可通过其证书设置接受该证书;在 macOS 上,你还可以将其添加到系统钥匙串中。
正在使用 Burp? 请转而遵循 Burp 的代理配置,然后使用 sectool mcp --burp 启动 sectool。
4. 连接你的代理
Claude Code:
claude mcp add --transport http sectool http://127.0.0.1:9119/mcp
Codex(~/.codex/config.toml):
[mcp_servers.sectool]
url = "http://127.0.0.1:9119/mcp"
5. 开始协作
与代理一同制定测试计划并共同执行。代理可以查询代理历史记录、重放修改后的请求、爬取端点并测试带外交互,而你则负责处理基于浏览器的操作,例如认证、与 UI 交互并审查 UI。
服务器选项
代理后端
原生: 内置代理,具有线路级保真,并支持 HTTP/1.1、HTTP/2 和 WebSocket。其设计目标是在 MITM 测试方面与 Burp 一样强大。单个二进制文件即可提供 MCP 服务器、代理和 CLI——完全自包含,可在无头环境中使用。
Burp(可选): 如果你更倾向使用 GUI 来审查代理的操作,或者已经在运行 Burp,请从 BApp Store 安装 MCP 扩展,并确保 MCP 服务器运行在 http://127.0.0.1:9876/。
| 选项 | 说明 |
|---|---|
| (默认) | 自动检测:先尝试 Burp MCP,不可用则回退到原生代理 |
--proxy-port 8080 | 在指定端口强制使用原生代理 |
--burp | 强制使用 Burp MCP(不可用时失败) |
会话选项
工作流
当代理在会话开始时调用 workflow 工具时,Sectool 会自动确定合适的工作流。你也可以提前指定工作流,以跳过此步骤并节省 token:
sectool mcp # Default: agent selects task type via workflow tool
sectool mcp --workflow explore # Pre-set exploration mode
sectool mcp --workflow test-report # Pre-set validation mode
sectool mcp --workflow none # No workflow instructions
sectool mcp --workflow multi # Multiple agents share the server
| 模式 | 说明 |
|---|---|
| (默认) | 代理通过调用 workflow 工具选择任务类型,并接收协作指令 |
explore | 探索性安全测试;所有工具均可用 |
test-report | 验证特定漏洞报告;排除爬取工具 |
none | 无工作流指令,所有工具立即可用 |
multi | 适用于多个用户或代理共享服务器的情况;隐藏某些功能,以免一个代理令另一个代理产生混淆 |
工作流指令会引导代理进行协作测试,而不是试图完全自主地完成所有事情,或按部就班地引导你走流程却不增加任何价值。如果你对改进代理协作有任何想法,请提交 issue。
备注
--notes 标志可启用 notes_save 和 notes_list 工具,用于保存与流量相关联的观察结果。默认处于禁用状态,以在短会话中保持最低上下文使用量。当你预期会有多个发现或对话压缩时,请启用它。
MCP 传输方式
服务器暴露两个端点:
/mcp- 可流式 HTTP(推荐)/sse- SSE(旧版,适用于较旧的客户端)
CLI 使用示例
CLI 与代理共享状态,并提供一个人性化界面,用于审查、重放和编写脚本。所有 CLI 命令均映射到 MCP 工具,因此代理共享同一状态。
# Review what the proxy captured while you browsed
sectool proxy summary
sectool proxy list --host example.com
sectool proxy cookies --name session_id
# Crawl an app to discover endpoints and forms
sectool crawl create --url https://example.com
sectool crawl summary <session_id>
# Replay a captured request with modifications
sectool replay send --flow <flow_id> --add-header "X-Test: value"
# Set up out-of-band interaction testing and check for callbacks
sectool oast create
sectool oast poll <oast_id>
sectool oast get <event_id>
# Compare two flows, detect reflections, inspect JWTs
sectool diff <flow_a> <flow_b> --scope response
sectool reflected <flow_id>
sectool jwt <token>
# Export a flow, edit it offline, and resend
sectool proxy export <flow_id>
# ... edit ./sectool-requests/<flow_id>/request.http ...
sectool replay send --bundle <flow_id>
使用 sectool <command> --help 查看详细选项。
主要特性
- 线路级保真代理 - HTTP/1.1 和 HTTP/2 MITM,保留头部顺序、大小写和协议异常
- 重放与篡改 - 通过匹配/替换规则重写实时流量,或通过针对代理优化的 API 重发经修改的捕获请求
- 流量对比 - 对两个流量进行结构化且感知内容类型的比较(JSON 路径级、统一文本、二进制大小),以便快速验证报告
- JS 攻击面分析 - 从 JavaScript/HTML 包中提取端点、路由和密钥,然后将任意调用点展开为其可用请求
- 反射检测 - 在多种编码变体中查找响应中反射的请求参数值,以揭示注入点
- OAST - 通过 Interactsh 进行带外交互测试;创建域,轮询 DNS/HTTP/SMTP 回调
- 重定向探测 - OAST 会话可返回 307 重定向以检测目标是否跟随重定向,对 SSRF 链和验证绕过很有用
- 爬取 - 发现端点、表单和应用程序结构;以代理历史记录或 URL 作为种子
- WebSocket 支持 - 对 WebSocket 消息进行帧级拦截、代理和匹配/替换
- 工作流模式 - 针对特定任务的代理指导(explore、test-report),以提高协作质量并减少 token 浪费
- 编码工具 - URL、Base64、HTML 编码/解码、哈希(MD5/SHA/HMAC)、JWT 检查
- Burp Suite 集成 - 通过 Burp MCP 扩展提供可选的 GUI 前端;或使用原生代理完全无头运行
自动化扫描
将 sectool 与 sidenuclei 搭配使用,后者是一个第一方 sidecar,可针对你接触的每个端点运行 Nuclei。使用 --notes 启动 sectool,将 sidenuclei 附加到你的会话中,它便会使用真实捕获的请求扫描每个端点,因此测试将使用你实际的参数、cookie 和认证会话运行。发现结果会以 finding 备注的形式呈现,并链接到触发它们的流量,在你和你的代理专注于手动测试的同时,为你提供额外的覆盖范围。
自定义协议支持
除 HTTP 和 WebSocket 之外,sectool 还通过 sidecar 适配器模型支持自定义协议和二进制协议(通常为请求/响应)。编写适配器,使用我们的 sidecar API 进行连接和通信。Sidecar 流量会归入同一个统一的流量时间线,因此 flow_get、diff_flow、replay_send 等工具无需修改即可正常工作。适配器可以使用任何语言通过 JSON-RPC 2.0 API 编写,也可以使用 Go 编写,配合负责处理注册、规则缓存和流量发出的 SDK 客户端。sidecar SDK 与协议 对两者均有说明。