Gobuster で結果から特定のステータスコードを除外する

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

はじめに

この実験(Lab)では、人気のディレクトリおよびファイル総当たり攻撃ツールである Gobuster を効果的に使用し、スキャン結果から特定の HTTP ステータスコードを除外する方法を学びます。Web 列挙を実行する際、多くの場合、「見つかりません」(404)やその他の無関係な応答に遭遇し、出力が煩雑になります。これらをフィルタリングすることで、より意味のある結果に焦点を当てることができ、偵察作業をより効率的かつ的確に行うことができます。この実験では、ノイズの多いステータスコードを特定し、ベースラインスキャンを実行し、その後 Gobuster の-bフラグを使用して除外フィルタを適用する手順を説明します。

無視すべきノイズとなるステータスコードの特定(例:404)

このステップでは、Gobuster スキャン中に特定の HTTP ステータスコードを特定し除外することがなぜ重要なのかを理解します。Gobuster が非存在のパスにアクセスしようとすると、Web サーバーは通常「404 Not Found」ステータスコードで応答します。これらの 404 応答はスキャン出力を氾濫させ、正当な発見を見つけることを困難にする可能性があります。3xx リダイレクトや 5xx サーバーエラーなどの他のステータスコードも、特定の偵察目標によっては「ノイズが多い」と見なされる場合があります。

これを説明するために、まずローカル Web サーバーに対して簡単なcurlコマンドを実行し、非存在のパスにどのように応答するかを確認します。

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

curl -I http://localhost:8000/nonexistent_page

以下のような出力が表示され、「404 Not Found」ステータスが示されているはずです。

HTTP/1.0 404 Not Found
Server: SimpleHTTP/0.6
Date: ...
Content-type: text/html
Content-Length: ...

この「404 Not Found」は一般的な「ノイズの多い」応答です。次のステップでは、Gobuster にこのような応答を無視するように指示する方法を学びます。

フィルタリングなしでスキャンを実行する

このステップでは、ステータスコードのフィルタリングなしで基本的な Gobuster スキャンを実行します。これは、出力にどれだけのノイズ(例:404 応答)が生成されるかを示すためのベースラインとして機能します。Gobuster のdirモードを使用して、ローカル Web サーバー上のディレクトリとファイルを列挙します。

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

gobuster dir -u http://localhost:8000 -w ~/project/wordlist.txt

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

  • gobuster dir: ディレクトリ/ファイル列挙モードを使用したいことを指定します。
  • -u http://localhost:8000: ターゲット URL をローカル Web サーバーに設定します。
  • -w ~/project/wordlist.txt: 総当たり攻撃に使用する単語リストファイルを指定します。

出力を観察してください。多くの場合、多くのエントリの横に(Status: 404)と表示され、Gobuster がサーバーに存在しないパスにアクセスしようとしたことを示しています。

...
/nonexistent_page       (Status: 404)
/admin                  (Status: 404)
/test                   (Status: 404)
/existing_dir           (Status: 200)
/another_file.txt       (Status: 200)
/redirect_me            (Status: 302)
/forbidden_area         (Status: 403)
/server_error           (Status: 500)
...

ご覧のとおり、出力は 404 応答で散らかっており、実際に存在するリソースを特定することが難しくなっています。

404 Not Found を除外するために -b フラグを使用する

このステップでは、Gobuster の -b (または --exclude-length) フラグを使用して、結果から特定の HTTP ステータスコードを除外する方法を学びます。これは、無関係な応答をフィルタリングし、重要なものに焦点を当てるために不可欠です。ここでは、最も一般的なノイズとなる応答である 404 Not Found ステータスコードを具体的に除外します。

-b フラグは、除外するステータスコードのコンマ区切りリストを受け取ります。

404 応答を除外して Gobuster スキャンを実行するために、ターミナルで以下のコマンドを実行してください。

gobuster dir -u http://localhost:8000 -w ~/project/wordlist.txt -b 404

新しいフラグを見てみましょう。

  • -b 404: HTTP ステータスコードが 404 である結果をすべて除外するように Gobuster に指示します。

出力を注意深く観察してください。(Status: 404) を持つすべてのエントリがなくなったことに気づくはずです。これにより、結果のリストがはるかにクリーンで焦点を絞ったものになります。

...
/existing_dir           (Status: 200)
/another_file.txt       (Status: 200)
/redirect_me            (Status: 302)
/forbidden_area         (Status: 403)
/server_error           (Status: 500)
...

これにより、スキャン結果の可読性と有用性が大幅に向上します。

スキャンを実行し、よりクリーンな出力を確認する

このステップでは、-b 404 フラグを使用して Gobuster スキャンを再実行し、出力に注意を払って 404 応答が実際に除外されていることを確認します。これにより、除外フラグの機能とそのスキャン結果への影響についての理解が深まります。

フィルタリングされた出力を確認するために、再度コマンドを実行してください。

gobuster dir -u http://localhost:8000 -w ~/project/wordlist.txt -b 404

スキャンが進むにつれて、404 以外のステータスコードを返したエントリのみが表示されます。これは、ノイズを削減する -b フラグの効果を示しています。

期待されるクリーンな出力の例:

...
/existing_dir           (Status: 200)
/another_file.txt       (Status: 200)
/redirect_me            (Status: 302)
/forbidden_area         (Status: 403)
/server_error           (Status: 500)
...

nonexistent_pageadmintest のエントリ(これらは 404 を返しました)が出力に表示されなくなったことに注意してください。これにより、有効なリソースを特定することがはるかに容易になります。

-s と -b を組み合わせて正確なフィルタリングを行う

この最終ステップでは、-s (ステータスコードを含める) と -b (ステータスコードを除外する) フラグを組み合わせて、さらに正確なフィルタリングを行う方法を学びます。-b はノイズを除去するのに役立ちますが、時には成功した応答 (200 OK) やリダイレクト (3xx) のような特定の種類の応答のみを表示したい場合があります。

-s フラグを使用すると、結果に 含める ステータスコードのコンマ区切りリストを指定できます。-s-b の両方が使用される場合、Gobuster は最初に -s フィルタを適用し、その後、残りの結果から -b フィルタを適用します。

例えば、404 Not Found を明示的に除外しながら、200 OK302 Found の応答のみを表示したいとします。

以下のコマンドを実行してください。

gobuster dir -u http://localhost:8000 -w ~/project/wordlist.txt -s 200,302 -b 404

内訳は以下の通りです。

  • -s 200,302: ステータスコードが 200 または 302 の結果のみを表示するように Gobuster に指示します。
  • -b 404: ステータスコードが 404 の結果を除外するように Gobuster に指示します。(この特定のケースでは、404 は既に -s によって除外されていますが、これは組み合わせを示すためのものです。)

出力を観察してください。Status: 200Status: 302 のエントリのみが表示されるはずです。

...
/existing_dir           (Status: 200)
/another_file.txt       (Status: 200)
/redirect_me            (Status: 302)
...

この強力な組み合わせにより、Gobuster スキャンを微調整して最も関連性の高い情報のみを取得でき、Web 偵察の効率を大幅に向上させることができます。

まとめ

この実験では、Gobuster スキャン結果から特定の HTTP ステータスコードを除外する方法を習得しました。まず、特に 404 Not Found のような一般的な「ノイズの多い」応答に対して、なぜフィルタリングが必要なのかを理解しました。次に、フィルタリングされていない出力を観察するためにベースラインスキャンを実行しました。この実験の核心は、不要なステータスコードを除外するために -b フラグを使用することであり、これにより、はるかにクリーンで焦点を絞った結果セットが得られました。最後に、-s (含める) フラグと -b (除外する) フラグを組み合わせて、Gobuster スキャンをさらに正確に制御する方法を探りました。このスキルは、効率的でターゲットを絞った Web 偵察において非常に価値があります。