通过 CLI 和 MCP 实现人类与智能体之间的协作式应用安全测试
为你的编码代理提供基于 MCP 的应用程序安全测试工具。
这不是扫描器——而是一个协作工作台。代理不擅长处理 UI 和有状态 API;而这两点正是你的强项。Sectool 让你通过其代理探索应用程序,同时代理分析并操纵你生成的同一份已认证流量。
你负责处理认证和 UI 交互,代理则查询流量、修改请求、查找反射、监控带外交互,并尝试其他排列组合。将你们的能力结合起来,可以让日常任务更轻松,隐藏指标更不易被遗漏,复杂测试也更加彻底。
go install github.com/go-appsec/toolbox/sectool@latest
没有 Go? 从最新发布下载适用于你平台的二进制文件(Linux、macOS、Windows——amd64 和 arm64)。
sectool mcp
这会在端口 9119 上启动一个 MCP 服务器,并在端口 8080 上启动一个内置 HTTP 代理。
将浏览器的代理设置指向 127.0.0.1:8080(或使用 --proxy-port 指定的端口)。
对于 HTTPS 拦截,请安装 ~/.sectool/ca.pem 中的 CA 证书(首次运行时自动生成)。大多数浏览器可通过其证书设置接受它;在 macOS 上,你也可以将其添加到系统钥匙串。
使用 Burp? 请改为遵循 Burp 的代理配置,然后使用 sectool mcp --burp 启动 sectool。
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"
与代理一起制定测试计划并共同执行。代理可以查询代理历史、重放修改后的请求、爬取端点,并测试带外交互,而你则负责基于浏览器的操作,例如认证,或与 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 - Streamable HTTP(推荐)/sse - SSE(旧版,适用于较旧的客户端)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 查看详细选项。
将 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 与协议对两者均有说明。