【Linux】Gobusterについて

command

概要

ディレクトリやサブドメインのブルートフォース(総当たり攻撃)をwordlist(ワードリスト)を使用して行うためのツール。
Webアプリケーションのディレクトリ構造を特定したり、サブドメインの列挙したりする際に使用される。

主な用途

  • ディレクトリブルートフォース
    • 指定したURLに対して、隠されたディレクトリやファイルを発見する。
    • 例: https://example.com/adminなどの管理ページを特定する。
  • サブドメイン列挙
    • sub.example.comのような隠れたサブドメインを発見する。
  • VHost(バーチャルホスト)検出
    • 特定のIPアドレス上で、異なるドメインのバーチャルホストを見つける。

Wordlistとは

Gobusterなどのツールがディレクトリやサブドメインをブルートフォースをする際に使用するリスト(辞書)。

ディレクトリ用のwordlistの例

admin
login
dashboard
uploads
config
backup

このリストをhttps://example.com/に対して試すと、以下のようなリクエストが送られる。

https://example.com/admin
https://example.com/login
https://example.com/dashboard
...

レスポンスコードが200 OK403 Forbiddenで返ってきたら、ディレクトリが存在する可能性がある。


Gobusterの基本的な使い方

(1) ディレクトリ探索

gobuster dir -u https://example.com/ -w /usr/share/wordlists/dirb/common.txt
  • dirモードを指定(ディレクトリ探索)
  • -uでターゲットURLを指定
  • -wで使用するwordlistを指定

その他のオプション

-x オプション

dirモード(ディレクトリ探索)で特定の拡張子を試すためのオプション。
例えば、ターゲットがPHPベースのウェブアプリなら.phpのエンドポイントが存在する可能性があります。
また.jsonのAPIエンドポイントを探したい場合もあります。

使い方
gobuster dir -u https://example.com -w /usr/share/seclists/Discovery/Web-Content/common.txt -x php,html,json

この場合、Gobusterは以下のようなリクエストを送信

https://example.com/admin
https://example.com/admin.php
https://example.com/admin.html
https://example.com/admin.json
https://example.com/login
https://example.com/login.php
https://example.com/login.html
https://example.com/login.json
...

📌 -xを指定しない場合

ディレクトリ名だけを試す。

https://example.com/admin
https://example.com/login
https://example.com/dashboard
...

補足

(1) wordlistの選択

主に使われるwordlistには以下の2つがある。

  1. DirBusterのdirectory-list(例: directory-list-2.3-medium.txt)
  2. SecLists

DirBusterのdirectory-list

特徴
  • 整理されたリスト: ほとんどのリストはディレクトリ名だけなので、一般的なディレクトリ探索には適している。
  • 適度なサイズ: directory-list-2.3-medium.txtは200万行以下なので、負荷が比較的軽い
  • Fuzzing用途では弱い: /admin/などのディレクトリ名が中心で、パラメータや拡張子バリエーションには弱い
👀適した用途
  • ウェブアプリのディレクトリ探索
  • 一般的な隠しディレクトリを見つける
  • 速度と不可のバランスを取りたい場合
注意点
  • 最新のディレクトリ構造に対応していない場合がある(古いウェブアプリには有効)
  • APIエンドポイントなどはカバーされていない(/api/v1/loginなどは別のリストが必要)

SecLists

特徴
  • より幅広いリストを提供(ディレクトリ、パラメータ、拡張子の組み合わせ)
  • 最新のリストが追加される(GitHubから最新バージョンを取得可能)
  • 自動的に細かく分類されている
  • 負荷が高くなる可能性(big.txtcombined_directories.txtは巨大)
👀適した用途
  • 最新のウェブアプリのディレクトリ探索
  • APIエンドポイントの発見(common-api-endpoints-mazen160.txt)
  • WAF回避のために異なるリストを試したい場合
  • Fuzzing目的で多様なリストを使いたい場合
注意点
  • リストが大きい(負荷が高くなることがある)
  • 適切なリストを選ばないと無駄なリクエストが増える
SecListsのダウンロード手順
(1)./usr/share/seclists/にSecListsをダウンロード
sudo git clone https://github.com/danielmiessler/SecLists.git seclists

まとめ

比較項目directory-listSecLists
更新頻度古め(あまり更新されない)新しい(GitHubで随時更新)
種類一般的なディレクトリ探索向けAPI・Fuzzing・パラメータも含む
負荷(サイズ)中程度(200万行以下)大きいリストもある(数千万行も)
ウェブアプリ向け○普通のサイト探索向け◎最新のAPIなど
Fuzzing向け×ほぼ対応なし◎さまざまなリストがある

Linuxcommand

Posted by Iori