从零到一:基于Docker-Compose的Vulhub靶场快速部署指南
1. 为什么你需要Vulhub靶场如果你正在学习网络安全或者想提升自己的渗透测试技能Vulhub靶场绝对是你的最佳选择。想象一下你可以在自己的电脑上搭建一个包含各种真实漏洞的环境随时进行实战演练而不用担心触犯法律或影响他人系统。这就是Vulhub的魅力所在。Vulhub是一个开源的漏洞靶场平台它最大的特点就是简单易用。你不需要深入了解Docker的复杂原理只需要执行几条简单的命令就能快速搭建起一个完整的漏洞环境。这对于初学者来说特别友好可以让你把更多精力放在漏洞原理的学习上而不是环境配置的繁琐过程中。我刚开始学习渗透测试时最头疼的就是找不到合适的环境来练习。要么是环境太复杂搭建不起来要么就是漏洞太老已经无法复现。直到发现了Vulhub这些问题都迎刃而解。它包含了从Web应用到系统服务的各种漏洞场景而且都是基于真实漏洞构建的特别适合用来练习和验证。2. 准备工作搭建基础环境2.1 选择合适的操作系统虽然Vulhub可以在多种Linux发行版上运行但我强烈推荐使用Kali Linux作为基础环境。Kali Linux是专为安全测试设计的发行版预装了各种安全工具而且与Docker的兼容性非常好。如果你还没有安装Kali可以去官网下载最新的ISO镜像。安装好Kali后第一件事就是确保网络连接正常。建议使用NAT网络模式这样既能保证虚拟机上网又不会影响宿主机网络。你可以通过ping命令测试网络连通性ping www.baidu.com如果看到有数据包返回说明网络连接正常。如果无法ping通可能需要检查虚拟机的网络设置。2.2 更新系统软件包在安装任何新软件之前最好先更新系统已有的软件包。这可以避免后续安装过程中出现依赖冲突的问题。执行以下命令更新软件源列表sudo apt-get update这个命令会从软件源服务器获取最新的软件包列表但不会实际安装更新。如果你想升级所有已安装的软件包可以接着运行sudo apt-get upgrade不过要注意升级系统版本dist-upgrade可能会带来一些兼容性问题除非你有特殊需求否则不建议执行这个操作。2.3 安装必要的依赖包为了确保后续安装过程顺利进行我们需要先安装一些基础依赖包。最重要的是https协议支持和CA证书因为很多软件源现在都使用https协议sudo apt-get install -y apt-transport-https ca-certificates这个命令中的-y参数表示自动确认所有提示可以避免安装过程中需要手动确认的麻烦。安装完成后系统就能安全地从https源下载软件了。3. 安装Docker引擎3.1 安装DockerDocker是运行Vulhub的基础我们需要先安装Docker引擎。在Kali Linux上安装Docker非常简单只需要一条命令sudo apt install docker.io这个命令会从Kali的软件源安装Docker及其所有依赖。安装过程可能需要几分钟时间取决于你的网络速度。安装完成后我们可以验证Docker是否安装成功docker --version如果看到类似Docker version 20.10.5的输出说明Docker已经成功安装。3.2 测试Docker功能为了确保Docker能正常工作我们可以运行一个简单的测试容器sudo docker run hello-world这个命令会下载一个很小的测试镜像并运行它。如果一切正常你会看到一段欢迎信息说明Docker已经正确安装并可以运行容器。3.3 管理Docker服务默认情况下Docker服务是自动启动的。但如果你需要手动启动或停止Docker服务可以使用以下命令sudo systemctl start docker # 启动Docker服务 sudo systemctl stop docker # 停止Docker服务 sudo systemctl restart docker # 重启Docker服务你还可以查看Docker的运行状态sudo systemctl status docker这个命令会显示Docker服务的详细状态信息包括是否正在运行、运行了多长时间等。4. 安装Docker-Compose工具4.1 安装Python包管理工具Docker-Compose是用Python编写的所以我们需要先安装Python的包管理工具pip。在Kali Linux上我们可以安装Python3版本的pipsudo apt-get install python3-pip安装完成后可以通过以下命令验证pip是否安装成功pip3 --version4.2 安装Docker-Compose有了pip3我们就可以轻松安装Docker-Compose了sudo pip3 install docker-compose这个命令会从Python的包仓库下载并安装最新版的Docker-Compose。安装过程可能需要一些时间请耐心等待。安装完成后我们可以检查Docker-Compose的版本docker-compose --version如果看到类似docker-compose version 1.29.2的输出说明安装成功。4.3 Docker-Compose的基本使用Docker-Compose是一个用于定义和运行多容器Docker应用的工具。它使用YAML文件来配置应用的服务然后通过一个简单的命令就能启动和停止所有服务。Vulhub的每个漏洞环境都附带一个docker-compose.yml文件这个文件定义了该环境需要的所有容器及其配置。我们只需要在包含这个文件的目录下运行docker-compose命令就能管理整个环境。5. 部署Vulhub靶场5.1 下载Vulhub源码现在我们已经准备好了所有必要的工具可以开始部署Vulhub了。首先我们需要从Git仓库克隆Vulhub的源代码git clone https://gitee.com/puier/vulhub.git这个命令会把Vulhub的所有漏洞环境下载到当前目录下的vulhub文件夹中。下载完成后我们可以进入该目录查看内容cd vulhub ls你会看到很多以漏洞名称命名的文件夹每个文件夹都对应一个特定的漏洞环境。5.2 选择一个漏洞环境Vulhub包含了大量的漏洞环境我们可以选择任何一个进行部署。作为示例我们来部署一个WebLogic的反序列化漏洞环境CVE-2017-10271cd weblogic/CVE-2017-10271进入目标目录后你会看到一个docker-compose.yml文件这就是该环境的配置文件。5.3 构建和启动环境现在我们可以开始构建并启动这个漏洞环境了。首先执行构建命令sudo docker-compose build这个命令会根据docker-compose.yml文件中的配置下载所需的Docker镜像并构建容器。第一次运行时会下载基础镜像可能需要一些时间。构建完成后我们可以启动环境sudo docker-compose up -d这里的-d参数表示在后台运行容器。命令执行成功后环境就已经启动并运行了。5.4 验证环境状态我们可以查看当前运行的容器状态sudo docker-compose ps这个命令会显示该环境中所有容器的状态信息包括容器ID、使用的镜像、状态、端口映射等。对于WebLogic环境你应该能看到它映射了7001端口。6. 访问和使用靶场环境6.1 通过浏览器访问靶场现在靶场环境已经运行起来了我们可以通过浏览器访问它。根据docker-compose ps的输出WebLogic服务运行在7001端口所以我们可以在浏览器中访问http://localhost:7001如果一切正常你应该能看到WebLogic的登录页面。如果看到404页面不要担心这是正常的因为这个漏洞环境就是这样的。6.2 进行漏洞测试现在你可以使用各种工具对这个漏洞环境进行测试了。以CVE-2017-10271为例这是一个XML反序列化漏洞你可以使用Burp Suite或者其他工具构造特定的XML请求来利用这个漏洞。具体的漏洞利用方法不在本文讨论范围内但Vulhub的每个漏洞环境目录中通常都附带了漏洞说明和利用方法你可以参考这些文档进行学习。6.3 关闭和清理环境当你完成测试后可以关闭这个漏洞环境以释放系统资源sudo docker-compose down这个命令会停止并移除该环境的所有容器。如果你想完全删除构建的镜像以释放磁盘空间可以添加--rmi all参数sudo docker-compose down --rmi all需要注意的是这个操作会删除该环境使用的所有镜像下次启动时需要重新下载和构建。7. 常见问题与解决方案7.1 端口冲突问题有时候你可能会遇到端口冲突的问题特别是当你尝试启动多个靶场环境时。例如如果两个环境都试图使用同一个端口如8080第二个环境就会启动失败。解决方法是在docker-compose.yml文件中修改端口映射。比如把8080:8080改为8081:8080这样容器内的8080端口就会被映射到主机的8081端口。7.2 磁盘空间不足Docker镜像和容器会占用大量磁盘空间。如果你频繁地构建和删除环境可能会发现磁盘空间不足。这时可以清理不再使用的Docker资源sudo docker system prune这个命令会删除所有停止的容器、未被任何容器使用的网络、悬空的镜像和构建缓存。如果你想彻底清理所有未使用的镜像可以加上-a参数sudo docker system prune -a7.3 权限问题在Linux系统上Docker默认需要root权限。如果你不想每次都输入sudo可以将当前用户加入docker用户组sudo usermod -aG docker $USER然后退出并重新登录这样你就可以直接使用docker命令而不需要sudo了。不过要注意这样做会给予该用户相当大的权限所以只建议在个人开发环境中使用。7.4 网络问题在国内使用Docker时可能会遇到下载镜像速度慢的问题。这是因为Docker Hub的服务器在国外。我们可以配置Docker使用国内的镜像加速器sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json -EOF { registry-mirrors: [https://registry.docker-cn.com] } EOF sudo systemctl daemon-reload sudo systemctl restart docker这样配置后Docker会从国内的镜像源下载镜像速度会快很多。