誤って公開されたディレクトリやサブドメインを検出するコマンドラインツール
- Gobuster -
Gobusterを利用すれば、意図せず公開されたディレクトリやファイルを検出し、潜在的なセキュリティリスクを洗い出せます。
この記事では、Gobusterの特徴からインストール方法、コマンドの使い方、定番のオプションまで詳しく解説しています。
Gobusterとは
Gobuster(ゴーバスター)は、Go言語で実装された高速かつ軽量なブルートフォースツールです。主にWebアプリケーション診断やペネトレーションテストの現場で用いられ、対象となるWebサーバーに対して、隠れたディレクトリやファイル、サブドメイン、仮想ホストなどを検出することができます。
例えば、隠れたディレクトリを検出する場合、事前に用意したWordlist(ワードリスト)を基に、対象のURLに対して多数のリクエストを投げて応答を確認します。これにより、通常のリンクからは見えない管理用ディレクトリや開発中のファイルなど、意図せず公開されているリソースを発見することができます。
Gobusterは、企業のセキュリティ監査や脅威モデリングにおいて、アタック・サーフェス(攻撃対象領域)の可視化に役立ちます。
主な特徴
- スキャンモード
- Wordlist(ワードリスト)
- コマンドラインインターフェース(CLI)
- Go言語(Golang)で開発
- オープンソース・無料
スキャンモード
Gobusterは、以下の7つのモードをサポートしており、ディレクトリ探索やドメイン列挙など、用途に応じてモードを選択することができます。
Gobuster(v3.6)でサポートしているモード
モード | モード名 | 説明 |
---|---|---|
dir | ディレクトリモード | Webサーバー上のディレクトリやファイルを検出 |
dns | DNSモード | サブドメインの列挙 |
s3 | S3バケットモード | Amazon S3バケットの列挙 |
gcs | GCSバケットモード | GCS(Google Cloud Storage)バケットを列挙 |
vhost | バーチャルホストモード | バーチャルホストの列挙 |
fuzz | ファジングモード | パラメータやパスに対してファジング調査 |
tftp | TFTPモード | TFTP(Trivial File Transfer Protocol)サーバー上のファイル列挙 |
中でも最も使われるモードがディレクトリモードです。指定したワードリスト(Wordlist)をもとに、Webサーバー上に存在するディレクトリやファイルを検出します。
例えば、セキュリティ診断において /admin
や /backup.zip
などのパスが外部に公開されていないかを調査する際に活用されます。
また、DNSモードでは、サブドメインの列挙が可能です。これは、企業のサブドメイン構成を把握し、そこに潜在的なセキュリティリスクが存在していないかを評価するのに有効です。
例えば、dev.example.com
や test.api.example.com
のような開発環境がインターネット上に露出していないかを確認できます。
Wordlist(ワードリスト)
Wordlist(ワードリスト)とは、Gobusterをはじめとするブルートフォース系ツールで使用される「単語リスト」のことを指します。
具体的には、対象のWebサイトやサーバーに対して、存在するディレクトリ名やファイル名、サブドメイン名などを推測するために用いられる文字列群を集めたテキストファイルです。
- admin
- login
- dashboard
- config
- backup
- test
- .git
- robots.txt
Gobusterが高い精度で対象の情報を見つけ出せるかどうかは、このワードリストの内容に大きく左右されます。Kali Linuxには、200ファイル以上のワードリストが標準搭載されており、効率的に検出することができます。

コマンドラインインターフェース(CLI)
Gobusterはシンプルなコマンドラインインターフェース(CLI)を採用しており、オプションの指定も直感的で分かりやすい設計です。
例えば、-u
オプションで対象のURLを、-w
オプションで使用するワードリストのパスを指定することで、基本的なスキャンを実行できます。
また、自動化スクリプトやCI/CDパイプラインにも組み込みやすく、継続的なセキュリティ改善に適しています。
Go言語(Golang)で開発
GobusterはGo言語で実装されており、非常に高い処理速度が特長です。Go言語の高い並列処理性能を活かし、数千〜数万件規模のワードリストを用いたスキャンでも、短時間で結果を得ることができます。
オープンソース・無料
Gobusterは、Apache 2.0ライセンスの下で公開されており、ソースコードの閲覧・改変・再配布が認められています。個人・企業を問わず無償で利用でき、コストを抑えながらも高度なセキュリティ強化を図ることができます。
Gobusterをインストール
Gobusterは、WebディレクトリやDNSサブドメインのブルートフォースに特化した高速スキャナであり、Go言語で実装されています。そのため、Gobusterを利用するには、まずGo言語の実行環境を構築した上で、GitHubの公式リポジトリからソースコードを取得し、ビルドする必要があります。詳しいインストール手順は、GitHub公式サイトをご覧ください。
また、UbuntuなどのDebian系ディストリビューションの場合、Gobusterが標準リポジトリに含まれているため、APTコマンドでインストールすることができます。
Ubuntuの場合
$ sudo apt update
$ apt show gobuster
Package: gobuster
Version: 3.6.0-1ubuntu0.24.04.2
Built-Using: golang-1.22 (= 1.22.2-2ubuntu0.3), golang-github-fatih-color (= 1.16.0-1), golang-github-google-uuid (= 1.6.0-1), golang-github-mattn-go-colorable (= 0.1.13-1), golang-github-mattn-go-isatty (= 0.0.20-1), golang-github-pin-tftp (= 3.1.0-1), golang-github-spf13-cobra (= 1.8.0-1), golang-github-spf13-pflag (= 1.0.6~git20210604-d5e0c0615ace-1), golang-go.crypto (= 1:0.19.0-1), golang-golang-x-net (= 1:0.21.0+dfsg-1), golang-golang-x-sys (= 0.17.0-1), golang-golang-x-term (= 0.17.0-1)
Priority: optional
Section: universe/utils
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian Security Tools <team+pkg-security@tracker.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 8,407 kB
Depends: libc6 (>= 2.34)
Suggests: crunch, cupp, hashcat
Homepage: https://github.com/OJ/gobuster
Download-Size: 2,818 kB
APT-Sources: http://archive.ubuntu.com/ubuntu noble-updates/universe amd64 Packages
Description: Directory/file & DNS busting tool written in Go
Gobuster is a tool used to brute-force: URIs (directories and files) in
web sites, DNS subdomains (with wildcard support), Virtual Host names
on target web servers, Open Amazon S3 buckets, Open Google Cloud buckets
and TFTP servers.
.
Gobuster is useful for pentesters, ethical hackers and forensics experts.
It also can be used for security tests.
N: There is 1 additional record. Please use the '-a' switch to see it
$ sudo apt install gobuster
gobusterコマンドの使い方
他人のWebサイトに対してGobusterを使用することは、不正アクセス禁止法に抵触する恐れがあります。絶対にお控えください。
Gobusterの実行方法
GobusterはGo言語で開発されているCLIツールのため、GUIは存在せず、すべての操作はコマンドラインで実行します。
基本構文
$ gobuster [モード] [オプション]
モードにより使用できるオプションが異なります。各モードには専用のヘルプコマンドが用意されており、それぞれのオプションを確認することができます。
gobusterのヘルプコマンド
$ gobuster help # 全体のヘルプ
$ gobuster help dir # dirモードのヘルプ
$ gobuster help dns # dnsモードのヘルプ
$ gobuster help s3 # s3モードのヘルプ
$ gobuster help gcs # gcsモードのヘルプ
$ gobuster help vhost # vhostモードのヘルプ
$ gobuster help fuzz # fuzzモードのヘルプ
$ gobuster help tftp # tftpモードのヘルプ
基本的な使い方
最も使われるディレクトリモードdir
は、Webサーバー上の隠れたパス(ディレクトリやファイル)を探索する目的で利用されます。
- Webアプリの隠れた管理画面(例:
/admin
、/login
、/dashboard
) - 古いバックアップファイル(例:
backup.zip
、index.bak
、db.sql
) - 開発者が消し忘れたディレクトリ(例:
/test/
、/dev/
、/old/
)
実行コマンド
$ gobuster dir -u http://example.com/ -w /usr/share/wordlists/dirb/common.txt
dir
:ディレクトリモード-u
:スキャン対象のURL-w
:ワードリストのパス
このコマンドでは、common.txt
に記載された単語を使って、http://example.com/
以下に存在するディレクトリやファイルを特定していきます。
実行結果の一例
/.svn (Status: 403)
/admin (Status: 301)
/index.html (Status: 200)
200(OK)
、301(Moved Permanently)
、302(Found)
、403(Forbidden)
といったステータスコードが返れば、そのパスが存在する可能性が高いと判断されます。
よく使うオプション
Gobusterは多くのオプションを提供しており、目的に応じた柔軟なスキャンが可能です。
なお、モード(dir
、dns
、vhost
など)によって有効なオプションが異なるため、ここでは使用頻度の高い共通オプションについて解説します。各モードの個別オプションについては、専用のヘルプ機能で確認することができます。
$ gobuster help [モード]
-t:スレッド数
-t
オプションで、並列接続数(スレッド数)を指定します。デフォルトは10ですが、より高速にスキャンしたい場合はスレッド数を増やすことで処理を並列化できます。
例えば、-t 50
を指定することで、50スレッドでの並列スキャンが可能となり、大規模なワードリストを用いた場合でもスキャン時間を大幅に短縮できます。
ただし、対象サーバーへの負荷が増すため、事前にシステム管理者との調整が必要です。
-o:ファイル保存
出力結果をファイルに保存したい場合は、-o
オプションを使います。
例えば、-o result.txt
とすれば、標準出力に表示される結果がresult.txt
に保存され、後からの分析や報告書作成に活用できます。
-v:詳細モード
スキャンの実行経過など、詳細な情報が出力されます。
検証環境を使って、Gobusterを実行
Gobusterの使い方を実践的に確認するため、検証対象となるWebサーバーには、OWASP BWAに含まれるDVWA(Damn Vulnerable Web Application)を使用します。
OWASP BWAは、脆弱性診断の学習や検証を目的として意図的に脆弱性が実装されたWebアプリケーション(通称:やられアプリ)であり、安全にセキュリティツールの動作を試すことができます。
- Gobuster実行マシン
- Kali Linux 2025.1
- Gobuster 3.6
- スキャン対象となるWebサーバー
- DVWA(Damn Vulnerable Web Application)
- http://192.168.10.105/dvwa/
Kali Linux、およびOWASP BWAは、VirtualBoxの仮想マシンとして、Windowsマシン上に構築し、ローカル環境内で検証を実施しています。
スキャン対象の確認
スキャン対象となるWebサーバーに対して、ブラウザでアクセスします。

ログイン認証画面が表示され、これ以上、先に進むことができません。このサイトに隠れたディレクトリやファイルをあぶり出します。
ワードリストを準備
Gobusterは、あらかじめ用意されたワードリストを使用してリクエストを送信し、ディレクトリやファイルの存在を確認します。今回は、Kali Linuxに標準で含まれている/usr/share/wordlists/dirb/common.txt
を使用します。このリストには、一般的によく見られるディレクトリやファイル名が含まれています。
gobusterコマンドを実行
Kali Linux
$ gobuster dir -u http://192.168.10.105/dvwa/ -w /usr/share/wordlists/dirb/common.txt
dir
:ディレクトリモード-u
:スキャン対象(DVWA)のURL-w
:使用するワードリスト
スキャン結果を確認
Kali Linux
/.git/HEAD (Status: 200) [Size: 23]
/.hta (Status: 403) [Size: 211]
/.htpasswd (Status: 403) [Size: 216]
/.htaccess (Status: 403) [Size: 216]
/.svn (Status: 403) [Size: 211]
/.svn/entries (Status: 403) [Size: 219]
/about (Status: 302) [Size: 0] [--> login.php]
/config (Status: 301) [Size: 242] [--> http://192.168.10.105/dvwa/config/]
/docs (Status: 301) [Size: 240] [--> http://192.168.10.105/dvwa/docs/]
/external (Status: 301) [Size: 244] [--> http://192.168.10.105/dvwa/external/]
/favicon.ico (Status: 200) [Size: 1406]
/index.php (Status: 302) [Size: 0] [--> login.php]
/index (Status: 302) [Size: 0] [--> login.php]
/instructions (Status: 302) [Size: 0] [--> login.php]
/logout (Status: 302) [Size: 0] [--> login.php]
/login (Status: 200) [Size: 1224]
/php.ini (Status: 200) [Size: 148]
/phpinfo (Status: 302) [Size: 0] [--> login.php]
/phpinfo.php (Status: 302) [Size: 0] [--> login.php]
/robots (Status: 200) [Size: 26]
/robots.txt (Status: 200) [Size: 26]
/security (Status: 302) [Size: 0] [--> login.php]
/setup (Status: 200) [Size: 3672]
Git、PHP設定ファイル、setupページなど、公開すべきでないファイルやディレクトリがアクセス可能になっており、構成情報やソースコードの漏えいが発生しうる状態であることが確認できます。
検出されたファイルを表示
検出された.git/HEAD
をブラウザで表示してみます。

脆弱性が見つかった場合の対応
Gobusterを使用してディレクトリやファイルの列挙を行った結果、想定外の管理画面や設定ファイル、バックアップファイルなどにアクセスできてしまった場合、それはシステム上の脆弱性、すなわち情報漏えいや不正アクセスのリスクに直結する問題と判断すべきです。
このような発見に対しては、技術的な対応だけでなく、組織としての適切なプロセス対応が求められます。
脆弱性の特定と初期調査
まずは、見つかったリソースが本当に脆弱性に該当するかどうかを判断します。例えば、以下のようなパスが見つかった場合、それぞれに応じた判断が必要です。
発見されたパス | 考えられるリスク | 対応の優先度 |
---|---|---|
/phpmyadmin/ | MySQLの管理画面にアクセスできる | 高 |
/config.bak | 設定ファイルのバックアップが取得可能 | 高 |
/backup.zip | システムのバックアップが取得可能 | 高 |
/old/ | 過去バージョンが公開されており、既知の脆弱性が含まれる | 中〜高 |
/test/ | 開発用ページが本番環境に残っている | 中 |
/debug/ | デバッグ情報が出力され、環境変数やパス情報が漏洩する | 高 |
/wp-admin/ | WordPressの管理画面にアクセスできる | 高 |
/sitemap.xml | サイト構造が把握されやすくなるが、通常、機密性の高い情報は含まれない | 低 |
関係部署にエスカレーション
発見された脆弱性について、次のような情報を整理した上で、社内のCSIRTやシステム管理者へのエスカレーションを速やかに行います。
- 発見日時
- 使用したコマンド例(再現可能性)
- 発見されたURL
- 想定されるリスク
- 優先度(高・中・低)
応急措置の実施
恒久対応が行われるまでの間、応急的な措置を講じます。
- Webサーバーやファイアウォールの設定でIP制限をかける
- Basic認証を追加する
- 該当ファイルを一時的に非公開にする
特に発見されたファイルに機密性が含まれる場合(例えば、設定ファイル内にAPIキーやDBの認証情報が含まれていた場合)、それらの情報が第三者に閲覧された可能性を想定し、キーやパスワードの再発行および対象システムの監査を実施する必要があります。
恒久的な対応と再発防止策
恒久対応では、以下を実施します。
- 公開対象ディレクトリおよびファイルの見直し
- アクセス制御(Basic認証やIP制限など)の適切な設定
- 不要なファイルやバックアップファイルの削除
- Webアプリケーションファイアウォール(WAF)の導入
- CI/CDパイプラインに自動セキュリティチェックを組み込む
- セキュリティポリシーの見直し