【Linux】Gobusterについて
Contents
概要
ディレクトリやサブドメインのブルートフォース(総当たり攻撃)を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 OKや403 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つがある。
- DirBusterのdirectory-list(例: directory-list-2.3-medium.txt)
- SecLists
DirBusterのdirectory-list
特徴
- 整理されたリスト: ほとんどのリストはディレクトリ名だけなので、一般的なディレクトリ探索には適している。
- 適度なサイズ: directory-list-2.3-medium.txtは200万行以下なので、負荷が比較的軽い
- Fuzzing用途では弱い: /admin/などのディレクトリ名が中心で、パラメータや拡張子バリエーションには弱い
👀適した用途
- ウェブアプリのディレクトリ探索
- 一般的な隠しディレクトリを見つける
- 速度と不可のバランスを取りたい場合
注意点
- 最新のディレクトリ構造に対応していない場合がある(古いウェブアプリには有効)
- APIエンドポイントなどはカバーされていない(/api/v1/loginなどは別のリストが必要)
SecLists
特徴
- より幅広いリストを提供(ディレクトリ、パラメータ、拡張子の組み合わせ)
- 最新のリストが追加される(GitHubから最新バージョンを取得可能)
- 自動的に細かく分類されている
- 負荷が高くなる可能性(big.txtやcombined_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-list | SecLists |
---|---|---|
更新頻度 | 古め(あまり更新されない) | 新しい(GitHubで随時更新) |
種類 | 一般的なディレクトリ探索向け | API・Fuzzing・パラメータも含む |
負荷(サイズ) | 中程度(200万行以下) | 大きいリストもある(数千万行も) |
ウェブアプリ向け | ○普通のサイト探索向け | ◎最新のAPIなど |
Fuzzing向け | ×ほぼ対応なし | ◎さまざまなリストがある |
ディスカッション
コメント一覧
まだ、コメントがありません