3. 目标范围与站点地图工程化
在真实项目中,Burp Suite 的 Proxy 会持续记录浏览器与服务器之间的全部流量。如果不加约束,站点地图很快会被第三方统计、广告、CDN、OAuth 回调、错误页等无关主机填满,导致测试人员难以定位真正的业务入口,也容易在授权边界之外发起请求。本节围绕 Target Scope 的精确配置、站点地图的过滤与注释、请求历史与响应存储策略、多项目并行时的范围隔离,以及避免越权测试的边界控制展开,目标是让“测试范围”成为可执行、可复核、可交接的工程对象,而不是一句口头约定。
一、Target Scope 的精确配置
Target → Scope 是 Burp 的范围总开关,它同时影响 Proxy 拦截、Repeater/Intruder 的请求发送、Scanner 的扫描目标以及站点地图的显示。配置的核心是“包含规则(Include)”与“排除规则(Exclude)”的组合,规则以主机名、IP、端口、协议和路径为匹配维度,支持通配符与正则表达式。
一个常见的授权范围示例:主站 app.example.com、API 网关 api.example.com、静态资源域 static.example.com,排除第三方支付回调 pay.thirdparty.com 与埋点域 *.analytics.example.net。配置时先写 Include,再写 Exclude,Exclude 优先级高于 Include。示例规则如下:
Include: ^https?://app\.example\.com/.*
Include: ^https?://api\.example\.com/.*
Include: ^https?://static\.example\.com/.*
Exclude: ^https?://.*\.analytics\.example\.net/.*
Exclude: ^https?://pay\.thirdparty\.com/.*
Exclude: .*\.(png|jpg|gif|css|woff2)$
配置完成后,务必在 Proxy → Options → Intercept Client Requests 中勾选“仅拦截范围内请求”,并在 Target → Scope 中启用“使用高级范围控制”。这样,范围外的请求不会被拦截,也不会进入 Scanner 的扫描队列。判断范围是否生效,可以观察站点地图中是否仍出现范围外主机,以及 Repeater 发送范围外请求时是否弹出提示。
二、站点地图过滤与注释
站点地图是 Burp 对目标结构的可视化索引,节点按主机、目录、文件层级展开。工程化使用站点地图的关键动作有三个:过滤、注释、标记。
过滤方面,除了 Scope 的全局过滤,还可以在站点地图右键菜单中使用“Filter by request type”“Filter by MIME type”“Filter by status code”等条件,快速隐藏 404、302、图片、字体等噪声。对于大型项目,建议先按状态码过滤掉 4xx/5xx 的探测噪声,再按 MIME 类型隐藏静态资源,最后只保留 HTML、JSON、XML 等业务响应。
注释方面,Burp 允许对任意节点添加注释(Comment)和高亮(Highlight)。建议的注释规范是:对已确认的业务入口标注“入口-登录”“入口-订单查询”;对疑似漏洞点标注“疑似-IDOR-订单详情”;对已排除的第三方域标注“第三方-不测试”。高亮颜色可按风险等级约定,例如红色表示已确认漏洞,橙色表示待验证,绿色表示已确认安全。这样在多人协作或隔天继续测试时,站点地图本身就是一份可读的测试进度图。
三、请求历史与响应存储
HTTP History 是 Burp 的原始流量账本,记录每个请求的方法、URL、状态码、响应长度、MIME 类型和时间戳。工程化使用它需要关注三件事:存储位置、过滤条件、保留策略。
存储位置方面,Burp 默认将请求响应保存在内存中,长时间测试会占用大量内存。建议在 User Options → Misc 中设置“临时文件位置”到磁盘,并定期使用“Save project”将项目保存为 .burp 文件。对于需要长期留存的证据,可以在 HTTP History 中选中请求,右键“Save item”导出为 XML 或原始请求响应文件。
过滤条件方面,HTTP History 顶部提供 Filter 栏,可按状态码、MIME 类型、搜索关键字、是否在 Scope 内等条件过滤。一个实用的过滤组合是:只显示 Scope 内、状态码为 200/302/401/403、MIME 为 HTML/JSON 的请求,这样可以快速定位业务接口和权限相关响应。
保留策略方面,建议按项目阶段清理:探测阶段保留全部,验证阶段只保留与漏洞相关的请求,报告阶段导出关键证据后清理无关流量。对于响应体较大的请求(如文件下载、视频流),可以在 Proxy → Options 中设置“不存储超过指定大小的响应”,避免项目文件膨胀。
四、多项目并行时的范围隔离
当同时测试多个目标时,最容易出现的问题是流量串扰:A 项目的请求出现在 B 项目的站点地图中,或者 Scanner 误扫了未授权主机。解决方法是使用独立的 Burp 项目文件或独立的 Burp 实例。
推荐做法是:每个项目创建一个独立的 .burp 项目文件,项目内只配置该项目的 Scope 规则。如果必须在同一实例中切换项目,可以使用“Project options → Connections → Hostname resolution”为不同项目配置不同的上游代理,但更稳妥的方式是直接开多个 Burp 实例,每个实例绑定不同的代理端口(如 8080、8081、8082),浏览器通过切换代理端口来切换项目。
此外,可以在 Proxy → Options → Intercept Client Requests 中为每个项目设置独立的拦截规则,确保范围外请求不会被误拦截和误修改。对于团队协作,建议约定项目文件命名规范,例如 2025-项目名-测试人-日期.burp,并在项目注释中记录授权范围、测试窗口和联系人。
五、避免越权测试的边界控制
边界控制的目标是确保任何主动请求都落在授权范围内。除了 Scope 配置,还需要在以下环节设置防线:
- Repeater/Intruder:发送请求前检查目标主机是否在 Scope 内,Burp 会在范围外请求时给出提示,但不要依赖提示,应养成手动确认的习惯。
- Scanner:在 Scan launcher 中明确选择“Scan defined insertion points”或“Scan selected items”,并确认目标在 Scope 内;不要使用“Scan everything”模式。
- 宏与扩展:如果使用了自动登录宏或自定义扩展,检查宏请求的目标主机是否在范围内,避免宏将请求发送到第三方认证服务。
- DNS 与 Host 头:测试 Host 头注入或虚拟主机时,确保修改后的 Host 仍指向授权 IP,不要将请求导向真实第三方站点。
六、可执行的配置检查清单
以下清单可直接用于项目启动前的范围配置复核:
| 检查项 | 操作位置 | 通过标准 |
|---|---|---|
| Include 规则覆盖全部授权主机 | Target → Scope | 授权列表中的每个主机都有对应 Include |
| Exclude 规则排除第三方与静态资源 | Target → Scope | 第三方域、埋点域、图片字体已排除 |
| Proxy 仅拦截范围内请求 | Proxy → Options | 范围外请求不被拦截 |
| 站点地图已过滤噪声 | Target → Site map → Filter | 只显示业务相关响应 |
| 关键节点已注释和高亮 | Site map 右键 | 入口、疑似漏洞、已排除项有标注 |
| 项目文件独立保存 | Burp → Save project | 每个项目一个 .burp 文件 |
| 响应存储大小已限制 | Proxy → Options | 大响应不写入项目文件 |
完成以上配置后,站点地图就不再是流量的被动堆积,而是一张经过裁剪、标注和隔离的测试作战图。后续无论是手工测试、Scanner 扫描还是团队交接,都可以基于这张图快速定位目标、判断边界、复核证据。