以下是为安全测试设计的 Docker 靶机环境推荐列表,涵盖多种漏洞场景,并提供快速部署指南:
一、预制 Docker 靶机镜像
1. Metasploitable 系列
- 镜像地址:
docker pull tleemcjr/metasploitable2
docker pull phocean/msf - 漏洞类型:
- FTP弱密码、SSH漏洞(vsftpd 2.3.4后门)
- Samba漏洞(CVE-2007-2447)
- PHP-CGI参数注入(CVE-2012-1823)
2. DVWA (Damn Vulnerable Web App)
- 快速启动:
docker run -d -p 8080:80 vulnerables/web-dvwa
- 功能:
- SQL注入、XSS、文件包含等Web漏洞
- 可调安全等级(Low/Medium/High)
3. OWASP Juice Shop
- 部署命令:
docker run -d -p 3000:3000 bkimminich/juice-shop
- 特点:
- 现代JavaScript应用(Node.js+Angular)
- 包含100+漏洞(XXE、JWT缺陷、API滥用等)
4. Vulhub
- 项目地址:https://vulhub.org
- 使用方式:
git clone https://github.com/vulhub/vulhub
cd vulhub/activemq/CVE-2016-3088 && docker-compose up -d - 覆盖漏洞:
- ActiveMQ文件上传(CVE-2016-3088)
- Struts2远程代码执行(S2-045)
5. HackTheBox 风格靶机
- 推荐镜像:
docker pull secsi/docker-htb
docker run -it secsi/docker-htb /bin/bash - 内容:
- 包含Nmap、Hydra、SQLMap等工具
- 模拟真实渗透场景(需自行配置漏洞)
二、自定义 Docker 靶机构建
1. 基础Dockerfile模板
FROM ubuntu:20.04
# 安装漏洞服务(示例:旧版ProFTPD)
RUN apt-get update && apt-get install -y proftpd=1.3.4a-3build1 && \
apt-get clean && rm -rf /var/lib/apt/lists/*
# 配置漏洞环境
COPY vulnerable_config.conf /etc/proftpd/proftpd.conf
# 开放端口
EXPOSE 21 80
# 启动服务
CMD ["sh", "-c", "service proftpd start && tail -f /dev/null"]
2. 多漏洞组合环境(docker-compose.yml)
version: '3'
services:
web:
image: vulnerables/web-dvwa
ports:
- "8080:80"
networks:
- vuln_net
ftp:
image: tleemcjr/metasploitable2
ports:
- "21:21"
networks:
- vuln_net
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: insecure
networks:
- vuln_net
networks:
vuln_net:
driver: bridge
三、安全隔离配置建议
1. 网络隔离
# 创建独立网络
docker network create --internal vuln_internal
# 运行靶机(禁止外部访问)
docker run -d --network vuln_internal --name vuln_container1 tleemcjr/metasploitable2
2. 资源限制
docker run -d \
--memory 512m \
--cpus 1 \
--security-opt no-new-privileges \
vulnerables/web-dvwa
3. 日志监控
# 启动ELK收集日志
docker-compose -f https://github.com/deviantony/docker-elk/raw/main/docker-compose.yml up -d
# 配置Docker日志驱动
docker run -d \
--log-driver=syslog \
--log-opt syslog-address=tcp://localhost:5000 \
tleemcjr/metasploitable2
四、漏洞验证工具集成
1. Kali Linux 测试容器
docker run -it --rm --network vuln_net kalilinux/kali-rolling /bin/bash
apt update && apt install -y nmap sqlmap hydra
2. 自动化扫描
# 使用Nmap扫描靶机
docker run --rm --network host instrumentisto/nmap -sV 172.17.0.0/24
# 使用SQLMap测试Web
docker run --rm -it paoloo/sqlmap -u "http://target/vuln.php?id=1" --batch
五、重要注意事项
禁止暴露公网:
# 错误示范(绝对避免!)
docker run -d -p 0.0.0.0:80:80 vulnerables/web-dvwa
# 正确限制IP
docker run -d -p 127.0.0.1:8080:80 vulnerables/web-dvwa定期重置环境:
docker-compose down -v # 删除数据卷
docker system prune -af # 清理残留漏洞数据库维护:
- 订阅CVE公告(https://cve.mitre.org)
- 使用Clair扫描镜像漏洞:
docker run -d --name clair-db arminc/clair-db:latest
docker run -p 6060:6060 --link clair-db:postgres arminc/clair-local-scan:v2.1.0
通过以上方案,您可以在完全隔离的Docker环境中构建丰富的漏洞演练场景,适合红蓝对抗、CTF训练或安全工具测试。