CSP 绕过技术
绕过内容安全策略(Content Security Policy)的各种技术总结
本文由 AI 从韩语机器翻译,部分表达可能与原文有所不同。
阅读原文(韩语)在做 Codegate 2020 的 CSP 题目时,觉得有必要整理一下相关的绕过技术,所以简单整理发布于此。
如果有新发现的信息,我会进行更新~~
CTFZone 2019
- Script nonce : 缓存投毒 (cache poisoning)
- 利用 /index.php/ 等路径进行缓存投毒,从而固定 CSP script nonce
Codegate 2020
- Script nonce : Header Injection - Status Code 102
-
利用状态码为 102 时 CSP 不生效的特性
-
header("HTTP/: 102");
--
*** Script nonce : 利用 CSS 注入的正则表达式可以访问属性的特性,逐字搜索并获取 script nonce**
https://lbherrera.me/solver.html
http://sirdarckcat.blogspot.com/2016/12/how-to-bypass-csp-nonces-with-dom-xss.html
*** chromium 74 dev**
- 利用 import maps 绕过 CSP
https://bugs.chromium.org/p/chromium/issues/detail?id=941340
https://test.shhnjk.com/imap.php
*** chromium 78**
@shhnjk
<object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg=="></object>
@akita_zen
<script ?/src="data:+,alert%281%29"></script>
@404death
*** 当需要在同一或受信任域名下,利用可执行脚本的页面在不可执行的页面上运行脚本时**
-
Same or Trusted domain ( script-src 'self' // script-src 'a.com' )
-
script-src 'self' unsafe-inline
-
可通过嵌入 nginx 400 错误页、favicon.ico / robots.txt 等 404 页面来插入脚本

-
也可利用 Request URI Too Big 错误
-
也可利用 Cookie max size 错误
https://www.slideshare.net/ssusera0a306/volgactf-2018-neatly-bypassing-csp
*** 类似于点击劫持 (Click Jacking),利用悬挂标记 (dangling markup) 进行 CSP 绕过(与其说是绕过,不如说是窃取 DOM 代码中的敏感信息)**
*** 利用 Angular JS 等前端框架的 CDN 进行 CSP 绕过**
<script src=//ajax.googleapis.com/ajax/services/feed/find?v=1.0%26callback=alert%26 ..
ng-app"ng-csp ng-click=$event.view.alert(1337)><script src =//ajax.googleapis.com/ajax ...
etc...
评论