用途
本技能面向 Web 应用安全评估与漏洞赏金场景,用于在已发现 XSS 但执行被 Content-Security-Policy(CSP)拦截时,分析 CSP 策略并尝试绕过,以验证 CSP 的实际防护效果。也可用于审计 CSP 响应头配置是否存在弱点。
主要能力
- 分析 CSP 策略:从响应头或 meta 标签提取 CSP,识别 report-only 模式(仅记录不拦截),解析 script-src、default-src、style-src、img-src、connect-src 等指令。
- 利用 unsafe-inline 与 unsafe-eval:当 script-src 包含这些关键字时,内联脚本或 eval 类调用可执行。
- 利用白名单域 JSONP 端点:当 CSP 白名单包含带 JSONP 接口的域时,通过 callback 参数执行攻击者回调。
- AngularJS 沙箱逃逸:当白名单包含托管 AngularJS 的 CDN 时,加载库并利用模板注入绕过脚本限制。
- base-uri 与 form-action 绕过:未限制 base-uri 时可注入 base 标签重定向相对脚本加载;未限制 form-action 时可通过表单提交窃取数据;未限制 object-src 时可使用插件类执行。
- nonce 与 hash 绕过:通过 CSS 属性选择器逐字符泄露 nonce、检测 nonce 复用、DOM clobbering 覆盖 nonce 检查、利用白名单库中的 script gadgets(如 jQuery、Lodash、DOMPurify 原型污染绕过),以及通过反射参数注入 CSP 指令。
- 无 script-src 时的数据外泄:借助 img-src、CSS 注入、connect-src、DNS prefetch、WebRTC 等通道外泄数据。
使用方式
工作流分为六步:
- 分析 CSP 策略:使用 curl 提取响应头与 meta 中的 CSP,检查 report-only 模式,借助 Google CSP Evaluator 做自动化分析,解析各指令取值。
- 利用 unsafe-inline 与 unsafe-eval:根据 script-src 是否包含相应关键字构造内联脚本或 eval 调用;注意 CSP3 中 nonce 存在时 unsafe-inline 会被忽略,此时应转向 nonce 泄露。
- 利用白名单域 JSONP 端点:在白名单域上寻找 JSONP 接口,或加载白名单 CDN 上的 AngularJS 并配合模板注入。
- 利用 base-uri 与 form-action 绕过:注入 base 标签、构造表单提交、使用 object/embed 加载插件。
- 利用 nonce 与 hash 绕过:通过 CSS 属性选择器暴力泄露 nonce、检测 nonce 复用、DOM clobbering、script gadgets、策略注入。
- 无 script-src 时数据外泄:通过 img、CSS、connect-src、DNS prefetch、WebRTC 等通道外带数据。
前置条件
- Burp Suite 用于拦截响应并分析 CSP 头
- Google CSP Evaluator 用于自动化策略分析
- 理解 CSP 指令(script-src、default-src、style-src 等)
- 了解 CSP 绕过技术(JSONP、base-uri、object-src)
- 浏览器开发者工具用于监控 CSP 违规
- 收集白名单域的 JSONP 端点
适用场景
- 已发现 XSS 但被 CSP 拦截时的绕过验证
- Web 应用安全评估中评估 CSP 有效性
- 测试 CSP 对已知绕过技术的健壮性
- 漏洞赏金中 CSP 阻止直接 XSS 利用的情况
- 审计 CSP 头配置的安全弱点
常用工具
- CSP Evaluator:分析 CSP 策略弱点
- Burp Suite:CSP 头分析与绕过测试的 HTTP 代理
- CSP Scanner:识别 CSP 绕过机会的浏览器扩展
- csp-bypass:CSP 绕过技术与载荷的整理列表
- RetireJS:识别白名单 CDN 上的易受攻击 JavaScript 库
- DOM Invader:Burp 中通过 DOM 操作测试 CSP 绕过的工具
输出格式
技能提供 CSP 绕过评估报告模板,包含目标、CSP 模式、策略,以及 CSP 分析表(指令、取值、风险)、发现的绕过技术表(技术、载荷、影响)和修复建议(移除白名单 CDN、改用 nonce/hash、添加 base-uri 'self'、object-src 'none'、迁移到严格 nonce 策略、启用 strict-dynamic 等)。
限制
本技能的具体效果取决于目标 CSP 配置与浏览器实现,资料未提供各绕过技术的成功率、兼容性范围或法律合规说明;使用前需确保获得授权。