👨‍💻

【TryHackMe】Basic Pentesting 攻略記録

に公開

【TryHackMe】Basic Pentesting 攻略記録

概要

この投稿は TryHackMe の “Basic Pentesting” ルームの攻略記録です。Web アプリの列挙からユーザー・パスワードの取得、Linux 環境での権限昇格まで、初心者向けに基本的なペネトレーションテストの流れを体験できます。

項目 内容
ルーム名 Basic Pentesting
プラットフォーム TryHackMe
難易度 Easy
カテゴリ Web、Linux、Privilege Escalation
主要ツール nmap, dirb, enum4linux, hydra, john

学習目標と目的

  • Web サーバーやネットワークサービスの列挙方法を学ぶこと。
  • 隠しディレクトリの発見と、そこから得られるヒントを活用する練習をすること。
  • ユーザー名の列挙とパスワードのブルートフォースを体験すること。
  • Linux 環境にログインした後、権限昇格のための情報収集と exploit の流れを学ぶこと。

攻略の流れ

1. マシンの準備と初期調査

まずはルームのマシンを起動し、OpenVPN で TryHackMe のネットワークに接続します。タスク冒頭の「Deploy the machine」など回答不要の部分は、機械を起動しネットワークにつなぐ作業のみです。回答欄に入力するものはないので、淡々と準備を進めます。

その後 nmap -sV -Pn -oN <ファイル名> -v <IP> でポートスキャンを行い、HTTP や SSH、SMB など複数のサービスが動いていることを確認します。ここではまだ具体的な回答は求められないので、どのサービスが開いているかをメモする程度で問題ありません。

2. 隠しディレクトリの探索

ポート 80 の Web サーバーをブラウザで開いてもトップページしか表示されません。
ページのソースコードを確認すると、作業内容を確認したい場合は、開発者向けノートセクションをご覧ください。との記載がありました。

dirb でディレクトリ列挙を実行します。※辞書ファイルにはsmall.txtを使用
すると、development というディレクトリを発見できます。


このディレクトリには dev.txtj.txt という 2 つのテキストファイルがあり、dev.txt には Apache Struts をバージョン 2.5.12 で使っていることや SMB を設定したことなどが書かれています。

2018-04-23: あのStrutsをいじってみてるんだけど、結構イケてる!このサーバーでもホストしたら面白いかも。まだ本格的なWebアプリは作ってないけど、動作をアピールするためのサンプル(しかもREST版!)は試してみたよ。ああ、今はバージョン2.5.12を使ってるよ。他のバージョンだと問題が起きたから。-K 2018-04-22: SMBの設定を完了した。-K 2018-04-21: Apacheの設定を完了した。コンテンツは後で追加する。-J

j.txt には /etc/shadow 内のハッシュを簡単にクラックできたと記載されており、パスワードポリシーの緩さを示唆しています。

Jへ:脆弱な認証情報がないか確認するため、/etc/shadowの内容を監査していたところ、君のハッシュを非常に簡単に解読できてしまった。パスワードポリシーは知っているだろうから、それに従ってほしい。すぐにでもパスワードを変更してくれ。-K

3. SMB サービスの列挙と Anonymous 共有の調査

SMBポートが開いていたため、smbclient -L <IP>を用いて共有を確認しました。

AnonymousとIPC$の2つの共有がリストアップされ、Anonymousはパスワードなしでアクセスできることがわかります。

共有内にはstaff.txtというファイルがあり、仕事に関係のないものは絶対にこの共有フォルダにアップロードしないでください。冗談のつもりなのは承知していますが、こうしたことがミスを招くのです。(Jan、あなたも例外ではありません!)-Kayと記載されています。

この内容から、ユーザー名にJanとKayが含まれることが読み取れます。また、enum4linux -a <IP> を実行して詳細を列挙すると、kayとjanというユーザーが存在することが確認できます。

パスワードは未公開ですが、hydra で SSH サービスを対象に辞書攻撃をかけると突破できます(rockyou.txt などを利用)。

パスワードを得たら ssh jan@<IP> でログインします。

4. 権限昇格のための情報収集

jan ユーザーでログインした状態では sudo 権限がなく、ホームディレクトリにも制限があるため権限昇格のヒントを探します。調査の結果、/home/kay/.ssh 配下に他ユーザーの SSH 秘密鍵が見つかり、読み取り可能であることがわかります。

5. 他ユーザーの鍵を利用したログイン

秘密鍵をホスト側へコピーし、john --sshkey でパスフレーズのハッシュをクラックします。

john でパスフレーズを復元したら ssh -i kay_key kay@<IP>kay ユーザーとしてログインできます。このユーザーのホームには pass.bak ファイルがあり、読み込むとルームの最終パスワード(ルートフラグ)が得られます。

詰まったポイントと気づき

  • 辞書攻撃には時間がかかるので、対象のユーザー名を特定してから絞り込みを行うと効率的です。
  • /home ディレクトリのパーミッションや .ssh フォルダに注目すると良い結果が得られました。

振り返りと今後

このルームを通じて、Web サーバーのディレクトリ列挙や SMB サービスのユーザー列挙、SSH のブルートフォース、ローカル環境での権限昇格という基本的な手法を練習できました。

関連リンク・参考資料

  • TryHackMe ルーム: Basic Pentesting
  • 辞書攻撃用ワードリスト: rockyou.txt など

使用環境

項目 内容
OS Kali Linux
VPN TryHackMe OpenVPN
主要ツール nmap, enum4linux, hydra, linPEAS, john

Discussion