从零开始:使用Docker快速搭建vulfocus漏洞靶场环境

张开发
2026/4/14 2:39:56 15 分钟阅读

分享文章

从零开始:使用Docker快速搭建vulfocus漏洞靶场环境
1. 为什么选择Docker搭建vulfocus漏洞靶场第一次接触漏洞靶场时我试过各种复杂的搭建方式直到发现Docker这个神器。vulfocus作为国内知名的漏洞集成平台用Docker部署简直就像搭积木一样简单。相比传统方式需要配置各种依赖环境Docker把整个靶场打包成标准化的集装箱真正做到开箱即用。实测下来这种方案有三大优势首先是隔离性每个漏洞环境都运行在独立的容器里不会污染宿主机其次是可移植性我在Ubuntu上配好的环境同事在Mac上拉取镜像就能直接运行最重要的是快速回滚测试时把容器玩崩了删掉重来只要10秒钟。对于刚入门的安全研究员这能节省大量折腾环境的时间。常见误区是觉得Docker学习曲线陡峭。其实基础操作就几个命令我教过的实习生都能在半小时内上手。下面这张表对比了传统部署和Docker部署的差异对比项传统部署Docker部署环境准备需安装各类依赖库只需安装Docker引擎部署时间30分钟~数小时5分钟以内隔离性容易污染系统环境完全隔离迁移成本需重新配置环境镜像拉取即用2. 环境准备与Docker安装2.1 硬件与系统要求我的老戴尔笔记本(i5-8250U/8GB内存)跑vulfocus完全无压力实测同时运行5个漏洞容器内存占用不到60%。推荐配置CPU双核以上现代处理器基本都满足内存4GB起步8GB更流畅磁盘至少20GB可用空间镜像和容器会占用空间系统方面我在Ubuntu 20.04上测试最稳定但CentOS 7/8、Debian 10也都完美兼容。Windows用户建议使用WSL2性能比原生Docker Desktop更好。这里以Ubuntu为例其他系统只需替换包管理命令。2.2 Docker安装详解先卸载旧版本避免冲突sudo apt-get remove docker docker-engine docker.io containerd runc安装依赖工具sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release添加Docker官方GPG密钥curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg设置稳定版仓库echo deb [archamd64 signed-by/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null最后安装Docker引擎sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io验证安装是否成功sudo docker run hello-world看到Hello from Docker!说明环境就绪。建议将当前用户加入docker组避免每次都要sudosudo usermod -aG docker $USER newgrp docker # 立即生效3. 拉取与运行vulfocus镜像3.1 镜像拉取技巧直接拉取最新版镜像docker pull vulfocus/vulfocus:latest国内用户可能会遇到拉取慢的问题我有两个解决方案使用阿里云镜像加速推荐sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json -EOF { registry-mirrors: [https://你的ID.mirror.aliyuncs.com] } EOF sudo systemctl daemon-reload sudo systemctl restart docker或者从国内仓库拉取docker pull registry.cn-hangzhou.aliyuncs.com/vulfocus/vulfocus:latest拉取完成后检查镜像docker images应该能看到类似这样的输出REPOSITORY TAG IMAGE ID CREATED SIZE vulfocus/vulfocus latest xxxxxxxxxxxx 2 weeks ago 1.2GB3.2 容器创建关键参数创建容器时最容易踩坑的就是参数配置很多教程给的命令复杂又不解释。经过多次测试我总结出最简配置docker create -p 8080:80 -v /var/run/docker.sock:/var/run/docker.sock -e VUL_IP你的宿主机IP vulfocus/vulfocus参数说明-p 8080:80把容器内80端口映射到宿主机8080避免与本地服务冲突-v /var/run/docker.sock:/var/run/docker.sock让vulfocus能管理Docker用于启动漏洞容器-e VUL_IP必须设置为宿主机在局域网的实际IP不能是127.0.0.1获取宿主机IP的方法ip addr show docker0 | grep inet | awk {print $2} | cut -d/ -f1如果看到容器创建成功但无法访问八成是忘了启动docker start 容器ID前三位4. 访问与使用vulfocus平台4.1 首次登录配置浏览器访问http://你的IP:8080使用默认账号用户名admin密码admin登录后第一件事就是改密码在右上角用户菜单里找到修改密码选项。我遇到过没改密码被内网扫描工具爆破的情况虽然靶场本身不存敏感数据但好习惯要养成。4.2 镜像同步与管理点击左侧镜像管理→一键同步就会从官方仓库拉取所有漏洞镜像。这个过程视网络情况可能需要10-30分钟。同步完成后你会看到类似这样的列表CVE-2020-1938 Tomcat文件包含CVE-2017-12615 Tomcat PUT方法上传CVE-2018-2894 WebLogic任意文件上传每个漏洞都有详细描述和难度评级。我建议新手从一星难度开始比如CVE-2017-7529 Nginx越界读取缓存就是个不错的起点。4.3 启动漏洞环境找到想练习的漏洞点击启动按钮系统会自动创建独立容器。启动成功后点击访问按钮会打开新标签页进入漏洞环境。这里有个实用技巧在启动参数里可以添加-e FLAGyour_flag这样可以在容器内设置flag值方便CTF练习。测试完成后记得停止容器否则会持续占用资源。长期不用的镜像也可以定期清理docker system prune -a5. 常见问题解决方案5.1 容器启动失败排查如果点击启动后一直显示创建中首先检查宿主机Docker服务状态systemctl status docker常见错误及解决方法端口冲突修改vulfocus启动时的映射端口比如-p 8081:80权限不足确保/var/run/docker.sock的权限正确sudo chmod 666 /var/run/docker.sock磁盘空间不足清理无用镜像和容器docker system df # 查看磁盘使用 docker system prune # 清理5.2 网络连接问题跨主机访问时确保防火墙放行了对应端口。如果是云服务器还要检查安全组规则。一个快速测试方法telnet 你的IP 8080如果连不上可能需要sudo ufw allow 8080/tcp5.3 性能优化技巧当同时运行多个漏洞容器时可以限制资源使用docker update --cpus 1 --memory 512M 容器名对于不常用的漏洞建议使用docker save备份镜像docker save -o cve-2020-1938.tar vulfocus/cve-2020-1938需要时再加载docker load -i cve-2020-1938.tar6. 安全注意事项虽然只是本地靶场但有几个安全要点必须注意不要开放2375端口有些教程建议配置Docker远程API这在生产环境极其危险定期更新镜像漏洞环境本身也可能存在漏洞建议每月执行docker pull vulfocus/vulfocus:latest敏感信息处理如果要在公司网络使用记得修改默认密码和端口资源监控使用htop或docker stats查看资源占用避免影响主机性能我在内网部署时遇到过容器逃逸的情况后来通过以下配置增强安全性docker run --security-opt no-new-privileges --cap-drop ALL --read-only ...对于想深入研究Docker安全的同学可以试试在vulfocus里启动CVE-2019-5736 runc容器逃逸这个环境亲身体验容器突破的全过程。

更多文章