一个用于 AI 驱动的渗透测试竞赛的模型上下文协议 (MCP) 服务器。该工具提供了一个完整的 API 接口,使 LLM 能够自主参与 CTF 挑战。
建议与 kimi-cli-for-xbow 配合使用,或集成进你自己的 Agent 工作流中
- 挑战管理 - 列出、尝试和提交 CTF 挑战的解决方案
- 知识库 - 内建涵盖 9 种漏洞类别的 CTF 技术文档
- 持久化 Kali 容器 - 在隔离环境中执行安全工具(nmap、sqlmap、gobuster 等)
- 尝试历史 - 通过自动笔记管理,跨会话跟踪和共享发现
- 多种协议 - 支持 stdio、SSE 和 HTTP/2 流模式
- Go 1.24.7+
- 支持 buildx 的 Docker
go build -o xbow-mcp ./cmd/main.go在 ./mock-challenges 中根据模板创建相应赛题文件。
{
"challenge_code": "XBEN-123-24",
"difficulty": "easy",
"points": 200,
"target_info": {
"ip": "192.168.5.37",
"port": [32820]
},
"hint_viewed": false,
"solved": true,
"hint_content": "Sometimes the AuthN/AuthZ checks are vulnerable to TOCTOU issues if they are not implemented properly",
"solution": "flag{xxxx}"
}启动命令
./xbow-mcp --mock -listen 127.0.0.1:8080./xbow-mcp \
-xbow-url https://your-xbow-platform.com \
-xbow-token YOUR_AUTH_TOKEN \
-mode streamable \
-listen 127.0.0.1:8080| 工具 | 描述 |
|---|---|
list_challenges |
获取当前阶段的挑战,包括难度和目标信息 |
do_challenge |
标记挑战为进行中,并增加尝试计数器 |
get_challenge_hint |
检索提示(会扣除分数) |
submit_answer |
提交 Flag 并接收评分结果 |
get_ctf_skill |
访问技术文档(xss、sql、ssti、ssrf、idor、xxe、lfi、codei、afr&pt) |
write_challenge_note |
保存发现和尝试记录,供将来参考 |
read_challenge_note |
查看历史笔记(每 9 次尝试后自动重置) |
kail_terminal |
在持久化 Kali 容器中执行命令 |
get_terminal_history |
通过 ID 检索命令执行结果 |
# 服务器模式
-mode, -m [stdio|sse|streamable] MCP 服务器协议 (默认: streamable)
-listen, -l ADDR:PORT 监听地址 (默认: 127.0.0.1:8080)
# 平台配置
-xbow-url, -u URL XBow API 基础 URL
-xbow-token, -t TOKEN 认证 Token
# Docker 配置
-docker-container, -c NAME 容器名称 (默认: xbow-kail)
-docker-image, -i IMAGE:TAG Docker 镜像 (默认: xbow-kail:latest)
-dockerfile-dir, -f PATH Dockerfile 路径 (默认: ./Dockerfile)
-docker-exec-log-dir, -d DIR 执行日志目录 (默认: ./.kail-history)
# 模拟平台(本地测试)
--mock 启用模拟平台服务器
-mock-addr ADDR:PORT 模拟服务器地址 (默认: 127.0.0.1:8000)
-mock-dir PATH 模拟挑战目录 (默认: ./mock-challenges)添加到您的 MCP 客户端配置中:
{
"mcpServers": {
"ezmcp": {
"url": "http://127.0.0.1:8080/mcp"
}
}
}.challenge_history/{challenge_code}/- 尝试元数据、笔记和历史记录.kail-history/- 命令执行记录
- 自动编译并启动 XBOW 靶场并配置赛题信息。
开源。详情请参见 LICENSE 文件。
欢迎提出 Issue 和 Pull Request。