HTTP 列挙とディレクトリトラバーサル

LinuxBeginner
オンラインで実践に進む

はじめに

このドキュメントは、Web サーバーの列挙と基本的なファイルアクセスに関する実験(Lab)です。この演習では、Web サービスを発見し、それらと対話するために使用される基本的な Web 偵察技術を学びます。

この実験(Lab)では、基本的な Web 偵察シナリオをシミュレートします。まず、ターゲットシステムに対して偵察を行い、それがオンラインであることを確認し、実行中のサービスを特定します。nmapツールを使用して、Web サーバーを発見し、そのバージョンを列挙します。次に、curlコマンドを使用して、Web サーバー上に配置されたフラグファイルにアクセスします。

完了すると、以下の方法を理解できるようになります。

  • pingを使用してネットワーク接続を確認する。
  • nmapを使用して Web サービスをスキャンし、列挙を実行する。
  • 基本的な Web 偵察技術を理解する。
  • curlを使用して Web サーバー上のファイルにアクセスし、フラグを取得する。

始めましょう。

Ping でターゲットへの接続を確認する

このステップでは、まずターゲットシステムがご自身のマシンから到達可能であることを確認します。pingコマンドは、ネットワーク接続をテストするための標準的なユーティリティです。これは、ホストに ICMP Echo Request パケットを送信し、応答を待ちます。これは、あらゆるネットワーク偵察タスクにおける最初かつ最も基本的なステップです。

ご自身の環境には、ホスト名 target でアクセス可能なターゲットシステムが含まれています。

ターゲットに 4 つのパケットを送信するには、ターミナルで以下のコマンドを実行してください。

ping -c 4 target

4 つのパケットが送信され、4 つが受信されたことを確認する出力が表示され、安定した接続が示されているはずです。IP アドレスは異なる場合がありますが、結果はパケットロス 0% を示す必要があります。

PING target (172.17.0.2) 56(84) bytes of data.
64 bytes from target (172.17.0.2): icmp_seq=1 ttl=64 time=0.105 ms
64 bytes from target (172.17.0.2): icmp_seq=2 ttl=64 time=0.069 ms
64 bytes from target (172.17.0.2): icmp_seq=3 ttl=64 time=0.068 ms
64 bytes from target (172.17.0.2): icmp_seq=4 ttl=64 time=0.067 ms

--- target ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3075ms
rtt min/avg/max/mdev = 0.067/0.077/0.105/0.016 ms

接続が確認できたので、ターゲットのスキャンに進む準備ができました。

Nmap で開いているポートをスキャンする

このステップでは、nmap を使用してターゲットのオープンポートをスキャンし、そこで実行されているサービスを特定します。Nmap は、ネットワーク探索およびセキュリティ監査のための強力なツールです。このスキャンは、Web サーバーなどの潜在的な侵入口を見つけるのに役立ちます。

HTTP トラフィックの標準ポートであるポート 80 に対して、ターゲットスキャンを実行します。また、スクリプトを使用してサービスに関する追加情報を収集します。

ターミナルで以下の nmap コマンドを実行してください。

nmap -sV -p 80 --script http-enum target

このコマンドの内訳を見てみましょう。

  • -sV: バージョン検出を有効にします。これにより、ポートで実行されているサービスのバージョンを特定しようとします。
  • -p 80: ポート 80 のみをスキャンすることを指定します。
  • --script http-enum: Web サーバー上のディレクトリとファイルを列挙するスクリプトを実行します。
  • target: ターゲットマシンのホスト名です。

出力は以下のようになります。

Starting Nmap 7.80 ( https://nmap.org ) at 2025-09-18 09:40 CST
Nmap scan report for target (172.17.0.2)
Host is up (0.00018s latency).

PORT   STATE SERVICE VERSION
80/tcp open  http    Apache httpd 2.4.41 ((Unix))
|_http-server-header: Apache/2.4.41 (Unix)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 7.32 seconds

スキャン結果は、ポート 80/tcp がオープンであり、Apache httpd 2.4.41 が実行されていることを確認しています。この Web サーバーは、次のステップでアクセスできるファイルをホストしています。

HTTP でターゲットに接続する

このステップでは、curl を使用してターゲットの Web サーバーと対話し、ファイルにアクセスします。curl は、URL を使用してデータを転送するためのコマンドラインツールです。

まず、Web サーバーのメインページに標準的なリクエストを送信して、その内容を確認しましょう。

curl http://target

サーバーは、デフォルトの Apache ページの内容で応答するはずです。

<html>
  <body>
    <h1>It works!</h1>
  </body>
</html>

次に、Web サーバーのルートディレクトリに配置されたフラグファイルにアクセスしましょう。このセットアップではファイルに直接アクセスできますが、通常の方法を示します。

curl http://target/flag.txt

このコマンドは、Web サーバーのドキュメントルートからフラグファイルを直接取得します。

ターゲットシステムを探索し、フラグを見つける

この最終ステップでは、フラグを取得して表示します。前の curl コマンドの出力で、フラグがターミナルに直接表示されているはずです。

コマンドからの期待される出力は、フラグファイルの内容です。

labex{p4th_tr4v3rs4l_w1zardry}

出力が長い場合や、後で保存したい場合は、curl コマンドの出力をファイルにリダイレクトできます。これは、より大きなファイルを扱う際によく行われるプラクティスです。

コマンドを再度実行しますが、今回は結果を flag.txt という名前のファイルに保存します。

curl http://target/flag.txt > flag.txt

これで、ダウンロードしたファイルの内容を cat コマンドを使用して表示できます。

cat flag.txt

ターミナルにフラグが表示されます。

labex{p4th_tr4v3rs4l_w1zardry}

おめでとうございます!Web サーバーを特定し、フラグファイルにアクセスして、フラグを取得することに成功しました。フラグの値をコピーして、実験を完了してください。

まとめ

この実験では、基本的な Web 偵察演習を無事に完了しました。以下のスキルを学び、実践しました。

  • 偵察 (Reconnaissance): ping を使用して、ターゲットがオンラインでありアクセス可能であることを確認しました。
  • 列挙 (Enumeration): nmap をバージョン検出 (-sV) およびスクリプト (--script http-enum) と共に使用して、開いている HTTP ポートと Apache Web サーバーの特定のバージョンを特定しました。
  • ファイルアクセス (File Access): curl を使用して、Web サーバー上のファイルにアクセスしました。
  • フラグ取得 (Flag Retrieval): Web サーバーからフラグファイルを正常に取得しました。

この演習は、Web サーバーの仕組みを理解し、プログラムでそれらと対話するための基本的な Web 偵察技術を示しています。これらのスキルは、Web 開発、システム管理、およびセキュリティテストに不可欠です。