| name | vulhub-env-manager |
| description | 管理本地 Vulhub 仓库中的漏洞环境。用户要求“帮我搭建 CVE-20XX-XXXXX 的漏洞环境”“关闭 CVE-20XX-XXXXX 的漏洞环境”“启动某个 Vulhub 靶场”“删除某个 Vulhub 环境”或需要根据 `README.zh-cn.md` 输出访问地址、默认账号、初始化说明、验证方式时使用本技能。它负责从 `environments.toml` 定位对应目录,执行 `docker compose up -d` 或 `docker compose down -v`,在启动失败时分析镜像拉取、镜像站、代理、网络、Apple Silicon、Kali `ulimit` 等问题,并给出中文故障原因与修复建议。 |
Vulhub 环境管理
概述
在一个已经检出的 Vulhub 仓库中,完成漏洞环境的启动、关闭、信息汇总和故障诊断。优先从 environments.toml 定位环境目录,按 Vulhub 约定执行 Docker Compose,并结合 README.zh-cn.md 输出有用的中文结果,而不是只回复“启动成功”。
快速开始
python3 scripts/vulhub_env.py resolve --repo /path/to/vulhub --query "帮我搭建 CVE-2026-34197 的漏洞环境"
python3 scripts/vulhub_env.py report --repo /path/to/vulhub --env-path activemq/CVE-2026-34197 --host 127.0.0.1
工作流
1. 定位目标环境
- 以
environments.toml 为准,不要靠猜目录名硬匹配。
- 执行
python3 scripts/vulhub_env.py resolve --repo <repo-root> --query "<用户请求>"。
- 如果脚本只返回一个高置信匹配,直接使用。
- 如果返回多个分数接近的候选,向用户提出一个简短澄清问题,并带上候选路径。
- 如果没有匹配到,明确告知当前 Vulhub 仓库中不存在该环境,并给出最接近的候选。
2. 启动环境
- 在运行 Docker 前先阅读目标目录中的
README.zh-cn.md,确保你知道启动成功后该汇报什么信息。
- 进入漏洞目录后执行:
docker compose up -d
- 命令成功后,在同一目录执行
docker compose ps。
- 再执行
python3 scripts/vulhub_env.py report --repo <repo-root> --env-path <relative-path> --host 127.0.0.1,用输出构建最终回复。
- 如果 README 中使用
your-ip,本地默认替换为 127.0.0.1;只有在你已经验证到更合适的主机 IP 时才替换成别的值。
- 如果 README 明确写了“初始化约需 30 秒”“首次启动需要安装”等提示,必须在结果中说明。
- 默认使用精简输出,只汇报基础环境信息;除非用户明确要求更多细节,或当前存在异常、警告、失败风险,否则不要展开日志、原始端口映射、复现步骤、攻击链说明或“下一步我可以帮你做什么”这类冗余内容。
3. 关闭并删除环境
docker compose down -v
- 这与 Vulhub 中文入门文档中的清理方式一致。
- 说明命令执行结果;如果有必要,再运行一次
docker compose ps 证明容器已经停止或被删除。
4. 诊断启动失败
- 如果
docker compose up -d 失败,不要假装环境已经可用。
- 区分镜像拉取或构建阶段的网络失败、代理或 TLS 失败、Apple Silicon 架构不匹配、Kali
ulimit nofile 限制、普通运行时错误等不同情况。
- 如果报错明显指向 Docker Hub 连通性、镜像站或代理问题,读取
references/network-troubleshooting.md,并输出:
- 最可能的失败原因
- 可执行的修复步骤
- 用户可以直接操作的命令或设置项
- 修复后应如何重试
docker compose up -d
- 除非用户明确要求,不要擅自改写 Docker daemon、Docker Desktop 或代理配置;应先解释原因并给出操作建议。
5. 用环境细节汇报成功结果
成功回复中必须包含:
- 解析出的环境路径
- 环境是否已经成功启动
- 从
README.zh-cn.md 提取的主要访问 URL
- 默认账号、默认密码,或最关键的初始化说明
- 必要时补充主要暴露端口
默认不要包含:
docker compose ps 的整段原始输出
- 容器日志摘录
- ARM 或架构告警,除非它会影响环境使用
- 完整漏洞复现步骤
- 攻击机操作说明、PoC 模板或请求包
- “如果你要,我还可以……”这类额外选项菜单
优先使用中文 README;只有在 README.zh-cn.md 缺失时才回退到 README.md。
回复清单
对于成功的“启动环境”请求,按下面顺序组织回复:
- 启动了什么环境。
- 现在如何访问。
- 有哪些默认凭据或初始化步骤。
默认控制在一小段或 3 到 5 条平铺信息内,优先简洁,不要主动展开为教程。
对于“关闭环境”请求,按下面顺序组织回复:
- 关闭了哪个环境。
- 容器和卷是否已经删除。
除非关闭失败或有残留资源,否则不要输出额外细节。
资源