首页
课程
问答
CTF
社区
招聘
峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
峰会
看雪商城
证书查询
社区
安全工具
发新帖
1
0
[原创]把 vulhub 的 500 个漏洞环境变成可检索的知识库:解析、匹配、验收全流程
发表于: 2026-8-19 19:35
240
[原创]把 vulhub 的 500 个漏洞环境变成可检索的知识库:解析、匹配、验收全流程
mb_puuhvqot
2026-8-19 19:35
240
> 技术分享向帖子。工具是自研的 CVE 沙盒编排脚本集,文末有获取方式,觉得有用可以私信交流。 ## 背景:环境搭建的重复劳动 做漏洞复现的人都知道:查 NVD 描述、CVSS、CWE → 找对应版本的漏洞应用 → 手写 compose、端口映射 → 启动、验证、重置。单个环境半小时起步,攒一批就是几天。开源社区其实早就解决了"环境有没有"的问题——vulhub 提供了 500+ 个 docker-compose 漏洞环境。但 vulhub 是**人肉维护的静态目录**:想用的时候要 clone 整个仓库自己翻目录,想批量复现几十个 CVE 就要一个个手动 up,新 CVE 环境只能等维护者更新。 我的思路是:不重复造轮子,把 vulhub 生态**自动化**——写一个解析器,把 vulhub 的目录结构变成可检索、可匹配、可批量部署的"知识库"。 ## 一、怎么拿到 vulhub 的目录结构 最开始的方案是 `git clone`,但 GitHub 直连在部分网络环境下 git 协议会卡死(HEAD 请求通、git-upload-pack 不通)。绕开方案: 1. GitHub API 拉文件树:`/repos/vulhub/vulhub/git/trees/master?recursive=1`,一次拿到全部 2879 个文件路径 2. 只下载需要的东西:`README.md` + `docker-compose.yml`,667 个文件,总共才 4.1MB(完整仓库含截图是几百 MB) 3. 并发下载踩坑:20 并发限流丢文件,重试补齐(慢速双源:raw + jsdelivr) ## 二、无依赖的 compose 解析器 知识库只需要 compose 里的四个字段:镜像名、端口映射、启动命令、环境变量。不想为这一个功能引入 PyYAML 依赖,写了个 ~100 行的缩进解析器,覆盖 vulhub 的常见写法: - `ports` 的四种写法(`8080:8080` / `"8080:8080"` / `127.0.0.1:8080:8080` / `8080/udp`) - `command` 的字符串和列表两种形态 - `environment` 的 map 和 list 两种形态 - 多 service 环境(如 victim + attacker) 解析不了的就优雅降级(字段留空 + notes 标注),绝不崩。 ## 三、CVE 提取与多环境合并 每个环境的 README 里正则提取 CVE 编号。vulhub 里同一个 CVE 常有多个环境(不同版本),合并成一条知识库条目、多个 variant——部署时按需选。336 个环境最终得到 **250 条 CVE 映射**(97 个环境没有 CVE 编号,跳过并记录在报告里)。 ## 四、验收:真正动手才算数 知识库导入只是开始,每条映射都要能真部署。抽样验收 4 个高价值 CVE: - CVE-2016-4437(Shiro)→ 源码模板本地构建 → HTTP 200 PASS - CVE-2017-5638(Struts2 S2-045)→ 源码模板本地构建 → HTTP 200 PASS - CVE-2021-44228(Log4Shell)→ 源码模板本地构建 → HTTP 200 PASS - CVE-2014-0160(Heartbleed)→ vulhub 镜像类,测试机 Docker Hub 不可达,未能实测 结论:**源码模板路径(本地构建)链路完整可用,镜像类环境映射有效但依赖网络可达**。验收通过的条目才标 `verified: true`,其余保持待验收——宁可标注未验证,不假装全都能跑。 ## 五、产出 - `image-registry.json`:251 条 CVE 映射(234 个镜像/模板、273 个 variant) - 命令行:输入 CVE 编号 → 自动拉 NVD → 知识库精确匹配 → 生成可部署沙盒;未匹配生成接入计划 - 批量:多环境同时映射、批量部署、HTTP 验收、一键重置 - 增量:新 CVE 可以用自动接入引擎(NVD 画像 → Maven/PyPI/Packagist 定位 → 脚手架 → 构建验收)半自动接入 ## 获取 工具整理为版本化发布包(AI 工作流版:填 VM 信息和 CVE 列表即可自动部署验收;Linux 工具版:命令行操作)。仅限授权环境使用,不附带攻击载荷。感兴趣私信交流。 --- *附:合规说明——本文分享的是环境编排技术,不包含任何攻击载荷和漏洞利用代码;vulhub 环境仅供授权研究使用。*
传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!!
收藏
・
1
点赞
・
0
打赏
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
感谢分享~
最新回复
(
0
)
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
mb_puuhvqot
1
发帖
0
回帖
0
RANK
关注
私信
他的文章
[原创]把 vulhub 的 500 个漏洞环境变成可检索的知识库:解析、匹配、验收全流程
240
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
看原图
赞赏
×
雪币:
+
留言:
快捷留言
为你点赞!
返回
顶部