空想网安の乌托邦
首页小说读书项目归档照片墙音乐说说杂谈关于
封面

HTB Academy:使用 Web 代理

写作时间:2026-09-20 22:39:25
# 网安
# HTB Academy

模块:Using Web Proxies(15 小节)
核心工具:Burp Suite、OWASP ZAP
说明:本文按实际工作流重新归纳课程内容,不是网页逐句搬运。所有拦截、修改、模糊测试和扫描操作仅用于获得明确授权的目标。

​

‍

Using Web Proxies 模块封面

​

0. 学习路线

安装并启动代理
  → 配置浏览器与 CA 证书
  → 捕获 HTTP/HTTPS 流量
  → 拦截并修改请求/响应
  → Repeater 手工复测
  → Decoder 处理编码
  → 让 curl / sqlmap 等工具经过代理
  → Intruder / Fuzzer 自动化测试
  → 被动/主动扫描
  → 安装扩展并完成综合评估

本章前置知识

  • HTTP 请求与响应结构。
  • URL、参数、Cookie、Header 和状态码。
  • Web 应用基础。
  • 能区分浏览器问题、TLS 问题、代理问题和目标服务器问题。

1. Intro to Web Proxies

Web 代理位于客户端与后端服务器之间,捕获双方的 HTTP/HTTPS 流量,并允许测试人员查看、暂停、修改和重放请求。它与 Wireshark 的区别在于:Web 代理专注应用层 Web 流量,并提供可编辑、可重复发送的请求工作流。

1.1 典型用途

  • 查看应用实际发送的请求和服务器响应。
  • 修改参数、Header、Cookie 和请求体。
  • 重放请求并比较不同输入的结果。
  • 爬取和映射站点。
  • 进行模糊测试与漏洞扫描。
  • 分析移动端、桌面端或其他命令行工具的 Web 流量。
  • 测试隐藏、禁用或仅前端限制的功能。

1.2 Burp 与 ZAP 对比

维度 Burp Suite Community OWASP ZAP 定位 成熟的商业 Web 测试平台免费版 免费开源 Web 代理 内置浏览器 有 有 手工测试 很强 很强 Intruder/Fuzzer 免费版 Intruder 有速度限制 Fuzzer 无商业版限速 主动扫描 Pro/Enterprise 功能 免费提供 扩展 BApp Store,部分扩展受版本限制 Marketplace Add-ons

课程主要功能在两者中都有对应实现,学习重点是理解工作流,而不是只记某个按钮位置。


2. Setting Up

2.1 首次使用的运行条件

  • Pwnbox/常见渗透测试发行版通常已预装 Burp 和 ZAP。
  • 本机安装时需要相应 Java 运行环境或官方安装包。
  • 默认代理监听通常使用回环地址,避免无意向局域网开放。
  • 测试 HTTPS 时需要安装代理生成的 CA 证书。

2.2 启动 Burp Suite

burpsuite

首次启动常用流程:

  1. 选择 Temporary project(Community 通常使用临时项目)。
  2. 选择 Use Burp defaults。
  3. 点击 Start Burp。
  4. 检查 Proxy → Proxy settings/listeners 是否监听 ​127.0.0.1:8080​。

2.3 启动 ZAP

zaproxy

首次启动可选择是否持久保存会话。临时练习无需保存;正式测试若需后续复盘,应保存到受控位置。

2.4 优先使用内置浏览器

Burp 与 ZAP 的内置浏览器已经配置代理和证书,适合快速开始:

  • Burp:Proxy → Intercept → Open Browser。
  • ZAP:Quick Start → Manual Explore → Launch Browser。

使用外部浏览器时再手动设置代理和 CA。


3. Proxy Setup

3.1 浏览器代理

假设代理监听:

HTTP Proxy: 127.0.0.1
Port:       8080
HTTPS:      使用相同代理

Firefox 可在网络设置中手动配置,也可使用 FoxyProxy 保存多个代理配置并快速切换。

3.2 安装 Burp CA 证书

外部浏览器通过 Burp 访问 HTTPS 前:

  1. 开启浏览器代理。
  2. 访问 ​<http://burp​。>
  3. 下载 CA Certificate。
  4. 在浏览器证书设置中导入,并信任其用于识别网站。

ZAP 可在设置/网络证书位置生成或保存 Root CA,再导入浏览器。

代理 CA 证书等同于允许该代理解密浏览器 HTTPS 流量。只能导入自己控制的 Burp/ZAP 证书,测试完成后可从日常浏览器配置中移除。

3.3 Scope 与流量过滤

真实站点会产生大量第三方请求。应把测试目标加入 Scope,并选择只显示范围内流量:

  • Burp:Target → Site map / Scope。
  • ZAP:Sites → Include in Context。

范围控制既减少噪声,也避免误扫未授权域名。

3.4 常见排错

  • 页面完全打不开:确认代理程序已启动且监听地址、端口一致。
  • HTTP 正常而 HTTPS 报错:检查 CA 是否导入并被信任。
  • 只有部分请求看不到:检查浏览器是否绕过本地地址、应用是否使用系统代理。
  • 请求一直等待:查看 Intercept 是否开启并有请求尚未 Forward。
  • HSTS/证书固定应用失败:普通 CA 安装可能不足,属于应用额外保护范围。

4. Intercepting Web Requests

4.1 Burp 工作流

Proxy → Intercept → Intercept is on
浏览器发出请求
检查/修改请求
Forward:发送
Drop:丢弃

4.2 ZAP 工作流

使用顶部断点按钮启用拦截。捕获后可编辑请求,再选择继续、丢弃或逐步执行。

4.3 请求中应重点观察

POST /login HTTP/1.1
Host: target.example
Cookie: session=...
Content-Type: application/x-www-form-urlencoded

username=user&password=pass
  • 请求方法和路径。
  • Host、Origin、Referer、Content-Type。
  • Cookie、Authorization 等认证信息。
  • URL 参数、表单字段和 JSON/XML 请求体。
  • CSRF Token 和前端生成的隐藏字段。

4.4 修改请求的判断原则

每次只修改一个变量,记录原始响应,再比较状态码、长度、正文和响应时间。多个参数同时修改会使结果难以归因。


5. Intercepting Responses

默认情况下,代理通常只拦截请求。测试隐藏或前端限制功能时,需要设置响应拦截。

5.1 Burp

Proxy settings 中配置 Intercept server responses,并限制到 Scope 或匹配规则,避免所有静态资源都被暂停。

5.2 ZAP

设置响应断点,或针对特定 URL/规则设置 Break。

5.3 典型测试

服务器可能返回:

<button disabled>Admin</button>
<input type="hidden" name="role" value="user">

删除 ​disabled​、修改隐藏值,只能证明前端界面可被操纵。若后端仍正确校验权限,就不是越权漏洞;必须继续发送实际操作请求验证服务器端控制。


6. Automatic Modification

频繁重复相同修改时,应使用 Match and Replace/替换规则自动处理。

6.1 Burp Match and Replace

Proxy settings → Match and Replace,可针对:

  • 请求 Header。
  • 请求 Body。
  • 响应 Header。
  • 响应 Body。

示例用途:

  • 自动增加测试 Header。
  • 修改 User-Agent。
  • 移除响应中的 ​disabled​。
  • 把某个固定值替换成测试值。

6.2 ZAP Replacer

ZAP 的 Replacer 可设置匹配类型、正则表达式和替换字符串,实现类似效果。

6.3 注意事项

  • 规则应限制域名、路径或 Scope。
  • 使用正则表达式前先验证匹配范围。
  • 结束测试后禁用规则,避免污染后续请求。
  • 自动修改得到的结果仍需用原始请求复核。

7. Repeating Requests

Repeater 用于手工重放和微调单个请求,是日常 Web 测试最常用的功能之一。

7.1 Burp Repeater

在 HTTP history 或 Intercept 中右键:

Send to Repeater

然后在 Repeater 修改请求并点击 Send。可同时打开多个标签页,对比不同输入。

7.2 ZAP Request Editor

在 History 中右键请求,选择 Open/Resend with Request Editor,修改后发送并查看响应。

7.3 推荐实验方法

建立基准请求:

R0:未经修改的正常请求
R1:只修改参数 A
R2:只删除 Header B
R3:只替换 Cookie C

比较:状态码、Content-Length、响应正文、重定向位置和耗时。不要只看是否返回 ​200​,因为错误页也可能是 200。


8. Encoding/Decoding

Web 参数常经过 URL、Base64、HTML 或十六进制编码。编码并不等于加密。

8.1 Burp Decoder

选中文本后可 Send to Decoder,执行:

  • URL encode/decode。
  • HTML encode/decode。
  • Base64 encode/decode。
  • Hex、ASCII 等转换。
  • Hash 计算(不能反向恢复原文)。

8.2 ZAP Encode/Decode/Hash

Tools → Encode/Decode/Hash 提供对应功能,也可对选中文本使用右键转换。

8.3 命令行对照

printf '%s' 'admin:test' | base64
printf '%s' 'YWRtaW46dGVzdA==' | base64 -d
python3 -c "import urllib.parse; print(urllib.parse.quote('a b&c'))"

修改嵌套编码值时,按相反顺序解码,修改后再按原顺序重新编码。


9. Proxying Tools

除浏览器外,还可让 curl、sqlmap 等工具通过 Burp/ZAP,以便调试自动化工具发出的请求。

9.1 curl

curl -x http://127.0.0.1:8080 http://target.example/
curl -k -x http://127.0.0.1:8080 https://target.example/

​-k​ 跳过 TLS 验证,仅适用于受控测试;更稳妥的方式是让工具信任代理 CA。

环境变量方式:

export http_proxy=http://127.0.0.1:8080
export https_proxy=http://127.0.0.1:8080

9.2 sqlmap

sqlmap -u 'http://target.example/page?id=1' \
  --proxy=http://127.0.0.1:8080

也可先从 Burp 保存原始请求:

sqlmap -r request.txt --proxy=http://127.0.0.1:8080

9.3 Proxychains

对于支持 TCP 代理链的程序,可在配置中设置代理,再运行:

proxychains <COMMAND>

注意 HTTP 代理不等同 SOCKS,工具协议必须匹配。让高并发扫描经过 Burp 时也可能造成代理卡顿。


10. Burp Intruder

Intruder 用于自动替换请求中的一个或多个位置,并发送 Payload 列表。

10.1 基础流程

  1. 在请求上选择 Send to Intruder。
  2. Positions 中清除自动标记,再选定需要替换的值。
  3. 选择 Attack type。
  4. 在 Payloads 中添加字典、数字范围或生成规则。
  5. 设置必要的编码、资源池和匹配规则。
  6. 启动攻击并按状态码、长度、关键字排序。

位置标记示意:

GET /products?id=§1§ HTTP/1.1

10.2 攻击类型

类型 用途 Sniper 同一 Payload 集依次测试每个位置 Battering ram 同一 Payload 同时填入所有位置 Pitchfork 多组 Payload 按索引并行组合 Cluster bomb 多组 Payload 做笛卡尔组合

10.3 结果判断

不要只寻找 ​200​;应观察:

  • 响应长度明显不同。
  • 状态码或 Location 改变。
  • 出现/消失特定字符串。
  • 响应时间异常。
  • Set-Cookie 或认证状态改变。

Burp Community 的 Intruder 速度受限,适合小规模精确测试。


11. ZAP Fuzzer

ZAP Fuzzer 与 Intruder 目标相同,但配置界面和术语不同。

11.1 基础流程

  1. 在请求中选中参数值。
  2. 右键选择 Fuzz。
  3. Add Payloads,选择文件、字符串、数字、脚本等来源。
  4. 添加 Payload Processors,执行编码、前后缀或转换。
  5. 设置并发、延迟和匹配条件。
  6. 开始 Fuzz,比较 Code、Size、RTT 和响应内容。

11.2 适用场景

  • 参数值枚举。
  • 文件和目录名测试。
  • Header、Cookie 或 JSON 字段变异。
  • 小规模凭据或 Token 测试。

大规模字典应控制线程和请求率,先确认账户锁定、限速和目标容量。


12. Burp Scanner

Burp Scanner 的主动扫描主要属于 Pro/Enterprise 功能。Community 用户仍可使用被动分析和手工测试工作流。

12.1 被动扫描

被动扫描只分析已经经过代理的请求和响应,通常不会额外修改目标状态。适合发现:

  • 缺失安全 Header。
  • Cookie 属性问题。
  • 信息泄露。
  • 可疑输入点和响应内容。

12.2 主动扫描

主动扫描会向目标发送修改后的探测请求,可能触发:

  • 数据写入或业务操作。
  • 大量日志和告警。
  • 账户锁定。
  • 目标性能下降。

因此必须先限定 Scope,并在明确授权后选择具体 URL/Insertion Point 扫描。

12.3 结果处理

Scanner Issue 只是候选发现。需要查看证据、请求/响应和置信度,再用 Repeater 手工复现,排除误报。


13. ZAP Scanner

ZAP 免费提供爬虫、被动扫描与主动扫描。

13.1 Spider 与 AJAX Spider

  • Spider:依据链接和表单快速遍历传统页面。
  • AJAX Spider:通过浏览器执行 JavaScript,适合单页应用和动态页面。

爬取前应创建 Context,包含目标域、排除注销、删除等危险路径,并配置认证状态。

13.2 Passive Scan

流量经过 ZAP 后自动进入被动扫描队列。Alerts 按风险和置信度分类,可查看证据及建议。

13.3 Active Scan

在目标节点上选择 Attack → Active Scan,设置 Policy、输入向量与强度。扫描前:

[ ] 目标属于授权范围
[ ] 已排除第三方域名
[ ] 已排除注销、删除、支付等敏感操作
[ ] 测试账户可被锁定时已有处置方案
[ ] 已确认扫描窗口与目标容量

任何 Alert 都应手工复现后再写入报告。


14. Extensions

扩展用于增加新的被动检查、主动扫描、编码、认证和工作流辅助能力。

14.1 Burp Extender / BApp Store

常见流程:

  1. Extender/Extensions → BApp Store。
  2. 查看扩展说明、依赖语言和适用 Burp 版本。
  3. 安装后检查 Output 与 Errors。
  4. 确认扩展新增的标签页或菜单。

部分扩展需要 Jython/JRuby 或仅支持 Burp Pro。

14.2 ZAP Marketplace

Manage Add-ons/Marketplace 中可安装或更新官方、社区插件。ZAP 的扫描规则本身也按 Add-on 管理。

14.3 安全注意事项

  • 扩展代码会在代理进程中运行,可读取经过代理的请求、Cookie 和 Token。
  • 仅安装可信来源、必要且维护正常的扩展。
  • 先在测试项目中验证兼容性。
  • 更新扩展后重新检查扫描结果和性能。
  • 不使用的扩展应禁用,减少攻击面和资源消耗。

15. Skills Assessment - Using Web Proxies

综合评估的关键不是盲目扫描,而是选择最合适的功能完成每一步。

15.1 推荐流程

  1. 启动 Burp/ZAP,并确认代理监听。
  2. 使用内置浏览器或正确配置外部浏览器与 CA。
  3. 将目标加入 Scope/Context。
  4. 正常操作应用,建立 Site map 和 HTTP history。
  5. 拦截关键请求,识别参数、Cookie、Token 和隐藏字段。
  6. 发送到 Repeater,建立基准请求并逐项修改。
  7. 遇到编码值时用 Decoder 解码、修改、重新编码。
  8. 重复测试使用 Match and Replace;批量输入使用 Intruder/Fuzzer。
  9. 需要自动化工具时让其通过代理,保留完整流量。
  10. 最后用被动/主动扫描补充人工测试,并手工验证发现。

15.2 功能选择表

需求 Burp ZAP 捕获并暂停请求 Proxy Intercept Break/Intercept 查看历史 HTTP history History 手工重放 Repeater Request Editor/Resend 自动替换 Match and Replace Replacer 编解码 Decoder Encode/Decode/Hash 批量 Payload Intruder Fuzzer 站点结构 Target Site map Sites Tree 动态爬取 Crawl/浏览器流量 AJAX Spider 被动扫描 Dashboard/Issues Passive Scan/Alerts 主动扫描 Burp Pro Scanner Active Scan 扩展 BApp Store Marketplace


附录 A:HTTP 请求检查模板

请求名称/功能:
方法与路径:
Host:
认证信息:Cookie / Authorization / Token
输入位置:URL / Header / Cookie / Body / JSON / XML
Content-Type:
CSRF/随机值:
原始状态码与长度:
修改的单一变量:
修改后状态码与长度:
关键响应差异:
是否可稳定复现:
权限与业务影响:

附录 B:常见故障速查

现象 优先检查 所有页面都打不开 代理是否启动、IP/端口是否一致 HTTPS 证书错误 是否导入正确 CA、域名与时间是否正常 Burp 中没有流量 浏览器是否真正使用代理、Scope 过滤是否过严 页面一直加载 Intercept 中是否有请求等待 Forward 登录后扫描仍未认证 Cookie/Token 是否更新,Context 是否配置登录状态 Repeater 请求失败 Host、Content-Length、Cookie、CSRF Token 是否有效 Intruder 所有结果相同 Payload 位置、编码、会话和匹配条件是否正确 主动扫描结果太多 先限定 Scope、路径、参数和 Policy curl HTTPS 经代理失败 CA 信任问题;靶场临时可用 ​-k​ 验证

附录 C:工作习惯

  • 始终保留一份未经修改的基准请求。
  • 一次只改变一个变量。
  • Scope/Context 要在爬虫、Fuzzer 和扫描前设置。
  • 登录、删除、支付、上传等有状态操作要谨慎排除。
  • 对 Scanner Alert 必须人工复现。
  • 不在截图或报告中暴露真实 Cookie、Token 和密码。
  • 测试完成后关闭自动替换规则和代理配置。

总结

Web 代理的价值在于把浏览器背后的 HTTP 交互变成可观察、可编辑、可重复的实验。Burp 与 ZAP 的界面不同,但核心工作流完全一致:捕获请求、建立基准、控制变量、重放验证、再用自动化扩大覆盖面。

avatar

Zybaxy918039

书本,学术,网安之间反复横跳的业余爱好者,目前在自学计算机网络和AI相关知识

RECOMMENDED

HTB Academy:使用 Nmap 进行网络枚举

2026-09-19 22:17:09

HTB Academy:信息收集-网络版(Web Reconnaissance)学习笔记

2026-09-19 22:22:34

HTB Academy:Footprinting(足迹收集)

2026-09-20 12:23:20

Table of Contents