Gobuster で特定のファイル拡張子をスキャンする

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

はじめに

Gobuster は、Web サーバー上のディレクトリおよびファイルの総当たり攻撃(ブルートフォース)に使用される強力なツールです。一般的に隠しディレクトリの発見に使用されますが、特定の拡張子を持つファイルを見つけるためにも活用できます。この機能は、ペネトレーションテストやセキュリティ評価において非常に重要です。なぜなら、すぐに明らかにならない潜在的な侵入口、機密ファイル、または設定ミスを特定するのに役立つからです。例えば、.php ファイルを見つけることは Web アプリケーションを示唆する可能性があり、.bak.old ファイルは機密データのバックアップコピーを明らかにする可能性があります。

この実験(Lab)では、Web 列挙プロセス中に特定のファイル拡張子をターゲットにするために、Gobuster の -x フラグを効果的に使用する方法を学びます。一般的な関連ファイル拡張子を特定し、基本的な Gobuster コマンドを構築し、次に拡張子固有のスキャンを含めるように強化します。最後に、スキャンを実行して結果を分析し、出力の解釈方法を理解します。この実践的な経験により、より的を絞った効率的な Web 偵察のための貴重なスキルを習得できます。

ターゲットファイル拡張子の特定(例:.php、.html)

このステップでは、Web 列挙中にスキャンしたい一般的な関連ファイル拡張子を特定する方法を学びます。拡張子の選択は、ターゲットのテクノロジースタック(例:PHP アプリケーションの場合は .phpASP.NET の場合は .aspx、Java アプリケーションの場合は .jsp)や、機密情報を含む可能性のある一般的なファイルタイプ(例:.txt.bak.zip.sql)に依存することがよくあります。

この実験(Lab)では、一般的な Web 関連拡張子である .php.html.txt に焦点を当てます。これらは頻繁に見られ、Gobuster の機能を実証するための良い例となります。

スキャン時に考慮すべき一般的な拡張子をいくつかリストアップできます。このステップでコマンドを実行する必要はありませんが、探しているファイルの種類を理解することは、あらゆるターゲットスキャンの最初の重要なステップです。

以下の一般的な拡張子を検討してください。

  • .php: PHP スクリプト
  • .html, .htm: HTML ページ
  • .txt: テキストファイル。メモやログが含まれていることが多い
  • .js: JavaScript ファイル
  • .css: Cascading Style Sheets
  • .xml: XML ファイル
  • .json: JSON データファイル
  • .bak, .old, .orig: バックアップファイル
  • .zip, .tar.gz: アーカイブファイル
  • .sql: データベースダンプ

ターゲットとする拡張子を知ることは、検索を絞り込み、列挙をより効率的にするのに役立ちます。

基本的な gobuster dir コマンドの構築

このステップでは、基本的な gobuster dir コマンドを構築します。Gobuster の dir モードは、ディレクトリおよびファイルの総当たり攻撃(ブルートフォース)に使用されます。ファイル拡張子固有のオプションを追加する前に、基本的なコマンド構造を理解しておくことが良い習慣です。

gobuster dir コマンドの必須コンポーネントは次のとおりです。

  • gobuster dir: モード(ディレクトリ/ファイル総当たり攻撃)を指定します。
  • -u <URL>: ターゲット URL を指定します。この実験(Lab)では、/tmp/web_root からファイルを配信している http://localhost:8000 をターゲットとします。
  • -w <wordlist>: 総当たり攻撃に使用する単語リストを指定します。Web 列挙で一般的に使用される単語リストには common.txtdirectory-list-2.3-medium.txt があります。この実験では、シンプルさと速度のために、indexaboutnotesadmin を含む小さなカスタム単語リストを使用します。

~/project ディレクトリに簡単な単語リストを作成しましょう。

echo -e "index\nabout\nnotes\nadmin\nconfig" > ~/project/small_wordlist.txt

次に、拡張子なしの基本コマンドを構築します。このコマンドは、small_wordlist.txt のエントリと一致するディレクトリまたはファイルを見つけようとします。

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

以下のような出力が表示され、特定の拡張子なしで見つかったディレクトリ/ファイルが表示されます。

...
/index (Status: 200)
/about (Status: 200)
/notes (Status: 200)
/admin (Status: 200)
/config (Status: 200)
...

この出力は、Gobuster が単語リストと一致するエントリを見つけたことを示していますが、まだそれらの特定のファイルタイプは示していません。

拡張子を指定するための -x フラグの追加

このステップでは、Gobuster の -x フラグを使用してスキャンしたいファイル拡張子を指定する方法を学びます。これは、特定のタイプのファイルを見つけるための核心部分です。

-x フラグは、カンマ区切りの拡張子リストを受け取ります。たとえば、.php および .html ファイルをスキャンするには、-x php,html を使用します。Gobuster は、単語リストの各エントリにこれらの拡張子を付加し、index.phpabout.html などのファイルを見つけようとします。

前のコマンドを、拡張子 .php.html.txt を含めるように変更しましょう。

gobuster dir -u http://localhost:8000 -w ~/project/small_wordlist.txt -x php,html,txt,bak

このコマンドは、Gobuster に対して、単語リストの各エントリについて index.phpindex.htmlindex.txtindex.bakabout.phpabout.htmlabout.txtabout.bak などを探すように指示します。

コマンドを実行し、出力を観察してください。拡張子が明示的に含まれる結果が表示されるはずです。

...
/index.php (Status: 200)
/about.html (Status: 200)
/notes.txt (Status: 200)
/admin.php (Status: 200)
/config.bak (Status: 200)
...

出力にファイル名とその拡張子が明確に表示され、Gobuster がこれらのファイルを見つけることに成功したことが示されていることに注意してください。

ターゲットに対するスキャンの実行

このステップでは、シミュレートされたターゲットに対して、指定された拡張子を持つ完全な Gobuster コマンドを実行します。これは、学習した内容の実践的な応用です。

前のステップのコマンドを使用します。これには、ターゲット URL、カスタム単語リスト、および .php.html.txt.bak 拡張子を持つ -x フラグが含まれています。

gobuster dir -u http://localhost:8000 -w ~/project/small_wordlist.txt -x php,html,txt,bak

このコマンドを実行すると、Gobuster は単語リストの反復処理を開始し、指定された各拡張子を付加して、http://localhost:8000 サーバーにリクエストを送信します。

出力には、検出されたファイルとその HTTP ステータスコードが表示されます。200 OK ステータスコードは、ファイルが正常に見つかったことを示します。

===============================================================
Gobuster v3.6
by OJ (https://github.com/OJ/gobuster)
===============================================================
[+] Url:                     http://localhost:8000
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /home/labex/project/small_wordlist.txt
[+] Extensions:              php,html,txt,bak
[+] Timeout:                 10s
===============================================================
2024/01/01 12:00:00 Starting gobuster in directory enumeration mode
===============================================================
/index.php            (Status: 200)
/about.html           (Status: 200)
/notes.txt            (Status: 200)
/admin.php            (Status: 200)
/config.bak           (Status: 200)
===============================================================
2024/01/01 12:00:00 Finished
===============================================================

この出力は、Gobuster がターゲットサーバー上で index.phpabout.htmlnotes.txtadmin.php、および config.bak を正常に特定したことを確認します。

特定拡張子を持つファイルの検索結果の確認

この最終ステップでは、Gobuster スキャンから得られた結果を確認し、解釈します。出力の理解は、セキュリティ評価中に価値のある情報を見つけるために不可欠です。

前のステップからの出力は、見つかったファイルとその HTTP ステータスコードを明確にリストアップしています。

===============================================================
Gobuster v3.6
by OJ (https://github.com/OJ/gobuster)
===============================================================
[+] Url:                     http://localhost:8000
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /home/labex/project/small_wordlist.txt
[+] Extensions:              php,html,txt,bak
[+] Timeout:                 10s
===============================================================
2024/01/01 12:00:00 Starting gobuster in directory enumeration mode
===============================================================
/index.php            (Status: 200)
/about.html           (Status: 200)
/notes.txt            (Status: 200)
/admin.php            (Status: 200)
/config.bak           (Status: 200)
===============================================================
2024/01/01 12:00:00 Finished
===============================================================

各行の意味は次のとおりです。

  • /index.php (Status: 200): Web サーバーのルートで index.php という名前のファイルが見つかり、サーバーが 200 OK ステータスで応答したことを示します。これは、リクエストが成功したことを意味します。
  • /about.html (Status: 200): 同様に、about.html が見つかりました。
  • /notes.txt (Status: 200): notes.txt という名前のテキストファイルが見つかりました。これには機密情報が含まれている可能性があります。
  • /admin.php (Status: 200): admin.php ファイルが見つかりました。これは管理インターフェースである可能性があり、さらなる調査の対象となることがよくあります。
  • /config.bak (Status: 200): config.bak という名前のバックアップファイルが見つかりました。バックアップファイルには、機密性の高い設定情報やソースコードが含まれていることがよくあります。

これらの結果を確認することで、さらなる調査に値する可能性のあるファイルを見つけることができます。たとえば、Web ブラウザで /admin.php にアクセスしたり、/config.bak をダウンロードしてその内容を調べたりすることができます。

拡張子に対するこのようなターゲットを絞ったスキャンは、脆弱性や情報漏洩につながる可能性のある、隠された、または忘れられたファイルを発見するのに役立ちます。

まとめ

この実験では、ターゲットの Web サーバーで特定のファイル拡張子をスキャンするために Gobuster を使用する方法を学びました。関連するファイル拡張子を特定することの重要性を理解することから始め、基本的な gobuster dir コマンドを構築し、最後に -x フラグを使用して .php.html.txt、および .bak ファイルをターゲットに指定して強化しました。

シミュレートされた Web サーバーに対してスキャンを実行し、結果を解釈して、さまざまなファイルとその拡張子および HTTP ステータスコードを特定しました。このスキルは、ペネトレーションテスト中の Web 列挙に非常に役立ち、機密情報を含む可能性のある隠しファイルを発見したり、テクノロジースタックを明らかにしたり、潜在的なエントリポイントを公開したりすることができます。

-x フラグの使用を習得することで、よりターゲットを絞った効率的な偵察を実行でき、Web アプリケーションの脆弱性を発見する能力を大幅に向上させることができます。さまざまな単語リストや拡張子の組み合わせで練習を続け、Web 列挙スキルをさらに磨いてください。