关于 client-side-exploitation
面向安全测试的技能,用于检查浏览器应用中的客户端与 HTTP 层漏洞,覆盖基础 XSS 和 CSRF 之外的风险。它指导授权评估、概念验证记录,以及可能影响其他用户的风险隔离测试。
主要功能
- 01覆盖九类客户端与 HTTP 攻击
- 02追踪 DOM XSS 与原型污染路径
- 03检查 CORS、CSP、点击劫持和消息处理
- 04记录漏洞及概念验证细节
- 05要求隔离测试共享基础设施风险
适用场景
- 01评估浏览器应用中易被漏检的漏洞
- 02调查凭据型 CORS 或不安全的 postMessage
- 03在隔离的预发布环境测试缓存投毒或请求走私
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mn-youssef/ security-skills --skill client-side-exploitation安装后在 Claude Code 中输入/client-side-exploitation确认已加载。
附带文件references/client-attacks.md
详细介绍
客户端利用(FIND/EXPLOIT — 浏览器与 HTTP 层)
概述
表示层会以扫描器无法发现的方式失效:客户端代码、浏览器特性,以及用户与服务端之间的 HTTP 处理机制。本技能涵盖 security-code-audit/references/web-frontend.md 中 XSS/CSRF 基础知识之外的高级攻击类别。
核心原则: 浏览器会执行页面指示它执行的任何内容,而代理/缓存会信任任何能够正确解析的内容。攻击客户端的信任和通道的假设。
适用场景 / 跳过场景
- 适用场景: 应用提供由浏览器渲染的 UI,或包含客户端 JavaScript。
- 跳过场景: 仅提供 API、CLI、守护进程,或没有浏览器界面的后端服务 → 不适用。
- 如果不适用: 报告“client-side-exploitation: N/A — no frontend surface”并停止。这是“技能与应用不匹配”的标准情况——干净地跳过,不要强行进行浏览器测试。
⚠️ 授权
仅测试你拥有或获准测试的应用。请求走私和缓存投毒会影响共享缓存/代理的其他用户——只能在你控制的隔离预发布环境中测试。
攻击类别
| 类别 | 测试内容 |
|---|---|
| DOM XSS | 在客户端 JS 中追踪源(location、postMessage、存储)→ 汇(innerHTML、eval) |
| CSP 绕过 | CSP 配置薄弱:unsafe-inline、通配符、JSONP/Angular 小工具、缺少 base-uri |
| CORS 利用 | 服务端反射任意 Origin + Allow-Credentials: true → 跨站窃取数据 |
| postMessage 滥用 | 处理程序未验证 event.origin,并将数据传入汇 |
| 原型污染 | 将用户 JSON 合并到 Object.prototype → 小工具 → XSS/RCE/DoS |
| DOM 篡改 | 注入的 id/name HTML 覆盖 JS 变量/函数 |
| 点击劫持 | 敏感操作未设置 frame-ancestors/X-Frame-Options |
| Web 缓存投毒 | 未纳入缓存键的输入(标头)被反射并缓存 → 提供给其他用户 |
| 请求走私 | 前端与后端服务端之间的 CL.TE / TE.CL 不同步 |
检测方法和 PoC 示例见 references/client-attacks.md。
高价值但常被忽略
- 携带凭据的 CORS: 漏洞不在于
*,而在于反射攻击者的Origin,同时允许携带凭据。这会导致经过身份验证的响应被跨站泄露。 - 原型污染: 库对攻击者 JSON 进行深度合并;通过已知小工具将其串联为 DOM XSS。
- 请求走私: 影响最大(大规模会话窃取、缓存投毒、身份验证绕过)——谨慎测试,仅限隔离环境。
输出
每个发现都应包含:源→汇(针对 DOM/PP),或不同步/缓存机制、PoC,以及受影响对象(仅自身还是其他用户——后者会显著提高严重性)。
后续处理
DOM XSS → 通常可作为 vulnerability-chaining 的切入点;通过 active-pentest 重现;通过 security-hardening 修复(编码、严格的 CSP、精确匹配来源的 CORS、Object.freeze/空原型、前后端服务端规范化)。
常见错误
- 只检查反射型/存储型 XSS——DOM XSS 完全存在于客户端 JS 中,需要追踪源→汇。
- 认为 CORS 只有
*才有问题——真正的缺陷是允许凭据时反射来源。 - 因为请求走私“很难”而跳过它——这是客户端层影响最大的漏洞。
- 在共享基础设施上测试缓存投毒/请求走私——可能影响真实用户;先隔离环境。
评论
支持 Markdown