从零到一:手把手搭建你的专属Vulfocus漏洞靶场
1. 为什么你需要一个本地漏洞靶场
第一次接触网络安全时,我总在找各种在线靶场练习。但经常遇到网站打不开、题目加载慢的问题,有时候好不容易找到个漏洞,结果靶机关闭了。后来发现搭建本地靶场才是王道,就像厨师要有自己的厨房一样,安全工程师也需要随时可用的练习环境。
Vulfocus这个开源项目完美解决了我的痛点。它把常见的漏洞环境打包成Docker镜像,比如SQL注入、文件上传这些经典漏洞,点点鼠标就能启动。最棒的是完全离线可用,不用担心网络问题。我常在公司内网服务器部署一套,新员工培训时直接开十几个漏洞实例,比用在线平台稳定多了。
提示:虽然官方提供在线版本,但自己搭建能获得完全控制权,还能自定义漏洞环境
2. 环境准备:十分钟搞定Docker全家桶
2.1 选择你的作战平台
我推荐用Ubuntu 20.04 LTS,对Docker支持最友好。最近帮朋友在CentOS 7上装Docker就遇到内核版本问题,折腾半天。如果你用Windows,建议直接上WSL2,我在Surface Pro上实测跑Docker比虚拟机流畅三倍。
2.2 一键安装脚本
新手最容易卡在依赖问题上,这个脚本我用了三年,适配主流Linux发行版:
#!/bin/bash # 适用于Debian/Ubuntu sudo apt update && sudo apt upgrade -y sudo apt install -y curl git curl -fsSL https://get.docker.com | sh sudo usermod -aG docker $USER sudo systemctl enable --now docker sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose跑完脚本记得newgrp docker刷新用户组,否则会提示权限不足。有次培训时忘了这步,现场演示翻车,现在我都把这命令写在便签贴显示器上。
3. 靶场部署:避开我踩过的那些坑
3.1 镜像加速的玄学
国内拉镜像慢得像蜗牛,我试过七家镜像源,总结出最佳配置:
{ "registry-mirrors": [ "https://docker.1panel.live", "https://hub.rat.dev" ], "insecure-registries": [], "debug": false, "experimental": false }把这段保存到/etc/docker/daemon.json后,一定要sudo systemctl restart docker!有次我改了配置没重启服务,愣是debug半小时才发现问题。
3.2 启动命令的隐藏参数
官方文档给的启动命令其实缺了个关键参数:
docker run -d --name vulfocus -p 80:80 -v /var/run/docker.sock:/var/run/docker.sock -e VUL_IP=$(hostname -I | awk '{print $1}') -e VUL_PROXY="http://your_proxy" vulfocus/vulfocus那个VUL_PROXY是给有内网代理的企业用的。上个月给某银行部署时,他们的安全策略要求所有容器流量走代理,不加这个参数靶场根本连不上外网。
4. 高级玩法:打造你的漏洞库
4.1 自定义漏洞镜像
Vulfocus最强大的地方是支持自定义。我有套自己整理的漏洞集合:
FROM vulhub/struts2:s2-045 LABEL maintainer="your@email.com" ENV VUL_NAME "Struts2 S2-045 RCE" ENV VUL_DESC "经典OGNL表达式注入漏洞"构建完推送到私有仓库,团队所有人都能用了。记得给镜像打上清晰标签,我有次没标注版本,半年后完全想不起这个镜像测试什么漏洞。
4.2 批量管理技巧
用docker-compose管理多个靶场环境特别方便:
version: '3' services: vulfocus: image: vulfocus/vulfocus ports: - "80:80" volumes: - /var/run/docker.sock:/var/run/docker.sock dvwa: image: vulnerables/web-dvwa ports: - "8080:80"这样一条docker-compose up -d就能同时启动Vulfocus和DVWA。上周红蓝对抗演练,我靠这个技巧快速部署了八个不同难度的靶机。
5. 日常维护:让靶场持续稳定运行
5.1 资源监控方案
靶场吃内存很厉害,我写了个监控脚本:
#!/bin/bash THRESHOLD=80 while true; do USAGE=$(free | awk '/Mem/{printf("%d"), $3/$2*100}') if [ $USAGE -gt $THRESHOLD ]; then docker ps --format "{{.Names}}" | xargs -I {} docker stop {} sleep 30 docker start vulfocus fi sleep 60 done配合nohup扔后台运行,再也没遇到过服务器被靶场拖垮的情况。记得把阈值设低点,有次设到90%,结果OOM killer比脚本先出手了。
5.2 数据备份策略
靶场数据我采用双备份方案:
- 每天凌晨3点自动导出数据库:
docker exec vulfocus pg_dump -U postgres > /backups/vulfocus_$(date +%Y%m%d).sql- 每周五全量打包镜像:
docker save vulfocus/vulfocus | gzip > /backups/vulfocus_$(date +%Y%m%d).tar.gz去年硬盘故障,靠这个方案十分钟就恢复了所有漏洞数据。现在团队新人入职,我都先教他们备份再教渗透。
