4. 拦截与转发核心操作
Burp Proxy 的 Intercept 是整条代理链路上唯一一个“人工闸门”。它默认关闭,一旦打开,所有经过 8080 端口的 HTTP/HTTPS 流量都会在 Burp 内部被挂起,等待你做出放行、丢弃或修改的决定。理解这个闸门的开关时机、断点位置和放行条件,是后续所有手工测试的基础。
一、Intercept 开关的三种状态与策略
Intercept 按钮在界面上只有“亮/灭”两种视觉状态,但实际存在三种语义:关闭(流量直接透传,不进入队列)、开启且队列为空(新请求到达即挂起)、开启且队列有积压(新请求继续排队,界面显示队列计数)。很多初学者误以为“关掉 Intercept 就等于停止代理”,其实代理仍在工作,只是不再暂停流量。
开关策略上,推荐按测试阶段切换:浏览阶段关闭,让站点地图快速填充;定位到目标接口后开启,只对关心的请求做精细控制。如果全程开启,浏览器加载一个含几十个静态资源的页面就会产生大量挂起请求,反而拖慢定位。一个实用技巧是配合 Target Scope:在 Proxy → Options → Intercept Client Requests 中勾选“仅拦截范围内请求”,这样即使 Intercept 常开,范围外的 CDN、统计脚本也会自动放行。
二、请求断点与响应断点
Burp 的断点分为两个方向:请求断点(浏览器 → 服务器方向,在请求发出前挂起)和响应断点(服务器 → 浏览器方向,在响应返回浏览器前挂起)。默认只开请求断点,响应断点需要单独勾选 Intercept is on 旁的响应拦截开关,或在 Proxy → Options → Intercept Server Responses 中配置。
两者的用途不同。请求断点用于改包:改参数、改 Cookie、改请求头、改请求体,然后 Forward 发出。响应断点用于看服务端返回的原始内容,尤其是当浏览器会执行 JS 跳转、自动重定向、或前端框架会二次渲染时,直接看响应体往往能看到被前端“藏起来”的字段。例如测试越权时,响应里可能返回了完整用户列表,但前端只渲染了当前用户,此时响应断点就是关键。
三、Forward、Drop 与 Action 菜单
挂起的请求在 Intercept 面板中提供几个核心操作:
- Forward:放行当前请求,继续后续流程。若同时开了响应断点,请求发出后会在响应阶段再次挂起。
- Drop:丢弃当前请求,浏览器收不到任何响应,通常表现为连接被重置或请求失败。用于阻止某个危险操作真正到达服务器。
- Action:对当前请求/响应做进一步处理,常见子项包括
Send to Repeater、Send to Intruder、Send to Comparer、Do intercept → Response to this request、Change request method、Change body encoding等。
其中 Do intercept → Response to this request 非常实用:它只对“当前这一条请求”的响应开启断点,而不影响全局响应拦截设置。这样可以在不打开全局响应断点的前提下,单独查看某条请求的返回内容。
四、拦截规则匹配
Intercept 的规则匹配集中在 Proxy → Options → Intercept Client Requests 和 Intercept Server Responses。规则以布尔表达式组合,常用字段包括:
| 匹配维度 | 示例条件 | 典型用途 |
|---|---|---|
| Host / IP | Host 包含 example.com | 只拦目标域,放过第三方 |
| URL 路径 | URL 匹配 /api/.* | 只拦接口,不拦静态资源 |
| 方法 | Method 等于 POST | 只拦写操作 |
| 参数名 | Parameter name 包含 token | 定位鉴权相关请求 |
| 响应状态码 | Status code 等于 302 | 只拦重定向响应 |
| MIME 类型 | MIME type 包含 json | 只拦 JSON 响应 |
规则之间是“与”关系,多个条件同时满足才拦截。配置时建议先用较宽的条件观察命中情况,再逐步收窄,避免规则过严导致目标请求被漏掉。
五、批量放行与自动化放行条件
当队列中积压大量请求时,逐条 Forward 效率很低。Burp 提供两种批量处理方式:
- Intercept 面板的 Forward 下拉:可选择
Forward all一次性放行队列中所有请求,或Drop all全部丢弃。 - 自动放行规则:在
Proxy → Options → Intercept Client Requests中,把“Intercept enabled”与规则结合,让不满足条件的请求自动透传。更彻底的方式是使用Proxy → Options → Match and Replace或 Burp 的Intercept自动放行选项,让匹配特定条件的请求无需人工干预。
自动化放行条件的典型配置思路是:只对目标接口开启拦截,其余全部自动放行。例如规则设为“Host 包含 target.com 且 URL 包含 /api/”,则所有非目标请求自动通过,队列中只会出现你真正关心的接口。这样既保留了人工控制点,又避免了静态资源干扰。
最后需要强调一个工程习惯:拦截规则和自动放行条件应当随测试目标变化而调整,而不是一次配置后长期不变。在测试初期用宽规则快速摸清接口分布,进入漏洞验证阶段后收窄到具体接口,测试结束后关闭 Intercept 并清理规则,避免影响后续正常浏览。把“开关状态、断点方向、规则条件、放行方式”四者当成一组联动参数来管理,才能让 Proxy 既可控又不拖慢节奏。