特定站点已触发XSS漏洞被CSP拦截,求有效绕过方案
CSP 绕过可行性测试方向
结合你给出的场景(已获得XSS注入点、JS执行被CSP拦截),可按以下优先级测试绕过方案:
- 优先测试资源域可控情况
若站点CSP的script-src配置了允许的白名单域名(含本站静态域、第三方CDN域),优先查找这些域名下的可用JSONP接口、任意文件上传点。构造脚本标签引用可控代码即可执行,示例Payload:
若白名单域名存在开放重定向漏洞,也可以通过重定向指向你可控的恶意脚本地址绕过限制。<script src="https://白名单域名/jsonp?callback=alert(document.domain)"></script> - 测试CSP配置缺陷
- 验证是否CSP为仅上报模式(
Content-Security-Policy-Report-Only),该模式下只会生成拦截日志不会实际阻止代码执行,你提交的Payload可能已经生效仅控制台存在告警。 - 测试元标签注入覆盖CSP配置,若注入点在页面头部附近,可尝试注入:
<meta http-equiv="Content-Security-Policy" content="script-src 'unsafe-inline' 'unsafe-eval' *"> - 验证是否CSP为仅上报模式(
- 替换脚本执行方式
你当前使用的javascript:伪协议在大部分严格CSP下都会被拦截,可更换为自动触发的事件类Payload测试:
若CSP未禁用<svg onload=alert(1) /> <img src="invalid" onerror="alert(document.cookie)" /> <iframe onload=alert(1) src="about:blank"></iframe>unsafe-inline规则,上述Payload可直接执行。 - 利用站点已有脚本Gadget
若CSP仅允许加载本站脚本,可挖掘站点现有JS脚本中的可利用逻辑:比如存在读取URL参数后传入eval、Function、innerHTML等危险函数的逻辑,直接构造对应参数触发执行即可,无需注入额外脚本标签。
内容的提问来源于stack exchange,提问作者lopa17685
相关产品推荐
相关产品推荐

