# Vulhub + Docker 靶场搭建指南(Linux 版,推荐 Ubuntu / Debian,也附CentOS7说明) > Vulhub:预编译漏洞环境集合,基于docker-compose一键拉起漏洞靶场,用于Web/内网漏洞复现、渗透练习。 > ⚠️ 重要提醒:**仅在本地虚拟机/个人测试环境使用,禁止在公网部署,禁止未经授权对任何外部IP进行渗透测试**。 ## 一、环境前置要求 - 操作系统:Ubuntu 20.04/22.04 推荐;CentOS7/8 可用 - 硬件:内存 ≥4G,建议8G;磁盘预留至少20G空间(镜像占用大) - 关闭宿主机防火墙/放行本地网段,虚拟机建议NAT模式 ## 二、安装 Docker & Docker Compose ### 方式1:Ubuntu/Debian ```bash # 更新软件源 apt update && apt upgrade -y # 安装依赖 apt install ca-certificates curl git -y # 安装docker官方源 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null apt update apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y # 启动docker并设置开机自启 systemctl start docker systemctl enable docker # 将当前用户加入docker组(免sudo执行docker命令,需要重新登录生效) usermod -aG docker $USER ``` ### 方式2:CentOS7 ```bash yum install -y yum-utils git yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install docker-ce docker-ce-cli containerd.io -y systemctl start docker systemctl enable docker usermod -aG docker $USER # centos7 需要单独安装 docker-compose yum install python3-pip -y pip3 install docker-compose ``` ### 验证安装 ```bash docker --version docker compose version ``` ## 三、下载 Vulhub 源码 ```bash git clone https://github.com/vulhub/vulhub.git cd vulhub # 查看漏洞目录,所有漏洞按项目分类 ls ``` > 国内访问github慢:可以使用国内镜像fork地址下载。 ## 四、使用靶场基础操作(核心命令) 进入**对应漏洞目录**,例如 `spring4shell` ```bash cd vulhub/spring/spring4shell # 启动环境,后台拉取镜像并启动容器 docker compose up -d ``` - `-d` 后台守护运行,不占用终端 - 首次执行会自动下载漏洞镜像,网络慢会耗时较长 ### 查看容器状态 ```bash docker ps ``` ### 查看靶场输出信息(很多漏洞会输出访问地址、账号密码) ```bash docker compose logs -f ``` ### 关闭靶场(保留镜像,下次可以直接up) ```bash docker compose down ``` ### 关闭靶场并且**删除容器+镜像**(释放磁盘) ```bash docker compose down --rmi all ``` ## 五、常用docker辅助命令(靶场维护) ```bash # 查看本地所有镜像 docker images # 删除无用镜像(清理磁盘) docker image prune -a # 进入容器内部(调试) docker exec -it 容器ID /bin/bash # 停止所有容器 docker stop $(docker ps -q) # 删除所有容器 docker rm $(docker ps -aq) ``` ## 六、常见问题排查 1. **docker compose up 超时,镜像拉取失败** > 配置Docker国内镜像加速器,编辑 `/etc/docker/daemon.json` ```json { "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn", "https://hub-mirror.c.163.com" ] } ``` ```bash # 重启docker生效 systemctl daemon-reload systemctl restart docker ``` 2. **端口冲突** 报错提示端口已占用:修改`docker-compose.yml`,将宿主机映射端口更换,例如 `8080:80` → `8081:80` 3. 内存不足:启动失败、容器自动退出 > 分配更多虚拟机内存,关闭其他占用内存容器。 4. 宿主机无法访问靶场网站 - 检查容器是否正常启动 `docker ps` - 检查虚拟机防火墙:`ufw status`,临时关闭 `ufw disable` - 确认容器内服务监听0.0.0.0,不是127.0.0.1 ## 七、靶场使用安全红线(必看) 1. Vulhub漏洞环境存在高危漏洞,**绝对不要暴露到公网**;仅本地虚拟机使用 2. 所有漏洞环境仅用于学习、复现、代码审计练习 3. 任何未经授权对外网/企业资产进行渗透测试属于违法行为 ## 八、推荐优先复现的漏洞清单(Web渗透入门) - struts2系列漏洞 - Spring4Shell / SpringBoot漏洞 - Fastjson 反序列化 - ThinkPHP 多版本漏洞 - Log4j2 远程代码执行 - PHP文件包含、SQL注入、文件上传靶场