【ITニュース解説】Basic Pentesting (TryHackMe)

2025年09月05日に「Qiita」が公開したITニュース「Basic Pentesting (TryHackMe)」について初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

ITニュース概要

TryHackMeの「Basic Pentesting」チャレンジに取り組んだ記録。システムへの侵入テスト(ペネトレーションテスト)の基礎を学び、実践的な内容をまとめている。必ず許可された環境でのみ実行するよう注意喚起する。

出典: Basic Pentesting (TryHackMe) | Qiita公開日:

ITニュース解説

ペネトレーションテストとは、システムやネットワークに存在するセキュリティ上の弱点を見つけ出し、実際に攻撃者がどこまで侵入できるかを試す模擬攻撃のことである。これは、企業のシステムが外部からの不正アクセスに対してどれだけ耐性があるかを確認するために重要なプロセスだ。この記事は、セキュリティ学習プラットフォーム「TryHackMe」の課題「Basic Pentesting」を通して、このペネトレーションテストの基本的な流れと手法を具体的に解説している。

ペネトレーションテストは通常、いくつかの段階を経て行われる。最初の重要な段階は「情報収集」だ。これは、攻撃対象となるシステムに関する情報を可能な限り多く集める作業で、ターゲットのIPアドレスが分かっているところからスタートする。まず「nmap」というツールが使われる。これはネットワークに接続された機器の情報を探るツールで、ターゲットのサーバーが開いているポート(通信の出入り口)や、そこで動いているサービスの種類、そのバージョンなどを特定するのに役立つ。例えば、TCPポートの21番(FTP)、22番(SSH)、80番(HTTP)、139番(NetBIOS)、445番(SMB)などが開いていることが分かり、ウェブサーバーとしてApacheが動作していることや、ファイル共有に使われるSambaのバージョンなども判明する。これらの情報は、後に脆弱性を見つける手がかりとなる。次に「Gobuster」というツールで、ウェブサーバー上に公開されているが、通常のブラウジングでは見つけにくい隠しディレクトリやファイルを探索する。これは、あらかじめ用意された単語リスト(辞書ファイル)を使って、一つ一つ可能性のあるパスを試していく方法だ。記事では、WordPressの管理画面へのパス「/wordpress」や、その他の設定ファイルなどが見つかった。さらに、ターゲットがWordPressというウェブサイト作成ツールを使っていることが分かった場合、「WPScan」という専門ツールで、WordPressのバージョン、インストールされているプラグインやテーマ、登録されているユーザー名といった詳細な情報を集める。これらの情報は、WordPress固有の既知の脆弱性を探す上で非常に有用なのだ。

情報収集が終わると、次の段階は「脆弱性探索」だ。集めた情報に基づいて、実際にシステムに存在する可能性のある弱点を探し、悪用を試みる。この記事では、WordPressの「REST API」という機能に存在する既知の脆弱性(CVE-2017-1000600)を悪用するケースが紹介されている。この攻撃には「Metasploit」という、セキュリティテストのための強力なフレームワークが使われる。Metasploitは、様々な攻撃手法(エクスプロイト)や補助ツール(ペイロード)をまとめたもので、これを使うことで、特定の脆弱性を狙った攻撃を効率的に実行できる。記事では、この脆弱性を利用して、ターゲットサーバー上で任意のコマンドを実行できる「シェル」(サーバー操作画面)と呼ばれる状態を獲得している。シェルは、サーバーを直接操作できる状態を指し、これが取得できれば、サーバー内のファイルを参照したり、プログラムを実行したりできるようになる。これにより、最初の目標である「user.txt」というファイルを見つけ出し、その内容を読み取って、最初の成功の証(フラグ)を得る。

しかし、多くの場合、最初の侵入で得られるのは一般ユーザーとしての権限だ。システム全体を完全に掌握するためには、「権限昇格」という次の段階が必要になる。これは、より高い権限、特に「root権限」(Windowsでいう管理者権限に相当する、システム上の最高権限)を獲得するためのプロセスだ。まず、現在のユーザーがどのような権限を持っているか、「sudo -l」コマンドを使って確認する。これにより、sudo(スーパーユーザー権限でコマンドを実行する)コマンドをパスワードなしで使えるか、あるいは特定のコマンドだけ使えるか、といった情報が分かる。また、システム全体で「SUID(Set User ID)」ビットが設定されているファイルを探すのも一般的な手法だ。SUIDビットが設定されたプログラムは、それを実行したユーザーの権限ではなく、そのプログラムの所有者の権限(多くの場合root)で実行されるため、うまく悪用できればroot権限で操作が可能になる。記事では、「nmap」にSUIDビットが設定されていることを見つけ出し、これを悪用している。具体的には、nmapの「インタラクティブモード」に入り、そこから「!sh」というコマンドを実行することで、root権限を持つシェルを起動している。このroot権限のシェルが手に入れば、システム上のあらゆるファイルにアクセスしたり、設定を変更したりすることが可能になる。最終的に、「/root/root.txt」というファイルを見つけ出し、その内容を読み取ることで、ペネトレーションテストの最終目標が達成される。

このように、ペネトレーションテストは、情報収集から始まり、脆弱性の特定と悪用、そして権限昇格という段階を踏んで行われる、非常に実践的なセキュリティ評価手法である。それぞれの段階で、特定の目的を持った様々なツールや技術が使われる。この記事は、これらのプロセスを具体的なコマンドと結果を交えながら解説しており、システムエンジニアを目指す人にとって、サイバー攻撃がどのように行われるのか、そしてそれに対してどのように防御策を講じるべきかを理解するための貴重な教材となるだろう。重要なのは、これらの手法やツールは必ず許可された環境でのみ実行し、倫理的な利用を心がけることだ。これにより、実践的な知識を深め、よりセキュアなシステム設計や運用に貢献できる人材へと成長していけるだろう。

【ITニュース解説】Basic Pentesting (TryHackMe) | いっしー@Webエンジニア