1. Web安全测试环境搭建与靶场部署

Web安全测试环境搭建与靶场部署 学习卡片

为什么需要隔离靶场

Web安全测试涉及大量主动探测、注入尝试和越权访问,这些操作绝不能直接对着生产系统或未授权目标执行。搭建隔离靶场的目的,是获得一个可随意破坏、可反复重置、流量完全可控的练习环境。本节以 Docker 部署 DVWA 与 OWASP Juice Shop 为例,完成从容器启动、代理配置到流量验证的完整闭环。

环境拓扑与流量路径

下图给出本节的核心结构:浏览器通过代理访问靶场容器,代理工具位于中间捕获全部 HTTP/HTTPS 流量。理解这条路径是后续所有测试的基础。

浏览器 代理: 127.0.0.1:8080 导入 CA 证书 代理工具 Burp / ZAP 监听 8080 拦截 / 记录 HTTPS 解密 Docker 主机 (隔离网络) DVWA localhost:8081 SQL注入 / XSS / 文件包含 OWASP Juice Shop localhost:3000 JWT / 越权 / 业务逻辑 HTTP/HTTPS 转发请求 流量捕获点 请求 + 响应完整可见

部署 DVWA 与 Juice Shop

使用 Docker 可以在几分钟内拉起两个靶场,且互不干扰。以下命令假设本机已安装 Docker Desktop 或 Docker Engine。

# 1. 拉取并启动 DVWA(映射到 8081)
docker run -d --name dvwa -p 8081:80 vulnerables/web-dvwa

# 2. 拉取并启动 OWASP Juice Shop(映射到 3000)
docker run -d --name juice-shop -p 3000:3000 bkimminich/juice-shop

# 3. 确认容器运行状态
docker ps --format "table {{.Names}}\t{{.Ports}}\t{{.Status}}"

预期输出中应看到两个容器均为 Up 状态,端口映射分别为 0.0.0.0:8081->80/tcp 和 0.0.0.0:3000->3000/tcp。若端口被占用,可改用其他宿主机端口,但后续访问地址需同步调整。

配置代理与浏览器证书

代理工具(以 Burp Suite 为例)默认监听 127.0.0.1:8080。浏览器需要完成两步配置:

  1. 设置代理:将 HTTP 和 HTTPS 代理均指向 127.0.0.1:8080。推荐使用浏览器插件(如 FoxyProxy)快速切换,避免修改系统全局代理。
  2. 导入 CA 证书:访问 http://burpsuite 或从代理工具导出 cacert.der,在浏览器证书管理器中导入并信任。否则 HTTPS 站点会因证书不受信而无法正常加载。
验证证书是否生效:浏览器访问 https://localhost:3000,若地址栏显示锁形图标且无安全警告,说明 CA 证书已被信任,代理可以解密 HTTPS 流量。

验证流量可被完整捕获

完成上述配置后,按以下顺序验证:

  1. 打开代理工具的 Proxy → Intercept,确认拦截功能处于开启状态。
  2. 浏览器访问 http://localhost:8081,应能在代理中看到 DVWA 登录页的 GET 请求。
  3. 在 DVWA 登录框输入 admin / password 并提交,代理中应出现 POST 请求,包含 username、password、Login 等参数。
  4. 访问 https://localhost:3000,确认 Juice Shop 的 HTTPS 请求同样出现在代理历史中,且响应内容可读。
若 HTTPS 请求在代理中显示为乱码或无法解密,通常是 CA 证书未正确导入或浏览器仍在使用 HSTS 强制跳转。可尝试清除浏览器 HSTS 记录或使用隐私窗口重新访问。

环境重置与清理

靶场被破坏后无需重装,直接删除容器并重新创建即可恢复初始状态:

# 停止并删除容器
docker rm -f dvwa juice-shop

# 重新创建(数据不保留,回到初始状态)
docker run -d --name dvwa -p 8081:80 vulnerables/web-dvwa
docker run -d --name juice-shop -p 3000:3000 bkimminich/juice-shop

至此,隔离靶场、代理链路和证书信任均已就绪,后续所有测试请求都可以在代理中完整观察和修改。