CSP Bypass 手法
Content Security Policyを回避する様々な手法のまとめ
この記事はAIによって韓国語から機械翻訳されています。原文と表現が異なる場合があります。
原文(韓国語)を読むCodegate 2020のCSP問題を解いていて、関連する回避手法を整理しようと思ったので、ざっくりとまとめてアップします。
新たに分かった情報があれば更新しますね〜〜
CTFZone 2019
- Script nonce : cache poisoning
- /index.php/などを利用してcache poisoningを行い、CSP script nonceを固定する
Codegate 2020
- Script none : Header Injection - Status Code 102
-
Status Code 102の時はCSPが動作しない点を利用
-
header("HTTP/: 102");
--
*** Script nonce : CSS Injectionの正規表現でattributeにアクセスできることを利用し、一文字ずつsearchingして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 Bypass
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 error、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 Bypass(というよりはDOMコード内の重要情報の奪取に近い)**
*** Angular JSなどFront-end FrameworkのCDNを利用したCSP Bypass**
<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...
コメント