はじめに
Gobuster は、ディレクトリおよびファイルの総当たり攻撃 (brute-forcing)、DNS サブドメインの総当たり攻撃、S3 バケット列挙に使用される強力なツールです。スキャンを実行する際、ターミナルに表示される情報の量は大きく変動する可能性があります。この出力の冗長性 (verbosity) を制御する方法を理解することは、効率的な分析と、不要なデータでターミナルが圧倒されるのを避けるために不可欠です。
この実験 (lab) では、Gobuster の出力冗長性を管理する方法を学びます。デフォルト設定でスキャンを実行し、次に冗長性を最小限に抑えるための静寂モード (-q) を探求し、最後に詳細を最大化するための冗長モード (-v) を探求します。これらの異なるレベルを比較することで、迅速なチェックから詳細な調査まで、さまざまなシナリオに合わせて Gobuster の出力を調整する実践的な経験を得ることができます。
標準スキャンを実行し、デフォルトの出力を観察する
このステップでは、特定の冗長性フラグなしで標準的な Gobuster スキャンを実行します。これにより、Gobuster のデフォルトの出力動作を観察できます。通常、これは発見されたディレクトリやファイルが検出された順に表示されます。
まず、ホームディレクトリの project フォルダにいることを確認してください。
cd ~/project
次に、Gobuster コマンドを実行します。この実験 (lab) では、外部ウェブサイトのスキャンを避けるためにローカルターゲットを使用します。デモンストレーション目的で、ターゲットとして http://localhost を、単語リスト (wordlist) として小さなリストを使用します。
gobuster dir -u http://localhost -w /usr/share/wordlists/dirb/common.txt -x php,html,txt -z
コマンドの内訳を見てみましょう。
gobuster dir: ディレクトリ/ファイルの総当たり攻撃 (brute-forcing) スキャンを実行することを指定します。-u http://localhost: ターゲット URL をhttp://localhostに設定します。-w /usr/share/wordlists/dirb/common.txt: 列挙に使用する単語リスト (wordlist) を指定します。この単語リストには、一般的なディレクトリ名とファイル名が含まれています。-x php,html,txt: 検索するファイル拡張子を指定します。-z: ステータスバーを非表示にします。これは、比較のためにクリーンな出力をキャプチャする際に干渉することがあります。
ターミナルでの出力を観察してください。見つかったディレクトリとファイル、およびそれらの HTTP ステータスコードを示す行が表示されるはずです。
===============================================================
Gobuster v3.1.0
by OJ <ojob.dev>
===============================================================
[+] Url: http://localhost
[+] Threads: 10
[+] Wordlist: /usr/share/wordlists/dirb/common.txt
[+] Extensions: php, html, txt
[+] Status codes: 200,204,301,302,307,401,403
[+] User Agent: gobuster/3.1.0
[+] Timeout: 10s
===============================================================
2024/07/29 08:00:00 Starting gobuster in directory enumeration mode
/index.html (Status: 200)
/server-status (Status: 403)
/manual (Status: 301)
/icons (Status: 301)
/phpmyadmin (Status: 301)
/test.php (Status: 200)
/info.php (Status: 200)
/robots.txt (Status: 200)
/license.txt (Status: 200)
/README.txt (Status: 200)
===============================================================
2024/07/29 08:00:00 Finished
===============================================================
これがデフォルトの出力であり、情報と簡潔さのバランスを提供します。
-q フラグを使用して静寂モードでスキャンを再実行する
このステップでは、静寂モードを使用して Gobuster スキャンを再実行します。-q フラグはほとんどの出力を抑制し、必要な発見のみを表示します。このモードは、冗長な情報に気を取られることなく特定のターゲットを迅速にチェックしたい場合や、出力を別のツールにパイプする場合に役立ちます。
以前と同じ Gobuster コマンドを実行しますが、今回は -q フラグを追加します。
gobuster dir -u http://localhost -w /usr/share/wordlists/dirb/common.txt -x php,html,txt -z -q
出力を観察してください。初期バナー、統計情報、および進捗状況の更新が表示されなくなったことに気づくはずです。コンソールには、発見されたディレクトリとファイルのみが出力されます。
/index.html (Status: 200)
/server-status (Status: 403)
/manual (Status: 301)
/icons (Status: 301)
/phpmyadmin (Status: 301)
/test.php (Status: 200)
/info.php (Status: 200)
/robots.txt (Status: 200)
/license.txt (Status: 200)
/README.txt (Status: 200)
この静寂な出力は、スクリプト作成時や、発見されたパスのみに関心がある場合に最適です。
-v フラグを使用して冗長モードでスキャンを再実行する
このステップでは、冗長モードを使用して Gobuster スキャンを再実行します。-v フラグは、実行されたすべてのリクエストとその対応するレスポンスステータスを含む、スキャンプロセスに関するより詳細な情報を提供します。このモードは、デバッグ時や、特定のパスが見つからない理由や予期しないレスポンスが返される理由を理解する必要がある場合に特に役立ちます。
同じ Gobuster コマンドを実行しますが、今回は -v フラグを追加します。
gobuster dir -u http://localhost -w /usr/share/wordlists/dirb/common.txt -x php,html,txt -z -v
出力を観察してください。表示される情報の量が大幅に増加していることがわかります。単語リスト (wordlist) の各単語について、Gobuster はテスト中の URL と受信した HTTP ステータスコードを表示します。存在しないパスやエラーを返すパスについても同様です。
===============================================================
Gobuster v3.1.0
by OJ <ojob.dev>
===============================================================
[+] Url: http://localhost
[+] Threads: 10
[+] Wordlist: /usr/share/wordlists/dirb/common.txt
[+] Extensions: php, html, txt
[+] Status codes: 200,204,301,302,307,401,403
[+] User Agent: gobuster/3.1.0
[+] Timeout: 10s
===============================================================
2024/07/29 08:00:00 Starting gobuster in directory enumeration mode
Testing url: http://localhost/index.html (Status: 200)
Testing url: http://localhost/server-status (Status: 403)
Testing url: http://localhost/manual (Status: 301)
Testing url: http://localhost/icons (Status: 301)
Testing url: http://localhost/phpmyadmin (Status: 301)
Testing url: http://localhost/test.php (Status: 200)
Testing url: http://localhost/info.php (Status: 200)
Testing url: http://localhost/robots.txt (Status: 200)
Testing url: http://localhost/license.txt (Status: 200)
Testing url: http://localhost/README.txt (Status: 200)
Testing url: http://localhost/admin (Status: 404)
Testing url: http://localhost/login (Status: 404)
... (tested pathごとにさらに多くの行)
===============================================================
2024/07/29 08:00:00 Finished
===============================================================
この冗長な出力は、スキャンプロセスの完全なトレースを提供し、トラブルシューティングや詳細な分析に非常に役立ちます。
3 つの出力詳細レベルを比較する
このステップでは、実行した 3 つの異なる Gobuster スキャン(デフォルト、静寂モード (-q)、冗長モード (-v))の出力を比較します。それぞれの違いを理解することで、さまざまな状況に最も適した出力レベルを選択できるようになります。
各出力の特徴を思い出しましょう。
- デフォルト出力: サマリーバナー、進捗状況の更新(
-zが使用されていない場合)、および発見されたディレクトリ/ファイルとそのステータスコードのみをリスト表示します。一般的な使用に適したバランスの取れた出力です。 - 静寂モード (
-q): 非必須情報をすべて抑制し、発見されたディレクトリ/ファイルのみを表示します。これは、クリーンで解析可能な出力に役立ち、特に他のツールへのパイプや結果のみが必要な場合に適しています。 - 冗長モード (
-v): テストされたすべての URL とそのレスポンスステータスを含む、詳細な情報を表示します。これは、デバッグ、ネットワークインタラクションの理解、またはスキャンの完全な監査証跡が必要な場合に非常に役立ちます。
以下のシナリオと、各出力レベルがどのように最適に適合するかを検討してください。
- 一般的なパスのクイックチェック: 静寂モード (
-q) が効率的です。 - 一般的な偵察: デフォルト出力は十分なコンテキストを提供します。
- 期待されるパスが見つからないスキャンのトラブルシューティング: 冗長モード (
-v) は、リクエストが失敗する理由や受信しているレスポンスを特定するのに役立ちます。 - 自動処理のために Gobuster をスクリプトに統合する: 静寂モード (
-q) は、解析しやすいクリーンな出力を保証します。
前のステップで観察したターミナル出力を比較することで、各フラグが冗長性をどのように変更するかを明確に確認できます。
様々なシナリオに適した冗長性レベルを選択する
この最終ステップでは、Gobuster の各出力冗長性レベルをいつ使用するかについての理解を深めます。冗長性の選択は、目的とペネトレーションテストまたはセキュリティ評価のコンテキストに大きく依存します。
各モードの使用時期の概要を以下に示します。
デフォルトモード(フラグなし):
- 使用時期: 一般的なスキャン、初期偵察、またはスキャンの進捗状況と結果のバランスの取れたビューが必要な場合。最も一般的な開始点です。
- 例: 新しいターゲットを探索しており、ノイズが多すぎずに一般的なディレクトリが存在するかどうかをすばやく確認したい場合。
静寂モード (
-q):- 使用時期: 成功した発見のみに関心があり、他のすべての情報メッセージ、バナー、エラーを抑制したい場合。これは、スクリプト作成、他のツール(
grepやawkなど)への出力のパイプ、または多数のスキャンを並列実行していてターミナルの乱雑さを最小限に抑えたい場合に理想的です。 - 例: ディレクトリ列挙を自動化するスクリプトを作成しており、発見された URL をさらに分析するために別のツールに直接渡したい場合。
- 使用時期: 成功した発見のみに関心があり、他のすべての情報メッセージ、バナー、エラーを抑制したい場合。これは、スクリプト作成、他のツール(
冗長モード (
-v):- 使用時期: デバッグ、トラブルシューティング、またはすべてのリクエストとレスポンスの詳細な理解が必要な場合。このモードは、404 やその他のエラーにつながる試みを含むすべての試行を表示します。これは、微妙な問題を特定したり、サーバーの動作を理解したりするために重要となる場合があります。
- 例: Gobuster スキャンで期待されるディレクトリが見つからず、ネットワークの問題、リクエストをブロックしている WAF、または異常なサーバーレスポンスが疑われる場合。冗長出力は、各リクエストで何が起こっているかを正確に示します。
これらの冗長性オプションを習得することで、Gobuster スキャンをより効率的かつ特定のニーズに合わせて調整でき、時間を節約し、分析能力を向上させることができます。
まとめ
この実験では、Gobuster の出力冗長性を制御する方法を習得しました。まず、列挙プロセスのバランスの取れたビューを提供するデフォルト出力を観察するために標準スキャンを実行しました。次に、-q フラグを使用した静寂モードを探索しました。これは、発見されたパスのみを表示するように出力を最小限に抑え、スクリプト作成やクリーンな結果に最適です。最後に、-v フラグを使用した冗長モードを利用して、すべてのリクエストとレスポンスの詳細な洞察を得ました。これは、デバッグや詳細な分析に非常に役立ちます。
これらの異なる冗長性レベルを理解し適用することで、Gobuster の出力をクイックチェックから詳細なトラブルシューティングまで、さまざまなシナリオに合わせて効果的に調整し、ディレクトリおよびファイル列挙タスクの効率を高めることができます。
