
toolbox v0.2.0
通过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 # 默认:代理通过 workflow 工具选择任务类型
sectool mcp --workflow explore # 预设探索模式
sectool mcp --workflow test-report # 预设验证模式
sectool mcp --workflow none # 无工作流指令
sectool mcp --workflow multi # 多个代理共享服务器
| 模式 | 描述 |
|---|---|
| (默认) | 代理通过调用 workflow 工具选择任务类型,并接收协作指令 |
explore | 探索性安全测试;所有工具均可用 |
test-report | 验证特定漏洞报告;排除爬取工具 |
none | 无工作流指令,所有工具立即可用 |
multi | 适用于多个用户或代理共享服务器的情况;隐藏可能让一个代理干扰另一个代理的功能 |
工作流指令会引导代理进行协作式测试,而不是试图自主完成所有事情,或在不增加价值的情况下带你走一遍流程。如果你有改进代理协作的想法,请提交 issue。
笔记
--notes 标志会启用 notes_save 和 notes_list 工具,用于保存与流量关联的观察结果。默认禁用,以便在短会话中尽量降低上下文占用。当你预计会有多个发现或对话压缩时,请启用它。
MCP 传输方式
服务器暴露两个端点:
/mcp- Streamable 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> --set-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 与协议对两者均有说明。