Gobuster で基本的なディレクトリスキャンを実行する

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

はじめに

この実験では、Gobuster を使用したディレクトリスキャンの基本を学びます。Gobuster は、ペネトレーションテストや倫理的ハッキングにおいて、Web サーバー上の隠されたディレクトリやファイルを発見するために使用される強力なツールです。ターゲット URL に対して一般的なディレクトリ名をブルートフォースで試行することにより、Gobuster は機密情報や見落とされたエントリーポイントを明らかにすることができます。この実験では、ターゲットの選択、適切な単語リストの選択、Gobuster コマンドの構築、スキャンの実行、および結果の解釈について説明します。

スキャンのターゲット URL を選択する

このステップでは、Gobuster スキャンのターゲット URL を選択します。この実験の目的のため、ローカルでホストされている意図的に脆弱な Web アプリケーションを使用します。これにより、外部システムに影響を与えることなくスキャンを実行し、典型的な結果を観察することができます。

まず、ターゲットの Web サーバーが実行されていることを確認しましょう。curl を使用して、Web サーバーにアクセス可能かどうかを確認します。

ターミナルを ~/project ディレクトリで開きます。

curl http://localhost:8080

HTML 出力が表示され、Web サーバーがアクティブであることを示しているはずです。このスキャンのターゲット URL は http://localhost:8080 になります。

<!DOCTYPE html>
<html>
<head>
<title>Welcome to Nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to Nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

基本的な単語リストを選択する

このステップでは、Gobuster スキャンのための基本的な単語リストを選択します。単語リストは、Gobuster がターゲットサーバー上で見つけようとする一般的なディレクトリ名とファイル名のリストを含むファイルです。単語リストの質と網羅性は、スキャンの効果に直接影響します。

この実験では、デモンストレーションに適した、小さく事前にインストールされた単語リストを使用します。この単語リストは /usr/share/wordlists/dirb/common.txt にあります。

head コマンドを使用して、この単語リストの最初の数行を検査し、その内容を理解することができます。

head /usr/share/wordlists/dirb/common.txt

このコマンドは、単語リストの冒頭を表示し、Gobuster がテストするディレクトリ名の例を示します。

admin/
backup/
bin/
cgi-bin/
conf/
css/
data/
db/
dev/
doc/

この単語リストには、Web サーバーでよく見られる一般的なディレクトリ名が含まれています。このように小さな単語リストを使用すると、この実験の目的のためにスキャンを迅速に完了させるのに役立ちます。

基本的な gobuster dir コマンドを構築する

このステップでは、基本的な gobuster dir コマンドを構築します。gobuster dir コマンドは、ディレクトリとファイルの総当たり攻撃に使用されます。少なくとも 2 つの主要なフラグが必要です。ターゲット URL 用の -u と単語リスト用の -w です。

コマンドの基本的な構文は次のとおりです。

gobuster dir -u <target_url> -w <wordlist_path>

前のステップに基づくと:

  • ターゲット URL は http://localhost:8080 です。
  • 単語リストのパスは /usr/share/wordlists/dirb/common.txt です。

したがって、構築するコマンドは次のようになります。

gobuster dir -u http://localhost:8080 -w /usr/share/wordlists/dirb/common.txt

このコマンドは、Gobuster に対して、common.txt のエントリを潜在的なディレクトリ名として使用し、http://localhost:8080 に対してディレクトリのスキャンを実行するように指示します。次のステップでこのコマンドを実行します。

-u および -w フラグを使用してスキャンを実行する

このステップでは、前のステップで構築した gobuster dir コマンドを実行します。これにより、指定された単語リストを使用してターゲット URL に対するディレクトリスキャンが開始されます。

ターミナルで次のコマンドを実行します。

gobuster dir -u http://localhost:8080 -w /usr/share/wordlists/dirb/common.txt

スキャンが実行されると、Gobuster はその進行状況と検出されたディレクトリまたはファイルを表示します。出力には、各検出されたエントリのステータスコード(例:OK の場合は 200、恒久的な移動の場合は 301)と応答サイズが表示されます。

===============================================================
Gobuster vX.X.X-XXXXXX Linux/amd64
===============================================================
[+] Url:                     http://localhost:8080
[+] Threads:                 10
[+] Wordlist:                /usr/share/wordlists/dirb/common.txt
[+] Status codes:            200,204,301,302,307,401,403
[+] User Agent:              gobuster/X.X.X
[+] Timeout:                 10s
===============================================================
XXXX/XX/XX XX:XX:XX Starting gobuster in directory enumeration mode
===============================================================
/css                  (Status: 301)
/js                   (Status: 301)
/images               (Status: 301)
/admin                (Status: 301)
/icons                (Status: 301)
/server-status        (Status: 403)
===============================================================
XXXX/XX/XX XX:XX:XX Finished
===============================================================

上記の出力は、いくつかの検出されたディレクトリとそれらの HTTP ステータスコードを示しています。たとえば、/css301 ステータスを返し、これは恒久的なリダイレクトを示しています。

発見されたディレクトリの出力を分析する

このステップでは、Gobuster スキャンの出力を分析して結果を理解します。出力は、ターゲット Web サーバーで見つかったディレクトリとファイルに関する貴重な情報を提供します。

前のステップの出力を確認してください。次のような行が表示されるはずです。

/css                  (Status: 301)
/js                   (Status: 301)
/images               (Status: 301)
/admin                (Status: 301)
/icons                (Status: 301)
/server-status        (Status: 403)

各行は、Gobuster によって検出された潜在的なディレクトリまたはファイルを表します。

  • /css の最初の部分は、Gobuster が正常に特定したパスです。
  • (Status: XXX) は、そのパスに対してサーバーが返した HTTP ステータスコードを示します。
    • 200 OK: リクエストは成功し、コンテンツが返されました。これは多くの場合、有効なディレクトリまたはファイルであることを意味します。
    • 301 Moved Permanently: リソースは新しい URL に恒久的に移動されました。これはディレクトリの存在を示しています。
    • 403 Forbidden: サーバーはリクエストを理解しましたが、承認を拒否しました。これはディレクトリが存在するが、直接アクセスする権限がないことを意味します。
    • 401 Unauthorized: 403 と似ていますが、通常は認証が必要です。

この例では、/css/js/images/admin/icons はすべて 301 ステータスコードを返しました。これは、これらのディレクトリが存在し、サーバーがそれらにリクエストをリダイレクトしていることを意味します。/server-status パスは 403 ステータスを返し、存在しますがアクセスが禁止されていることを示しています。

この分析は、管理パネル (/admin) や設定ファイルなど、脆弱性のある可能性のある領域を特定するのに役立ちます。

まとめ

この実験では、Gobuster を使用して基本的なディレクトリのスキャンを実行しました。ターゲット URL の選択方法、適切な単語リストの選択方法、-u および -w フラグを使用した gobuster dir コマンドの構築方法、スキャンの実行方法、および出力の分析による既存のディレクトリとその HTTP ステータスコードの特定方法を学びました。この基本的なスキルは、サイバーセキュリティにおける偵察(reconnaissance)に不可欠であり、機密情報や脆弱性を含む可能性のある隠された Web アセットを発見するのに役立ちます。今後は、異なる単語リストやターゲットでこれらのテクニックを適用し、Web サーバー構造に関する理解を深めることができます。