1. Web安全测试环境搭建与靶场部署
为什么需要隔离靶场
Web安全测试涉及大量主动探测、注入尝试和越权访问,这些操作绝不能直接对着生产系统或未授权目标执行。搭建隔离靶场的目的,是获得一个可随意破坏、可反复重置、流量完全可控的练习环境。本节以 Docker 部署 DVWA 与 OWASP Juice Shop 为例,完成从容器启动、代理配置到流量验证的完整闭环。
环境拓扑与流量路径
下图给出本节的核心结构:浏览器通过代理访问靶场容器,代理工具位于中间捕获全部 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。浏览器需要完成两步配置:
- 设置代理:将 HTTP 和 HTTPS 代理均指向
127.0.0.1:8080。推荐使用浏览器插件(如 FoxyProxy)快速切换,避免修改系统全局代理。 - 导入 CA 证书:访问
http://burpsuite或从代理工具导出cacert.der,在浏览器证书管理器中导入并信任。否则 HTTPS 站点会因证书不受信而无法正常加载。
验证证书是否生效:浏览器访问
https://localhost:3000,若地址栏显示锁形图标且无安全警告,说明 CA 证书已被信任,代理可以解密 HTTPS 流量。验证流量可被完整捕获
完成上述配置后,按以下顺序验证:
- 打开代理工具的 Proxy → Intercept,确认拦截功能处于开启状态。
- 浏览器访问
http://localhost:8081,应能在代理中看到 DVWA 登录页的 GET 请求。 - 在 DVWA 登录框输入
admin / password并提交,代理中应出现 POST 请求,包含username、password、Login等参数。 - 访问
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
至此,隔离靶场、代理链路和证书信任均已就绪,后续所有测试请求都可以在代理中完整观察和修改。