【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.txt と j.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