第 4 章 · 02 浏览器与代理


文档摘要

第 4 章 · 02 浏览器与代理 本节摘要:本节讲透 Strix 的前两个核心工具。Playwright 浏览器驱动 headless Chrome,像真实用户一样导航、点击、填表、执行 JS、截图、多标签操作,专攻客户端漏洞与认证流;Caido HTTP 代理自动捕获全部 HTTP/HTTPS 流量,提供 HTTPQL 过滤查询、请求重放改参、站点地图可视化。两者天然耦合——浏览器流量自动走代理,代理对浏览器操作有完整可见性。本节还讲清代理的 Python 集成(沙箱烤进的 模块,可脚本化批量测 IDOR)、人在回路(把 Caido 暴露给宿主机,你和代理协同测试)、以及作用域管理。 内容来源:原项目文档 与 ,汉化并合并。

第 4 章 · 02 浏览器与代理

本节摘要:本节讲透 Strix 的前两个核心工具。Playwright 浏览器驱动 headless Chrome,像真实用户一样导航、点击、填表、执行 JS、截图、多标签操作,专攻客户端漏洞与认证流;Caido HTTP 代理自动捕获全部 HTTP/HTTPS 流量,提供 HTTPQL 过滤查询、请求重放改参、站点地图可视化。两者天然耦合——浏览器流量自动走代理,代理对浏览器操作有完整可见性。本节还讲清代理的 Python 集成(沙箱烤进的 caido_api 模块,可脚本化批量测 IDOR)、人在回路(把 Caido 暴露给宿主机,你和代理协同测试)、以及作用域管理。

内容来源:原项目文档 docs/tools/browser.mdxdocs/tools/proxy.mdx,汉化并合并。

⚠️ 仅限授权测试:浏览器与代理的所有操作仅用于测试你拥有或获书面授权的目标。

学习目标

阅读完本节,你应当能够:

  1. 列举 Playwright 浏览器的六项能力及其典型用途。
  2. 说清浏览器流量自动走代理带来的可见性优势。
  3. 列举 Caido 代理的五项核心能力(捕获/重放/HTTPQL/作用域/站点地图)。
  4. caido_api 模块写 Python 脚本做批量请求重放(如自动化 IDOR 测试)。
  5. 说明人在回路模式如何让你和代理协同测试。
  6. 配置代理作用域(allowlist / denylist)聚焦流量。

浏览器与代理不是两个孤立工具,而是「前端操作 + 后端抓包」的一体两面:浏览器产生的全部流量进代理,代理里的请求可被 Python 脚本或命令行工具复用,终端里跑的工具结果又能反哺下一步的浏览器操作。上图给出本节要讲清的协作关系。

一、Playwright 浏览器:像真实用户一样操作 Web

Strix 用 Playwright 驱动一个 headless Chrome 浏览器,像真实用户一样与 Web 应用交互。它不是简单地发 HTTP 请求,而是真的「打开页面、点按钮、填表单、跑 JavaScript」——这对测试现代 Web 应用至关重要,因为大量功能是 JS 驱动的,纯 HTTP 请求触达不到。

1.1 六项能力

动作 说明 典型用途
Navigate 访问 URL、跟链接、处理重定向 走完登录流、OAuth、MFA
Click 点击按钮、链接、表单元素 触发 JS 重功能、提交表单
Type 填表单、搜索框、输入框 自动填凭据、构造输入
Execute JS 在页面上下文里跑自定义 JavaScript 触发动态请求、操纵 DOM
Screenshot 截取页面可视状态 报告里附可视化证据
Multi-tab 跨多个浏览器标签测试 并行测多个流程、模拟多用户

1.2 浏览器能测什么

浏览器是客户端漏洞与认证流测试的主力:

  • 客户端漏洞:XSS、DOM 操纵、原型污染——这些必须靠真实渲染和 JS 执行才能触发;
  • 认证流:登录、OAuth 授权、MFA——需要按步骤点击、填表、处理跳转;
  • JS 重功能:SPA 应用里大量逻辑在前端,纯 HTTP 触达不到;
  • 动态生成的请求:很多请求是运行时由 JS 拼出来的,只有跑起来才能抓到。

💡 浏览器 vs 纯 HTTP 工具:对静态站点,curl / httpx 就够;但对现代 SPA、需要登录的应用、JS 驱动的功能,浏览器不可替代。Strix 让代理自己判断何时该用浏览器、何时该用轻量 HTTP 工具。

二、Caido HTTP 代理:拦截、查询、重放

Strix 内置 Caido——一个为安全测试设计的现代 HTTP 代理。所有浏览器流量都流经 Caido,这让代理对每一个请求和响应都有完整控制权。

2.1 五项核心能力

能力 说明
请求捕获 自动记录全部 HTTP/HTTPS 流量
请求重放 任意请求带修改重发——改路径参数(测 IDOR)、改请求体(测注入)、增删头(测认证绕过)、改 cookie(测会话问题)
HTTPQL 用 Caido 的 HTTPQL 语法对捕获的流量做强力过滤查询
作用域管理 聚焦特定域名或路径,过滤无关流量
站点地图 可视化已发现的攻击面

2.2 HTTPQL 过滤

HTTPQL 是 Caido 的流量查询语法,能在海量捕获请求里精准捞出你要的那批。典型用法(配合下面的 Python 集成):

  • 列出所有 POST 请求:req.method.eq:"POST"
  • 列出打到 /api/ 的请求:req.path.cont:"/api/"
  • 列出打到 /users/ 的请求:req.path.cont:"/users/"
  • 组合条件:req.method.eq:"POST" AND req.path.cont:"/api/"

💡 HTTPQL 是代理的「搜索引擎」:一次扫描可能产生成千上万条请求,人工逐条看是不现实的。HTTPQL 让代理(和你)能按方法、路径、状态码、响应大小等维度精准过滤,快速锁定可疑请求。

2.3 请求重放:四类典型修改

代理能取任意一条捕获的请求,带修改重发——这是验证漏洞的核心手段:

  • 改路径参数 → 测 IDOR(把 /users/1 换成 /users/2/users/admin);
  • 改请求体 → 测注入(在表单字段里塞 payload);
  • 增删头 → 测认证绕过(去掉 Authorization、加 X-Forwarded-For);
  • 改 cookie → 测会话问题(换 session ID、改过期时间)。

三、Python 集成:caido_api 模块

代理的辅助能力通过沙箱镜像里烤进的 caido_api 模块暴露给 Python 脚本。这让自定义 exploit 能直接复用代理抓到的真实请求,做脚本化的批量测试。

3.1 可用函数

函数 说明
list_requests() 用 HTTPQL 过滤查询捕获的流量
view_request() 取某条请求/响应的完整详情
repeat_request() 带修改重放一条请求
list_sitemap() 浏览已发现攻击面的请求树视图
view_sitemap_entry() 查看一个站点地图条目及其相关请求
scope_rules() 管理代理作用域(allowlist/denylist)

3.2 基础示例:列出并重放请求

import asyncio from caido_api import list_requests, repeat_request, view_request async def main(): # 列出最近的 POST 请求 post_requests = await list_requests( httpql_filter='req.method.eq:"POST"', first=20, ) # 查看某条请求详情 request_details = await view_request("req_123", part="request") # 带修改重放——把 user_id 改成 admin response = await repeat_request( "req_123", modifications={"body": '{"user_id": "admin"}'}, ) print(response["status"], request_details is not None, len(post_requests.edges)) asyncio.run(main())

3.3 实战示例:自动化 IDOR 测试

这是 caido_api 最典型的用法——捞出所有打到 /users/ 的请求,逐一改 ID 重放,看哪个能越权访问:

import asyncio from caido_api import list_requests, repeat_request async def main(): # 取所有打到 /users/ 的请求 user_requests = await list_requests(httpql_filter='req.path.cont:"/users/"') for edge in user_requests.edges: req = edge.node.request scheme = "https" if req.is_tls else "http" for test_id in ["1", "2", "admin", "../admin"]: url = f"{scheme}://{req.host}{req.path.replace('/users/1', f'/users/{test_id}')}" response = await repeat_request( req.id, modifications={"url": url}, ) print(req.id, test_id, response["status"]) if response["status"] == "DONE": print(f"Replay completed for candidate {test_id}") asyncio.run(main())

💡 一次性请求用 curl:caido_api 适合复用已捕获的请求做批量测试;如果是临时探一个新端点,直接在终端用 curl 即可——沙箱的 HTTP_PROXY 环境变量会自动把流量经 Caido 路由,所以这些请求也会出现在 list_requests 里、能用 repeat_request 重放。

四、人在回路:你和代理协同测试

Strix 把 Caido 代理暴露给你的宿主机,让你能和自动化扫描同时操作同一个代理实例。这把 Strix 从「全自动扫描器」变成「协同工具」——代理干重活,你聚焦有趣的部分。

4.1 如何接入

  1. 像往常一样启动一次扫描;
  2. 在 TUI 侧边栏的统计面板里找 Caido URL(如 localhost:52341);
  3. 在 Caido Desktop 里打开该 URL;
  4. Continue as guest 进入实例。

4.2 你能做什么

  • 查看流量:实时浏览代理正在发出的全部 HTTP/HTTPS 请求;
  • 重放请求:取任意捕获请求,带上你的修改重发;
  • 拦截修改:在请求飞行途中暂停、编辑、再放行;
  • 探索站点地图:看代理已发现的完整攻击面;
  • 手动测试:用 Caido 的工具测代理报告的发现,或探索代理还没覆盖的区域。

💡 协同的价值:代理擅长广覆盖、快速跑完大量请求;人擅长判断「这个发现是不是真的有意思」「这块逻辑有没有猫腻」。人在回路模式让两者结合——代理铺开面,你盯关键点。

五、作用域管理

创建作用域能把流量过滤到相关域名,避免被无关请求淹没。allowlist 放行关心的域名/denylist 排除静态资源:

Allowlist: ["api.example.com", "*.example.com"] Denylist: ["*.gif", "*.jpg", "*.png", "*.css", "*.js"]

⚠️ 作用域是效率关键:没有作用域,代理会把所有流量(包括图片、CSS、JS 静态资源)都记下来,很快把代理实例和你的注意力都淹没。用 allowlist 聚焦目标域名,用 denylist 排除静态资源,让捕获的流量都是「值得分析」的。

本节要点回顾

  1. Playwright 浏览器六能力:Navigate / Click / Type / Execute JS / Screenshot / Multi-tab——像真实用户一样操作 Web,专攻客户端漏洞与认证流。
  2. 浏览器流量自动走代理:所有 Playwright 流量默认经 Caido 转发,代理对浏览器操作有完整可见性,两者是「前端操作 + 后端抓包」一体两面。
  3. Caido 五能力:请求捕获、请求重放(改路径/体/头/cookie)、HTTPQL 过滤查询、作用域管理、站点地图可视化。
  4. HTTPQL:代理的流量搜索引擎,按方法/路径/状态码等维度精准过滤(如 req.method.eq:"POST" AND req.path.cont:"/api/")。
  5. caido_api Python 集成:沙箱烤进该模块,六个函数(list/view/repeat requests、sitemap、scope);典型用法是捞出某类请求批量改参重放,实现自动化 IDOR 测试;一次性请求用 curl(HTTP_PROXY 自动路由)。
  6. 人在回路:Caido 暴露给宿主机,你在 Caido Desktop 里和代理协同——实时看流量、重放、拦截修改、手动探索,代理干重活你盯关键点。
  7. 作用域:allowlist 聚焦目标域名,denylist 排除静态资源,避免被无关流量淹没。

下一节,我们走进沙箱——持久 Bash 终端怎么管理会话,以及 11 个预装 CLI 安全工具(nmap/nuclei/sqlmap/ffuf/...)的命令速查表。


发布者: 作者: 灏天文库 转发
评论区 (0)
U