👋

Day 35: GoBuster入門 - ディレクトリとファイル探索の基礎

2024/11/28に公開

はじめに

ペネトレーションテストでは、Webアプリケーションが提供する表面的な情報だけでなく、隠されたディレクトリやファイルを探索することがあります(アクセス制御の不備)。この作業を効率的に行うために活用されるツールがGoBusterです。

GoBusterは、ディレクトリバスティング(Directory Busting)やサブドメイン探索、さらにはAmazon S3バケット探索まで、幅広い用途に対応する軽量かつ高速なツールです。

この投稿では、以下の内容を通してGoBusterの基本的な使い方や活用例を学んでいきます。

  • GoBusterとは
  • GoBusterのインストール
  • GoBusterの基本操作
  • 実践的な活用例
  • 注意点

GoBusterとは?

GoBusterは、以下の特徴を持つディレクトリバスティングツールです:

  • 高速性:Golangで実装されており、非常に高速に動作します。
  • 柔軟性:ディレクトリ、サブドメイン、S3バケット、DNSレコードの探索が可能。
  • 簡単なインターフェース:シンプルなコマンドライン操作で扱いやすい。
  • カスタマイズ可能:自分のワードリストやオプションを組み合わせて柔軟に対応。

GoBusterは、隠れた資産や構造を発見し、セキュリティ上の脆弱性を特定するための重要なツールとして、多くのセキュリティテスターに使用されています。


GoBusterのインストール

GoBusterを使うには、以下の手順でセットアップを行います。

1. インストール

Linux環境では、以下のコマンドでインストールできます:

sudo apt-get install gobuster

または、GitHubリポジトリから直接インストールする方法もあります:

sudo apt install golang
go install github.com/OJ/gobuster/v3@latest

2. インストール確認

以下のコマンドを実行し、GoBusterが正常にインストールされたことを確認します:

gobuster --help

GoBusterの基本操作

GoBusterの使用方法を具体的な例を交えながら解説します。

1. ディレクトリバスティング

ディレクトリバスティングは、Webサーバー上の隠れたディレクトリやファイルを探索する機能です。

基本コマンド

gobuster dir -u http://example.com -w /path/to/wordlist.txt
  • -u:対象のURL。
  • -w:使用するワードリスト。

オプション例

  • -x:ファイル拡張子を指定(例:.php.html)。
  • -t:スレッド数を指定して高速化。
  • -o:結果をファイルに出力。

実践例

gobuster dir -u http://example.com -w /usr/share/wordlists/dirb/common.txt -x php,html -t 20

このコマンドは、20スレッド(最大20個のリクエスト)を使用して.php.htmlファイルを含むディレクトリを探索します。


2. サブドメイン探索

DNSサブドメインを探索し、隠されたサブドメインを発見する機能です。

基本コマンド

gobuster dns -d example.com -w /path/to/subdomains.txt
  • -d:対象のドメイン。
  • -w:使用するサブドメインリスト。

実践例

gobuster dns -d example.com -w /usr/share/wordlists/dns/subdomains-top1million-20000.txt

このコマンドは、example.comのサブドメインを探索します。


3. Amazon S3バケットの探索

GoBusterを使用して、Amazon S3バケットを探索できます。

基本コマンド

gobuster s3 -w /path/to/wordlist.txt
  • -w:使用するワードリスト。

実践例

gobuster s3 -w /usr/share/wordlists/s3-buckets.txt

注意点

GoBusterは以下のようなシナリオで役立ちます。

例1: 隠されたディレクトリの発見

  1. Webアプリケーションが404エラーページを返すディレクトリに隠れた情報があるかを確認。
  2. GoBusterを使用して、ディレクトリを探索。
  3. admin/ディレクトリを発見し、ログインページを特定。

例2: サブドメインの探索

  1. 企業が使用している隠れたサブドメインを探索。
  2. staging.example.comdev.example.comを発見。
  3. これにより、テスト環境や開発環境の脆弱性を発見。

注意点

1. 許可された環境でのみ使用

GoBusterを使用する際は、必ずターゲットの所有者や管理者から許可を得ましょう。無許可での使用は法律違反となる可能性があります。

2. ワードリストの選択

適切なワードリストを使用することで、探索の精度を向上させることができます。特にSecListsなどの有名なリストを活用しましょう。

3. 負荷に注意

高いスレッド数での実行はターゲットサーバーに負荷をかけるため、適切なスレッド数を設定してください。


小テスト

Q1: GoBusterの用途として適切なものを選びなさい。

a) パスワードクラック
b) ディレクトリやファイルの探索
c) ネットワークトラフィックの解析
d) サーバーの脆弱性スキャン


Q2: 次のコマンドは何をしますか?

gobuster dir -u http://example.com -w /usr/share/wordlists/dirb/common.txt -x php,html -t 20

a) サブドメインを探索する
b) ディレクトリを探索し、特定の拡張子のファイルを見つける
c) Amazon S3バケットを探索する
d) サーバーのログを解析する


Q3: サブドメイン探索で使用するオプションはどれですか?

a) -s
b) -dns
c) -d
d) -p


Q4: GoBusterを使用する際に守るべき注意点として正しいものはどれですか?

a) 許可を得た環境でのみ使用する
b) 必ずHTTPSを利用する
c) 負荷がかからないよう低いスレッド数を使用する
d) パスワードリストをカスタマイズする


Q5: GoBusterで適切なワードリストを選ぶ理由は何ですか?

a) テスト対象のシステムを効率よく探索するため
b) GoBusterの速度を向上させるため
c) 特定のプロトコルでしか動作しないため
d) GoBusterのバージョンによって異なるため


解答

A1: b) ディレクトリやファイルの探索

GoBusterは隠れたディレクトリやファイル、サブドメインなどを探索するツールです。


A2: b) ディレクトリを探索し、特定の拡張子のファイルを見つける

このコマンドは、20スレッド(最大20個のリクエスト)を使用して、.php.html拡張子のファイルを含むディレクトリを探索します。


A3: c) -d

-dオプションは、サブドメイン探索で対象のドメインを指定するために使用します。


A4: a) 許可を得た環境でのみ使用する

b)は必須ではなく、d)はセキュリティテストとは直接関連しません。


A5: a) テスト対象のシステムを効率よく探索するため

適切なワードリストを使用することで、テスト対象の隠れたリソースを効果的に見つけることができます。


まとめ

GoBusterは、隠れたディレクトリやファイル、サブドメインを効率よく発見できる強力なツールです。その高速性と柔軟性は、セキュリティテストを行う際に非常に役立ちます。ただし、使用する際は必ず許可を得た環境でのみ行い、倫理的な使用を行う必要があります。GoBusterの活用を通じて、セキュリティの知識とスキルをさらに高めていきます。

Discussion