以下是为安全测试设计的 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

五、重要注意事项

  1. 禁止暴露公网

    # 错误示范(绝对避免!)
    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
  2. 定期重置环境

    docker-compose down -v  # 删除数据卷
    docker system prune -af # 清理残留
  3. 漏洞数据库维护

    • 订阅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训练或安全工具测试。