想练手又不想碰别人的系统,最省事的办法是在自己机器上跑一套"故意有洞"的应用。Docker 让这件事变成几条命令。

准备工作

  • 装 Docker Desktop(Windows / macOS)或 docker + docker-compose(Linux)
  • 确认磁盘留出至少 10GB
  • 不需要外网 —— 镜像拉好之后可以完全离线跑

一个最小可用环境

建一个 docker-compose.yml:

services:
  dvwa:
    image: vulnerables/web-dvwa
    ports:
      - "127.0.0.1:8080:80"
    restart: unless-stopped

启动:

docker compose up -d
# 浏览器打开 http://127.0.0.1:8080 ,默认账号 admin / password

注意 127.0.0.1:8080:80 这个写法:只把端口绑到本机回环。写成 8080:80 会监听所有网卡,同一 Wi-Fi 下的其他人也能访问到一个满是漏洞的站点 —— 那就不叫练习环境了。

再加一个现代一点的

  juice:
    image: bkimminich/juice-shop
    ports:
      - "127.0.0.1:3000:3000"

Juice Shop 覆盖的问题类型更现代(前端逻辑、接口越权等),和 DVWA 互补。

用完就扔

docker compose down     # 停掉并删除容器
docker compose up -d    # 需要时重新起,环境干净如初

这正是容器比虚拟机方便的地方:搞坏了不用修,删掉重来。

几条纪律

  • 端口只绑 127.0.0.1
  • 不要在靶场里放任何真实数据
  • 练习时不需要给防火墙开洞