一、Vulhub 是什么?
Vulhub 是一个基于 Docker 的漏洞环境集合,里面包含了各种常见的漏洞场景,特别适合用来复现漏洞和学习安全技术。
在 Kali Linux 系统中配置 Docker 环境并搭建 Vulhub 漏洞靶场的步骤。内容包括系统内核检查、软件源更新、Docker 安装与镜像加速配置、Docker Compose 安装验证以及具体漏洞环境的启动与清理。旨在帮助用户快速构建本地安全测试环境。

Vulhub 是一个基于 Docker 的漏洞环境集合,里面包含了各种常见的漏洞场景,特别适合用来复现漏洞和学习安全技术。
我使用的 Kali 版本:Kali Linux 2023.1 Kali Linux 官方下载地址为:https://www.kali.org/releases/ 你可以根据自己的需求选择适合的版本(如 ISO 镜像、虚拟机镜像等)。
首先,确保你的系统内核版本高于 3.10,因为 Docker 需要较高版本的内核支持。
uname -r # 显示当前系统的内核版本
uname -a # 显示系统的详细信息,包括内核名称、版本、主机名、硬件架构等

如果内核版本低于 3.10,你需要升级内核或选择一个支持 Docker 的操作系统。
编辑 /etc/apt/sources.list 文件,将当前的源替换为适合你需求的源。更换源可以加快下载速度并提高软件包的稳定性,但请务必选择可靠的源,并遵守相关法律法规。目前,我使用的是系统默认的源。
使用以下命令更新软件包列表并升级已安装的软件包:
sudo apt-get update # 更新软件包索引,从配置的软件源中获取最新的软件包列表
sudo apt-get upgrade # 升级系统中已安装的软件包到最新版本
出现以下错误,可能需要更新密钥环:

wget -q -O - https://archive.kali.org/archive-key.asc | sudo apt-key add

更新密钥环以后,更新软件包索引

升级系统中已安装的软件包到最新版本(可以不升级,对后续操作不影响)

至此,Kali Linux 环境配置已完成。
使用以下命令安装 Docker:
apt-get install docker.io


安装完成后,查看 Docker 版本信息:
docker --version # 显示 Docker 客户端的版本信息
docker version # 显示 Docker 客户端和服务端的详细信息,包括版本号、API 版本、Go 版本等

如果你只是临时使用 Docker,仅在需要时手动启动服务:
sudo systemctl start docker # 启动 Docker 服务
如果你需要 Docker 服务长期运行,建议设置开机自启:
sudo systemctl enable docker # 设置 Docker 服务开机自启
sudo /lib/systemd/systemd-sysv-install enable docker # 使用 sysv-init 兼容工具启用 Docker 服务
检查 Docker 状态:
sudo systemctl status docker.service # 查看 Docker 服务的运行状态

确保服务状态显示为 active (running)(绿色)。
运行 hello-world 镜像,测试 Docker 是否正常工作:
sudo docker run hello-world

如果一切正常,你将看到 Hello from Docker! 的输出。
如果出现以下错误,可能是网络问题,建议配置 Docker 镜像加速来提升下载速度:
Unable to find image 'hello-world:latest' locally
docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers). See 'docker run --help'.

创建并编辑 /etc/docker/daemon.json 文件:
sudo mkdir -p /etc/docker # 创建 Docker 配置目录
sudo vi /etc/docker/daemon.json # 编辑配置文件
添加镜像加速地址: 在文件中添加以下内容(以多个国内镜像源为例)
{"registry-mirrors":["https://docker.sunzishaokao.com", "https://docker.1ms.run", "https://docker.1panel.live", "https://docker.anyhub.us.kg"]}
重新加载配置并重启 Docker 服务:
sudo systemctl daemon-reload # 重新加载系统服务配置
sudo systemctl restart docker # 重启 Docker 服务
sudo systemctl status docker # 检查 Docker 服务状态
检查配置是否生效,运行以下命令,查看 Docker 配置信息:
docker info

在输出中查找 Registry Mirrors,确认配置的镜像加速地址已成功应用。
如果配置后 Docker 仍无法正常工作,可能是镜像源不可用。目前许多国内镜像源存在不稳定的情况,建议尝试其他镜像源或直接使用官方源。
自 Docker 20.10.0 版本起,Docker Compose 作为子命令集成到 Docker CLI 中,成为 Docker Compose V2。与之前的 Compose V1(Python 版 docker-compose)相比,V2 提供了更强大的功能,包括改进的 CLI 体验和优化的 BuildKit 构建性能。从 2023 年 7 月 起,Compose V1 已停止更新,并在 Docker Desktop 新版本中不可用。因此,Vulhub 不再需要单独安装 docker-compose,文档也已更新为使用 docker compose 子命令。
我的 Docker 版本是 26.1.5,远高于 20.10.0,因此应该自带 docker compose 功能。 运行以下命令,检查是否支持 docker compose:
docker compose version
如果输出类似以下内容,说明 docker compose 已安装:

如果提示命令未找到,则进行如下步骤:

查找 docker compose 的文件位置 Docker Compose V2 通常作为 CLI 插件安装,默认路径可能位于以下目录之一:
/usr/libexec/docker/cli-plugins
/usr/local/lib/docker/cli-plugins
~/.docker/cli-plugins
如果未找到 docker compose 文件,可以手动下载并安装 Docker Compose 二进制文件。 访问 Docker Compose 的 GitHub 发布页面:https://github.com/docker/compose/releases 根据你的系统架构,下载对应的二进制文件:
uname -s # 查看操作系统类型(例如:Linux)
uname -m # 查看系统架构(例如:x86_64)

将下载的文件移动到 /usr/libexec/docker/cli-plugins/ 目录:
mv docker-compose-linux-x86_64 /usr/libexec/docker/cli-plugins/docker-compose
chmod +x /usr/libexec/docker/cli-plugins/docker-compose # 赋予可执行权限
docker compose version # 查看 docker compose 版本信息

至此,Docker Compose 环境配置已完成。
Vulhub 是一个基于 Docker 的漏洞环境集合,可以通过以下命令下载:
# 下载项目
wget https://github.com/vulhub/vulhub/archive/master.zip -O vulhub-master.zip
# 解压
unzip vulhub-master.zip
# 进入解压后的目录
cd vulhub-master

进入某个漏洞/环境的目录,例如 Flask SSTI:
cd flask/ssti

启动环境:
docker compose pull # 拉取所需镜像
docker compose up -d # 启动环境
docker images # 列出本地所有镜像

等待容器启动,如果你已经启动了容器,可以通过以下命令查看端口映射:
docker ps

你可以通过浏览器访问 http://localhost:8000 来测试漏洞环境。


再次提醒:如果 docker compose pull 拉取所需镜像失败,可能是镜像源不可用。目前许多国内镜像源存在不稳定的情况,建议尝试其他镜像源或直接使用官方源。
当你完成漏洞测试后,可以使用以下命令停止并删除容器:
docker compose down
只会清理容器、网络和挂载卷,不会删除镜像。
至此,vulhub 搭建已完成。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online