OWASP Juice Shop 解いた記録(⭐️⭐️)
はじめに
今年の7月からCTFを始めました。
Try Hack Me、Hack the Box、Cpaw CTF、pico CTFなどを齧りつつ、今はOWASP Juice Shopに張り付いてます。
自分の学習用ログとして、こちらに解いた記録を残しておきます。
以下は完全なる解答ネタバレになりますので、ご自分で解きたい方はUターンしてください!
今回は⭐️2のタスクです。
タスク
Reflected XSS
ヒントに、URLのパラメータが画面上にも表示されているところを探せとある。
注文履歴の追跡画面で、注文IDがURLにも画面上にも表示されている。
与えられたiframeのタグを、urlのパラメータに書き換えてみる。
エンターを押しても何も起きなかった。その後ページをリロードしたら表示が変わった。
Exposed credentials
main.js 内を test で検索してみると、テスト用のアカウント testingUsername と testingPassword がハードコードされている。
その情報でログインしたらクリア。
Login Admin
商品レビューに投稿者のメアドが書いてあり、adminのメアドもそこから取得できる。
ログインフォームのメアド部分に admin@juice-sh.op'-- と入力し、パスワード部分に適当に入力するとログインできる。
Admin Section
ChatGPTに、管理画面のパスとしてあり得るものを案出ししてもらった。
その中の /administration で管理画面にアクセスできた。
Password Strength
ChatGPTに、adminのパスワードとしてあり得るものを案出ししてもらった。
admin123 でログインできた。
View Basket
adminにログインした状態でカートを表示するときに、/rest/basket/1 というエンドポイントにリクエストしていた。
1はユーザーIDのようなので、Burp Suiteでパスを /rest/basket/2 に変更してリクエストしたら別のカートを表示できた。
Deprecated Interface
説明欄に a deprecated B2B interface というワードがある。
ジュースショップはB2Cなので、かつてB2Bだった名残があるということなのか?
main.js でB2Bと検索すると、以下のテキストが見つかる。
"Input area for uploading a single invoice PDF or XML B2B order file or a ZIP archive containing multiple invoices or orders\x3c!----\x3e"
現行のジュースショップでファイルアップロードができるのは、左メニューのComplaint内にあるInvoiceアップロード機能。
適当にXMLファイルを作成してアップロードを試みるが、そのフォームではPDF、ZIPファイルしか受け付けていない。
ファイルの拡張子を sample.xml.zip とすると、ファイル選択画面で選択することができる。
そのまま送信しても何も起きないので、Burp Suiteでリクエスト内の sample.xml.zip という文字列を sample.xml に書き換えて送信するとクリア。
Empty User Registration
リクエストを email: '' password: '' にすることで達成。
Five-Star Feedback
別途アクセスした管理画面で、唯一の5つ星レビューをナチュラルに削除。
Login MC SafeSearch
例の如く、商品レビューからメアドを取得。
MC SafeSearchで検索すると、パスワードに関するMVが見つかる。歌詞を見ると以下のことがわかる。
- Mr. Noodlesという飼い犬の名前をパスワードにしている
- いくつかの母音を0に書き換えている
結局答えは Mr. N00dles だったのだけど、Mr.の後に半角スペースを入れずにしばらく苦戦した。
Meta Geo Stalking
フォトギャラリーにアップロードされているJohnのハイキングの写真をローカルにDLする。
exiftoolで画像の情報を見てみると、緯度経度がわかる。その表記のままGoogle Mapにコピペしてみたが、検索ができない。
exiftool ファイル名 -c "%.6f" というコマンドにすると、Google Mapで使えるフォーマットで緯度経度が表示される。
マップの検索バーに貼り付けると該当の場所が表示される。
NFT Takeover
別途オープンした管理画面を見ると、 /juicy-nft でjuicy chatbot nftを送ってくださいというコメントがある。
/#/juicy-nft にアクセスすると、秘密鍵を入力するフィールドがある。
管理画面で見たコメントには purpose betray marriage blame crunch monitor spin slide donate sport lift clutch というフレーズがあり、NTFのシードフレーズであると思われる。
シードフレーズから秘密鍵を取得できるサイトに、該当のフレーズを入力すると秘密鍵が出力される。
(コメント投稿者のメアドが ***ereum@juice-sh.op なので、Ethereumであると仮定してプルダウンからETHを選択する)
ページ下の方のPrivate Keyをコピーして /#/juicy-nft のフォームに入力して送信するとクリア。
Security Policy
サイトのセキュリティポリシーはどこに書いてあるか。
IETF(Internet Engineering Task Force)に定められている、 security.txt というファイルがあるらしい。
セキュリティポリシーを書いたり、脆弱性を見つけた時の連絡先などを書くものらしい。
robots.txt などと同じように置き場が決まっていて、/.well-known/security.txt に置くらしい。
そのパスにアクセスしてみたらタスククリア。
Visual Geo Stalking
画像に写っている建物の窓に ITsec と書いてあり、それが社名。
Weird Crypto
サイト内で暗号化されているところを探す。
ユーザー登録完了のレスポンスに、暗号化されたパスワード文字列が含まれている。
暗号タイプをチェックするツールに入れてみると、md4やmd5と出てくる。
両方とも脆弱とされているので、これが問題だとわかる。
左メニューのCustomer Feedbackに、md5というコメントで送信するとクリア。
Discussion