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 通信。
- 创建 Docker 网络:
docker network create --subnet=172.20.0.0/16 auth-lab - 拉取基础镜像(示例使用 bWAPP / DVWA / 自构建 JWT 靶场):
docker pull vulnerables/web-dvwa:latest docker pull raesene/bwapp:latest - 运行靶场容器并加入网络:
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 - 验证靶场可访问:
curl -I http://localhost:8081/或浏览器访问。
3.3.2 Burp Suite 代理配置
Burp Suite 需配置监听端口、证书、上游代理(若公司环境)和靶场作用域。
- 启动 Burp Suite,选择 Temporary Project。
- 在 Proxy > Settings > Proxy Listeners 中添加监听器:
Bind to port: 8080,Bind to address: All interfaces,勾选Support invisible proxying。 - 导出 CA 证书(用于拦截 HTTPS 流量):
Proxy > Options > Import / Export CA certificate → Export as DER,保存为burp_ca.der。 - 在操作系统 / 浏览器中安装该证书为受信任根证书。
- 配置浏览器代理指向
127.0.0.1:8080,访问 http://burpsuite 确认代理生效。 - 在 Target > Scope 中添加靶场地址(如
*.local、172.20.0.*),排除无关域名。
HTTPS 证书警告: 若未安装 Burp 证书,会出现 “连接不安全 / ERR_CERT_AUTHORITY_INVALID”,请检查证书是否导入到系统信任库。
3.3.3 Postman 环境与请求配置
Postman 用于直接构造 API 请求,绕过浏览器代理,测试特定端点和 Header 篡改。
- 新建环境(如
AuthTest-Dev),添加变量:
base_url http://172.20.0.10:8081 api_ (留空,由预请求脚本或手动填写) user_id admin - 创建集合
Auth Cases,添加以下请求模板:
请求 方法 URL 说明 获取用户列表 GET {{base_url}}/api/users未授权测试 修改他人资料 PUT {{base_url}}/api/user/{{user_id}}水平越权 提升权限 POST {{base_url}}/api/admin/privilege垂直越权 - 在集合的 Authorization 标签页选择
Bearer,将 变量绑定到{{api_}}。 - 通过 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,需初始化数据库并设置安全等级。
- 访问
http://localhost:8081/,点击 Create/Reset Database。 - 登录默认账号
admin:password。 - 进入 DVWA Security,设置等级为 low(便于测试,后续可逐步提升)。
- 创建若干测试用户(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 测试账号准备
| 角色 | 用户名 | 密码 | 预期权限 |
|---|---|---|---|
| 管理员 | admin | password | 所有功能 + 管理面板 |
| 普通用户A | alice | alice123 | 查看/编辑本人资料 |
| 普通用户B | bob | bob456 | 查看/编辑本人资料 |
| 受限用户(可选) | guest | guest | 仅可查看公共页面 |
记录材料: 将账号信息加密存储至
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 直接向靶场 API 发送请求。靶场容器共享后端 MySQL 数据库,测试账号独立存储在加密文件中。