はじめに
Web 列挙において、Gobuster のようなツールは Web サーバー上の隠されたディレクトリやファイルを検出するために使用されます。しかし、生の出力は圧倒的になることがあり、すぐに無関係なエントリが多く含まれます。HTTP ステータスコードに基づいてこれらの結果をフィルタリングすることは、成功したページ(200 OK)、リダイレクト(301/302)、または禁止されたリソース(403)など、特定の種類の応答に焦点を絞るための強力なテクニックです。
この実験では、Gobuster のフィルタリング機能を使用してスキャン結果を効率的に分析する方法を説明します。一般的な HTTP ステータスコードを特定し、基本的な Gobuster スキャンを実行し、次に興味のあるステータスコードのみを表示するようにフィルタを適用する方法を学びます。このスキルは、Web セキュリティまたはペネトレーションテストに関わるすべての人にとって不可欠です。なぜなら、アクション可能な情報を迅速に特定するのに役立つからです。
一般的な HTTP ステータスコード(200、301、403)の理解
このステップでは、Web 列挙中に頻繁に遭遇する一般的な HTTP ステータスコードについて学びます。これらのコードを理解することは、Gobuster の出力を解釈し、結果を効果的にフィルタリングするための基本となります。
- 200 OK: このステータスコードは、リクエストが成功したことを示します。サーバーはリクエストを正常に処理し、要求されたリソース(例:Web ページ、画像)が返されています。Gobuster のスキャンでは、200 ステータスコードは通常、有効でアクセス可能なページまたはディレクトリが見つかったことを意味します。
- 301 Moved Permanently: このステータスコードは、要求されたリソースが新しい URL に恒久的に移動されたことを示します。ブラウザ(または Gobuster)は自動的に新しい場所にリダイレクトされるべきです。エラーではありませんが、301 リダイレクトを見つけることは、古いコンテンツや再編成されたコンテンツを示している可能性があります。
- 403 Forbidden: このステータスコードは、サーバーがリクエストを理解したが、それを承認することを拒否したことを意味します。これは通常、ユーザー(または Gobuster)が認証または特定の権限を必要とするリソースにアクセスしようとしたが、クライアントがそれを持っていない場合に発生します。403 を見つけることは、保護されているがまだ存在する機密性の高い領域を示唆する可能性があるため、興味深い場合があります。
これらのコードを体験するために、curlを使用してダミーWeb サーバー上のいくつかのパスにアクセスしてみてください。
まず、index.htmlにアクセスしてサーバーが実行されていることを確認しましょう。
curl -I http://localhost:8000/index.html
出力にHTTP/1.0 200 OKというステータスが表示されるはずです。
次に、redirect.htmlにアクセスして 301 リダイレクトを確認しましょう。
curl -I http://localhost:8000/redirect.html
HTTP/1.0 301 Moved Permanentlyというステータスが表示されるはずです。
最後に、admin.htmlにアクセスして 403 Forbidden レスポンスを確認しましょう。
curl -I http://localhost:8000/admin.html
このコマンドは、HTTP/1.0 403 Forbiddenというステータスを返すはずです。
これらのcurlコマンドは、サーバー上の異なるパスが特定の HTTP ステータスコードでどのように応答するかを、Gobuster が自動化する内容を手動で確認するのに役立ちます。
全てのステータスコードを確認するためのスキャン実行
このステップでは、ステータスコードのフィルタリングなしで、ダミーWeb サーバーに対して基本的な Gobuster スキャンを実行します。これにより、検出されたすべてのパスとその対応する HTTP ステータスコードを含むデフォルトの出力を確認できます。これは、フィルタを適用する前のベースラインとして機能します。
Gobuster のディレクトリ総当たり攻撃の基本的な構文は gobuster dir -u <URL> -w <wordlist> です。
-u: ターゲット URL を指定します。この場合、http://localhost:8000です。-w: ワードリストファイルのパスを指定します。セットアップで作成したwordlist.txtファイルを使用します。
ターミナルで以下のコマンドを実行してください。
gobuster dir -u http://localhost:8000 -w ~/project/wordlist.txt
コマンドを実行した後、出力を観察してください。検出されたパスとそのステータスコードを示す、以下のような行が表示されるはずです。
/index.html (Status: 200)
/secret.html (Status: 200)
/redirect.html (Status: 301)
/admin.html (Status: 403)
Gobuster は検出したすべてのステータスコードを報告していることに注意してください。実際のシナリオで大きなワードリストを使用する場合、この出力は非常に長くなり、無関係なエントリが多く含まれる可能性があります。次のステップでは、この出力を絞り込む方法を示します。
-s フラグを使用して 200 OK と 301 リダイレクトのみを表示する
このステップでは、Gobuster の -s (ステータス) フラグを使用してスキャン結果をフィルタリングし、特定の HTTP ステータスコードのみを表示する方法を学びます。これは、成功したページやリダイレクトなど、特定の種類の応答を探している場合に非常に役立ちます。
-s フラグを使用すると、出力に含めるステータスコードのコンマ区切りリストを指定できます。たとえば、200 (OK) と 301 (Moved Permanently) の応答のみを表示するには、-s 200,301 を使用します。
以下のコマンドを実行してください。
gobuster dir -u http://localhost:8000 -w ~/project/wordlist.txt -s 200,301
出力を観察してください。今回は、ステータスコード 200 と 301 のエントリのみが表示されるはずです。
/index.html (Status: 200)
/secret.html (Status: 200)
/redirect.html (Status: 301)
ステータス 403 を返した /admin.html のエントリが、出力に表示されなくなっていることに注意してください。これは、-s フラグが結果をどれだけ効果的に絞り込み、関連性の高い発見に集中しやすくできるかを示しています。
禁止ページ (403) を見つけるための新しいスキャンの実行
このステップでは、別のフィルタリングされたスキャンを実行し、今回は具体的に「禁止」ページ、つまり 403 HTTP ステータスコードを返すページを探します。403 応答を特定することは、ペネトレーションテストにおいて非常に重要です。なぜなら、それらはしばしば保護された管理インターフェース、機密ファイル、または設定ミスやバイパス手法に対して脆弱である可能性のあるディレクトリを示しているからです。
403 ステータスコードのみをフィルタリングするには、引数として 403 を指定して -s フラグを使用します。
以下のコマンドを実行してください。
gobuster dir -u http://localhost:8000 -w ~/project/wordlist.txt -s 403
出力を確認してください。今度は、403 ステータスを返した /admin.html のエントリのみが表示されるはずです。
/admin.html (Status: 403)
このターゲットを絞ったスキャンは、サーバーが明示的にアクセスを拒否しているリソースを迅速にハイライトします。これらのリソースは保護されていますが、その存在自体がさらなる調査のための貴重な情報となる可能性があります。これは、特定の種類のサーバー応答に焦点を当てる上での -s フラグの柔軟性を示しています。
フィルタリングされた出力の分析
この最終ステップでは、生成したフィルタリングされた出力の意味合いを分析します。Gobuster スキャンにおけるさまざまなステータスコードの意味を理解することは、効果的な Web 列挙の鍵となります。
200,301 ステータスコードでフィルタリングした場合、以下のものが特定されました。
/index.html(200 OK): これはメインページであり、成功したアクセス可能なリソースを示しています。/secret.html(200 OK): これも 200 を返しており、アクセス可能なページであることを示唆しています。実際のシナリオでは、その内容を調査して機密情報が含まれているか確認します。/redirect.html(301 Moved Permanently): これはリダイレクトを示しています。通常、リダイレクトをたどってどこへ誘導されるかを確認します。これは、更新されたコンテンツやアプリケーションの別の部分を指している可能性があります。
403 ステータスコードでフィルタリングした場合、以下のものが特定されました。
/admin.html(403 Forbidden): これは重要な発見です。403 応答は、サーバーがリソースの存在を認識しているがアクセスを拒否していることを意味します。これはしばしば、管理パネル、機密ディレクトリ、または意図的に保護されているファイルを示します。直接アクセスは拒否されますが、このパスは以下のようなさらなる調査の最有力候補となります。- バイパス試行: この特定の Web サーバーまたはアプリケーションに対して、既知のバイパス手法はありますか?
- デフォルト認証情報: デフォルトの認証情報でアクセスできる可能性はありますか?
- 脆弱性スキャン: 不正アクセスにつながる可能性のある脆弱性はありますか?
Gobuster の出力を選択的にフィルタリングすることで、最も有望な手がかりに迅速に調査を移行させることができ、時間を節約し、列挙プロセスをより効率的かつターゲットを絞ったものにすることができます。このスキルは、Web アプリケーション評価を行うすべてのセキュリティ専門家にとって不可欠です。
まとめ
この実験では、HTTP ステータスコードに基づいてスキャン結果をフィルタリングするために Gobuster の -s フラグを効果的に使用する方法を学びました。まず、200 (OK)、301 (Moved Permanently)、403 (Forbidden) のような一般的なステータスコードを理解しました。次に、すべての応答を確認するために基本的な Gobuster スキャンを実行し、その後、特定の種類の結果に焦点を当てるためにフィルタを適用しました。
200 および 301 ステータスコードでフィルタリングすることにより、アクセス可能なページとリダイレクトを特定しました。さらに重要なのは、403 ステータスコードでフィルタリングすることにより、さらなる調査に値する可能性のある機密性の高い、または保護されたリソースを特定したことです。このターゲットを絞ったアプローチは、Web 列挙プロセスを大幅に合理化し、ペネトレーションテストまたはセキュリティ評価中に実行可能な情報を迅速に特定することを可能にします。このテクニックを習得することは、あらゆるサイバーセキュリティ専門家にとって価値のあるスキルです。
