TryHackMe勉強ログ: Walking An Application

2024/03/09に公開

Walking An Application

このRoomでは、Webセキュリティに関する問題を、下に記載されているブラウザ標準ツールを用いて、ハンズオン形式でツールの基本的な使い方を理解していきます。

まず簡単なところで、Webページ上で右クリックを行うと下記の項目が確認でき、Task3ではこれを利用します。

  • ページのソースを表示(View Source) - ブラウザを起動してターゲットのWebサイトの静的コードを確認します

下記については、開発者ツール(Developer Tool)またはウェブ開発ツール(Web Developer Tool)の機能となります。

  • インスペクター(Inspector) - Webサイトのページ要素を調査して通常はブロックされているコンテンツを確認するために変更を加えるため
  • デバッガ―(Debugger) - そのページにあるJavascriptのコードの流れを調査したりコントロールするため
  • ネットワーク(Network) - ページをブラウジングした時の全てのリクエストの流れを確認するため

Task 1: Walking An Application

このセクションでは、上記で紹介したツールの紹介以外に、特に追加で説明することはありません。
回答

(特にありません。"Question Done"をクリックして次のセクションに進んでください)

Task 2: Exploring The Website

このセクションでは、Task1で起動したマシンがブラウザから一見するとどのような特徴やURLを持っているかを簡単に説明しています。
英語で書いてありますが自身でマシンを起動して、ページを色々遷移して「( ´_ゝ`)フーン」とどういうページがあるのかを軽く理解することだけで大丈夫です。

「単語が理解できないよぅ……」「そもそもWebの仕組みも理解が怪しい……」ってなった時は、外部リンクですが、この辺りの情報が勉強になるので適宜参照することをおススメします。

回答

(特にありません。"Question Done"をクリックして次のセクションに進んでください)

Task 3: Viewing The Page Source?

この章では、Webページのソースを読んで、各問題に回答します。

What is the flag from the HTML comment?

まずはFirefoxを起動して、下記のURLを入力してアクセスを試してください。

https://\<Active Machine\>.p.thmlabs.com
例:MachineのIPアドレスがa.b.c.dなら、https://a-b-c-d.p.thmlabs.com

感覚的にIPアドレス直打ちで行きそうになりますが、Task 1で指定しているように、上記の形式でやりましょう。

ページが開けて、Acme IT Supportのホームページが表示されたら右クリックして、"View Page Source"でページのソースを確認します。

すると、ソースの上部(1~3行目)にコメントアウトされた文章が見え、どうやら「/new-home-beta」に現在新しいホームページを作っているような記載が見えます。

であれば、まずは"hxxps[:]//a-b-c-d[.]p.thmlabs[.]com/new-home-beta"(問題はないはずですが一応defangしておきます)と入力して、試してみましょう。

すると最初のFlagが出てきます。
ここから学べることは、コメントアウトで外部の人間にソースに見える形でこういったメモを書くことが如何に危険かということです。

回答

THM{HTML_COMMENTS_ARE_DANGEROUS}

What is the flag from the secret link?

上記の設問の流れで、再度ページのソースに目を通してみましょう。
すると、41行目の"Our dedicated staff are ready to assist you with your IT problems"のtoという単語に"/secret-page"というリンクが張られており、実際のページでクリックするとFlagが隠れていました。これが答えです。

ページをぱっと見しただけでは見落としてしまいそうな点もソースを表示すると、リンクが隠れていることも分かってしまいます。

回答

THM{NOT_A_SECRET_ANYMORE}

What is the directory listing flag?

ソースコードに再度戻ってページを眺めていると、<link href="/assets/...">やら<img src="/assets/...">などのCSSファイルやJSファイル、画像ファイルの格納先が"/assets"に格納されていることを確認できます。

そのため、"hxxps[:]//a-b-c-d[.]p.thmlabs[.]com/assets"というページに何か隠れていないか、と調べてみるとディレクトリが隠れていました。そこに"flag.txt"という、いかにも怪しいファイルがあるので調べてみたら、答えでした。

この手法とは、ディレクトリリスティング(Directory Listing)と呼ばれ、本来みられてはいけないファイルやフォルダの内容を参照されてしまうという危険性があります。

これを参照できないようにするためには、Apache Webサーバの設定ファイルであるhttpd.confにあるIndexesを削除してhttpdデーモンを再起動することで、外部から参照できなくなります。

....
    Options Indexes FollowSymLinks
    Options FollowSymLinks
....

ApacheやNginxなどのWebサーバーを構築する際に一般的に使われるオープンソースのソフトウェアでは、下記に説明があります。

回答

THM{INVALID_DIRECTORY_PERMISSIONS}

What is the framework flag?

これは、Webサイトのソースコードを確認した時に気づいたかもしれませんが、実はソースコードの51行目にフレームワークについての説明を残しています。しかも使用しているバージョンは1.2という。

リンク先が記載されているので、まずはリンク先をブラウザで開いてみます。すると、THM Web Frameworkというページが表示され、現在の最新版はCurrent Versionから1.3であることから、ターゲットのWebサーバーでは古いバージョンを使っていることが分かりました。

つまり、1.3では機能向上の他にも、1.2では抱えていた脆弱性や不具合を解消したなどの情報を得られる可能性があるので、Change Logをクリックします。すると、Version 1.3で「Version 1.2で"/tmp.zip"ファイルをWebサーバーの訪問者が参照できてしまう不具合があった」という旨の情報が書いてありました。

この情報を基に、"hxxps[:]//a-b-c-d[.]p.thmlabs[.]com/tmp.zip"を入力するとtmp.zipファイルのダウンロードが始まります。これを展開して参照すると、回答のFlagが得られます。

この教訓としては、使用しているフレームワークの詳細やバージョン情報をソースなどから特定できないようにすることも重要です。

回答

THM{KEEP_YOUR_SOFTWARE_UPDATED}

Task 4: Developer Tools - Inspector

このセクションでは、開発用ツール(Developer Tools)のインスペクターの基本的な使い方を学びます。開発用ツールの使い方はTryHackMeに記載がありますが、日本語でさっと色々なブラウザでの使い方を確認したい場合は下記のMDN Webのドキュメントが参考になります。

What is the flag behind the paywall?

今回は開発者ツールのインスペクターを使って、ページ上やソース上からは見えない内容を見えるようにしてFlagを回答する設問です。

まずはドキュメントが指示している通り、"News" > "3 Tips for keeping your printer working"に移動します。そして開発用ツールを開いて、インスペクター(Inspectors)を選択します。一番左にページのソースがあるので、TryHackMeの指示通り<div class="premium-customer-blocker">をクリックします。

すると中央に要素が現れ、style.cssから「display: block」という内容が見えてしまいました。
これをnoneと変更すると、邪魔していた"Sorry :( ~"の表示が消えて隠れていた内容を参照できるようになります。そこにFlagもあるので、これが答えです。

参考:

回答

THM{NOT_SO_HIDDEN}

Task 5: Developer Tools - Debugger

次はデバッガー(Debugger)の基本的な使い方を使用するためのセクションです。

What is the flag in the red box?

まずは指示通り、"Contact"のページを開きます。
すると、Acme IT Supportへの問い合わせフォームが表示されるので、ここでメールを送信する際のデバッガーを使ってFlagを見つける問題となります。

開発用ツールを開いて、デバッガー(Debugger)を開いてassetsの中にflash.min.jsがあることを確認し、クリックしてみます。1行で表示されると分かりにくいので、"{ }"マークをクリックすると全109行と見やすくなりました。

108行目に"flash['remove']();"があり、これはポップアップがページから直ぐに削除されるようなコードがあります。なので、このポップアップが直ぐに消されないようブレークポイント(breakpoints)を指定したいので、108行目をクリックします。

その状態でページをリロードすると、赤地に灰色文字のFlagが出てきます。

回答

THM{CATCH_ME_IF_YOU_CAN}

Task 6: Developer Tools - Network

次はネットワーク(Network)の基本的な使い方を使用するためのセクションです。解き方についてはTryHackMeの指示に従って操作すればFlagにたどり着けます。

What is the flag shown on the contact-msg network request?

Task 4のブレークポイントを再クリックして解除し、Contact Usのページをリロードしてください。そして開発用ツールのネットワークを選んでください。

もし色々表示されている場合は開発用ツールの左上に見えるゴミ箱マークをクリックすると、クリアできます。

ネットワークには何もない状態で、Contact Usページの"Send Message"ボタンをクリックしてください。すると1つ、"contact-msg"というファイル名が出てくるので、その行をクリックして"Response"をクリックするとFlagが見つかります。
(Headersの中にもX-FLAGヘッダーという、いかにもFlagっぽい記載がありますが、これは罠です)

回答

THM{GOT_AJAX_FLAG}

Discussion