Gobuster のフレキシブルファジングモードを使用する

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

はじめに

この実験では、人気のディレクトリおよびファイル総当たりツールである Gobuster の柔軟なファジング機能を探求します。Gobuster は一般的にdirモードで知られていますが、そのfuzzモードは、URL のさまざまな部分にペイロードを注入することで、隠された Web コンテンツを発見するための強力な方法を提供します。この実験では、特別なFUZZキーワードを使用して URL を構築する方法、カスタム単語リストを提供する方法、ファジングスキャンを実行する方法、および結果を解釈して Web サーバー上の潜在的な脆弱性または隠されたリソースを特定する方法を学びます。この実践的な経験は、ペネトレーションテストおよびセキュリティ評価に不可欠な Web 列挙スキルを向上させます。

fuzz モードと FUZZ キーワードの目的を理解する

このステップでは、Gobuster の fuzz モードと FUZZ キーワードの重要性について学びます。主にディレクトリ名とファイル名を総当たりする dir モードとは異なり、fuzz モードでは URL 内の任意の場所にペイロードを注入できます。FUZZ キーワードはプレースホルダーとして機能し、Gobuster は提供された単語リストの各エントリをここに挿入します。この柔軟性により、パスセグメント、ファイル拡張子、またはクエリパラメータなど、URL のさまざまな部分をテストして、隠されたコンテンツや脆弱性を発見できます。

たとえば、http://localhost:8000/ の下にある隠されたディレクトリを発見したい場合は、http://localhost:8000/FUZZ のような URL を使用します。Gobuster は、その後 FUZZ を単語リストの各単語で置き換えます。

Gobuster が環境にインストールされ、アクセス可能であることを確認しましょう。

gobuster version

以下のような出力が表示され、Gobuster のバージョンが示されるはずです。

Gobuster v3.x.x

パスに FUZZ キーワードを含む URL を構築する

このステップでは、FUZZ キーワードを含むターゲット URL を構築します。このキーワードは、ファジングプロセス中に単語リストのエントリをどこに挿入するかを Gobuster に指示します。この実験では、ローカルのポート 8000 で実行されているシンプルな HTTP サーバーをターゲットにします。隠されたディレクトリやファイルを発見するために、パスセグメントに FUZZ キーワードを配置します。

gobuster fuzz の基本的な構文は gobuster fuzz -u <URL_with_FUZZ> -w <wordlist> です。

ターゲットサーバーのベース URL を定義しましょう。サーバーは http://localhost:8000 で実行されています。ルートの直下にある隠されたパスを発見したいので、ファジングする URL は http://localhost:8000/FUZZ になります。

ベース URL にアクセスして、サーバーが実行されていることを確認できます。

curl http://localhost:8000/

index.html のコンテンツが表示されるはずです。

Hello from index.html

次に、コマンド構造を準備しましょう。まだ実行しませんが、URL が正しく形成されていることを確認します。

echo "The fuzzed URL will be: http://localhost:8000/FUZZ"

このコマンドは URL 文字列を単純に出力し、FUZZ キーワードの配置方法についての理解を確認します。

-w フラグを使用してペイロード単語リストを提供する

このステップでは、ファジングプロセス中に Gobuster が使用する単語リストを指定する方法を学びます。-w フラグは、単語リストファイルへのパスを指定するために使用されます。このファイル内の各行は、ターゲット URL の FUZZ キーワードを置き換えるために使用されます。

この実験では、セットアップフェーズ中に ~/project ディレクトリに fuzz_wordlist.txt という名前のシンプルな単語リストが作成されました。この単語リストには、ダミー Web サーバー上の存在するパスと存在しないパスに対応するいくつかのエントリが含まれています。

単語リストの内容を確認して、どのペイロードが使用されるかを理解しましょう。

cat ~/project/fuzz_wordlist.txt

以下のコンテンツが表示されるはずです。

secret_dir
admin_panel
test_page.html
nonexistent

これで、Gobuster が試行するペイロードがわかりました。スキャンを実行すると、Gobuster は http://localhost:8000/secret_dirhttp://localhost:8000/admin_panel のような URL にアクセスしようとします。

gobuster fuzz スキャンの実行

このステップでは、これまでの知識をすべて組み合わせて gobuster fuzz スキャンを実行します。ステップ 2 で構築したファジング URL とステップ 3 で指定した単語リストを使用します。

完全なコマンドは次のようになります。

gobuster fuzz -u http://localhost:8000/FUZZ -w ~/project/fuzz_wordlist.txt

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

  • gobuster fuzz: Gobuster をファジングモードで呼び出します。
  • -u http://localhost:8000/FUZZ: FUZZ プレースホルダーを含むターゲット URL を指定します。
  • -w ~/project/fuzz_wordlist.txt: ペイロードを含む単語リストへのパスを提供します。

それでは、ターミナルでコマンドを実行しましょう。

gobuster fuzz -u http://localhost:8000/FUZZ -w ~/project/fuzz_wordlist.txt

Gobuster が単語リストを反復処理し、各試行のステータスコードを報告するのを確認できます。

===============================================================
Gobuster v3.x.x
===============================================================
[+] Url:            http://localhost:8000/FUZZ
[+] Wordlist:       /home/labex/project/fuzz_wordlist.txt
[+] Threads:        10
[+] Timeout:        10s
===============================================================
2024/01/01 12:00:00 Starting gobuster in fuzz mode
===============================================================
http://localhost:8000/secret_dir (Status: 200)
http://localhost:8000/admin_panel (Status: 200)
http://localhost:8000/test_page.html (Status: 200)
http://localhost:8000/nonexistent (Status: 404)
===============================================================
2024/01/01 12:00:00 Finished
===============================================================

secret_diradmin_paneltest_page.html(Status: 200) に注目してください。これは、これらのパスが存在し、成功した応答を返したことを示しています。nonexistent(Status: 404) は、予想どおり、このパスが見つからなかったことを示しています。

フレキシブルファジングの結果を分析する

この最終ステップでは、gobuster fuzz スキャンの出力を分析して、何が発見されたかを理解します。ファジングの主な目的は、リソースの存在を示す有効な応答(通常は 200 OK、301 Moved Permanently などの HTTP ステータスコード)を特定することです。

前のステップの出力から、次のような行が表示されたはずです。

http://localhost:8000/secret_dir (Status: 200)
http://localhost:8000/admin_panel (Status: 200)
http://localhost:8000/test_page.html (Status: 200)
http://localhost:8000/nonexistent (Status: 404)
  • http://localhost:8000/secret_dir (Status: 200): これは、secret_dir という名前のディレクトリが Web ルート下に存在することを示しています。curl を使用してアクセスを試みることができます。

    curl http://localhost:8000/secret_dir/hidden_file.txt
    

    以下が表示されるはずです。

    Secret content
    
  • http://localhost:8000/admin_panel (Status: 200): これは、admin_panel ディレクトリが存在することを示唆しています。

    curl http://localhost:8000/admin_panel/login.php
    

    以下が表示されるはずです。

    Admin login
    
  • http://localhost:8000/test_page.html (Status: 200): これは、test_page.html という名前のファイルが存在することを示しています。

    curl http://localhost:8000/test_page.html
    

    以下が表示されるはずです。

    Test page
    
  • http://localhost:8000/nonexistent (Status: 404): これは「見つかりません」というステータスであり、存在しないパスに対しては予想されるものです。これは、Gobuster が存在しないリソースを正しく識別していることを確認するのに役立ちます。

ステータスコードを分析することで、メインの Web サイトから直接リンクされていない可能性のある隠しディレクトリ、ファイル、またはその他のリソースを効果的に特定できます。これは、セキュリティ評価における偵察の重要なステップです。

まとめ

この実験では、Gobuster のフレキシブルファジングモードの使用方法を学びました。単語リストからペイロードを注入するためのプレースホルダーとしての FUZZ キーワードの役割を理解しました。ファジングされた URL を構築し、カスタム単語リストを提供し、gobuster fuzz スキャンを実行し、結果を分析して既存の Web リソースを特定しました。この実践的な経験は、Web 列挙における Gobuster のファジング機能の強力さと汎用性を示しており、サイバーセキュリティとペネトレーションテストにおける基本的なスキルです。これらの技術を応用して、さまざまな Web アプリケーションの隠しコンテンツを発見できるようになりました。