3. 测试环境与工具准备:测试环境搭建、Burp Suite / Postman 配置、靶场部署、测试账号准备

3.1 适用场景

  • 授权访问控制测试(水平越权、垂直越权、未授权访问)的实验环境准备。
  • 团队内部能力建设 / 红蓝对抗演练 / 安全测试岗前实操考核。
  • 需同时模拟 Web 流量代理分析(Burp Suite)与 API 直接调用(Postman)的混合场景。

3.2 前置条件

类别要求
硬件一台 8GB 以上内存的 x86_64 主机(建议 16GB)
系统Windows 10/11 / macOS 12+ / Ubuntu 20.04+
网络可访问互联网(下载工具镜像),本地回环可达
必备工具Docker Desktop / Docker Engine(版本 ≥ 20.10)
账户权限管理员/root 权限(安装证书、监听 80/443 端口需提权)

3.3 操作步骤

3.3.1 测试环境拓扑搭建

使用 Docker 快速部署包含靶机、数据库、模拟用户服务的内部网络。

推荐网络模式:bridge —— 将靶场容器加入 auth-lab 自定义网络,便于容器间固定 IP 通信。
  1. 创建 Docker 网络:
    docker network create --subnet=172.20.0.0/16 auth-lab
  2. 拉取基础镜像(示例使用 bWAPP / DVWA / 自构建 JWT 靶场):
    docker pull vulnerables/web-dvwa:latest
    docker pull raesene/bwapp:latest
  3. 运行靶场容器并加入网络:
    docker run -d --name dvwa --network auth-lab --ip 172.20.0.10 -p 8081:80 vulnerables/web-dvwa:latest
    docker run -d --name bwapp --network auth-lab --ip 172.20.0.11 -p 8082:80 raesene/bwapp:latest
  4. 验证靶场可访问:curl -I http://localhost:8081/ 或浏览器访问。

3.3.2 Burp Suite 代理配置

Burp Suite 需配置监听端口、证书、上游代理(若公司环境)和靶场作用域。

  1. 启动 Burp Suite,选择 Temporary Project。
  2. 在 Proxy > Settings > Proxy Listeners 中添加监听器:
    Bind to port: 8080,Bind to address: All interfaces,勾选 Support invisible proxying。
  3. 导出 CA 证书(用于拦截 HTTPS 流量):
    Proxy > Options > Import / Export CA certificate → Export as DER,保存为 burp_ca.der。
  4. 在操作系统 / 浏览器中安装该证书为受信任根证书。
  5. 配置浏览器代理指向 127.0.0.1:8080,访问 http://burpsuite 确认代理生效。
  6. 在 Target > Scope 中添加靶场地址(如 *.local、172.20.0.*),排除无关域名。
HTTPS 证书警告: 若未安装 Burp 证书,会出现 “连接不安全 / ERR_CERT_AUTHORITY_INVALID”,请检查证书是否导入到系统信任库。

3.3.3 Postman 环境与请求配置

Postman 用于直接构造 API 请求,绕过浏览器代理,测试特定端点和 Header 篡改。

  1. 新建环境(如 AuthTest-Dev),添加变量:
    base_url    http://172.20.0.10:8081
    api_   (留空,由预请求脚本或手动填写)
    user_id     admin
  2. 创建集合 Auth Cases,添加以下请求模板:
    请求方法URL说明
    获取用户列表GET{{base_url}}/api/users未授权测试
    修改他人资料PUT{{base_url}}/api/user/{{user_id}}水平越权
    提升权限POST{{base_url}}/api/admin/privilege垂直越权
  3. 在集合的 Authorization 标签页选择 Bearer ,将 变量绑定到 {{api_}}。
  4. 通过 Pre-request Script 自动获取 (示例):
    pm.sendRequest({
        url: pm.variables.get("base_url") + "/api/login",
        method: 'POST',
        header: {'Content-Type': 'application/json'},
        body: { mode: 'raw', raw: '{"username":"test","password":"test"}' }
    }, function (err, response) {
        pm.variables.set("api_", response.json().);
    });

3.3.4 靶场部署与初始化

若使用 DVWA,需初始化数据库并设置安全等级。

  1. 访问 http://localhost:8081/,点击 Create/Reset Database。
  2. 登录默认账号 admin:password。
  3. 进入 DVWA Security,设置等级为 low(便于测试,后续可逐步提升)。
  4. 创建若干测试用户(SQL 脚本或手工注册):
    INSERT INTO dvwa.users (user_id, first_name, last_name, user, password, avatar, last_login, failed_login) VALUES
    (2, 'Alice', 'Test', 'alice', MD5('alice123'), '', NOW(), 0),
    (3, 'Bob', 'Test', 'bob', MD5('bob456'), '', NOW(), 0);

3.3.5 测试账号准备

角色用户名密码预期权限
管理员adminpassword所有功能 + 管理面板
普通用户Aalicealice123查看/编辑本人资料
普通用户Bbobbob456查看/编辑本人资料
受限用户(可选)guestguest仅可查看公共页面
记录材料: 将账号信息加密存储至 secrets.yml,测试完成后立即销毁。

3.4 责任边界

  • 安全测试工程师:负责环境搭建、工具配置、账号创建及信息保护。
  • 系统管理员:负责提供主机资源、Docker 运行权限、网络端口放行。
  • 开发团队:提供靶场应用正确的 API 端点清单(可选)。
  • 变更管理:任何网络、防火墙规则变更需记录并通过变更流程。

3.5 输入输出物

输入输出
Docker 镜像列表、端口映射方案运行中的靶场容器 + 访问 URL
Burp Suite 证书(未安装)已安装证书的浏览器 / 操作系统
Postman 集合模板(JSON)配置好环境变量和预请求脚本的集合
测试用户清单(明文)加密存储的账号凭据 + 数据库中正式记录

3.6 异常处理

异常现象可能原因解决方案
靶场容器启动失败(端口占用)本地 8081/8082 已被使用修改映射端口,如 -p 9081:80,并更新环境变量
Burp Suite 无法拦截 HTTPS证书未正确安装或浏览器不信任重新导入证书至系统信任库,重启浏览器
Postman 预请求脚本 401靶场登录接口需 CSRF 在脚本中添加获取 后再登录,或使用硬编码
容器内数据库连接失败靶场未初始化 DB访问靶场首页重置数据库按钮

3.7 验收标准

  • Docker 容器状态均为 Up,靶场页面可正常渲染。
  • Burp Suite 可拦截 HTTP/HTTPS 请求并重放,无证书错误。
  • Postman 可向靶场发送 API 请求并获取符合预期的 JSON 响应。
  • 使用已创建的测试账号登录成功,且权限隔离初步生效(管理员能看到用户管理菜单,普通用户看不到)。
授权访问控制测试环境拓扑 测试机 / 攻击机 浏览器 Burp Suite Postman 系统 CA 证书 Docker 靶场网络 (auth-lab / 172.20.0.0/16) DVWA 172.20.0.10:80 bWAPP 172.20.0.11:80 MySQL 172.20.0.100:3306 测试账户 secrets.yml
说明: 上图展示了测试机内部各工具的关系 – 浏览器通过 Burp Suite 代理访问靶场,Postman 直接向靶场 API 发送请求。靶场容器共享后端 MySQL 数据库,测试账号独立存储在加密文件中。