【実例解説つき】Gobusterの使い方を徹底解説(よく使うコマンドとオプションをマスター)

誤って公開されたディレクトリやサブドメインを検出するコマンドラインツール
- Gobuster -

Gobusterを利用すれば、意図せず公開されたディレクトリやファイルを検出し、潜在的なセキュリティリスクを洗い出せます。

この記事では、Gobusterの特徴からインストール方法、コマンドの使い方、定番のオプションまで詳しく解説しています。

実際の検証環境を用いた実演も交えながら解説していますので、「どうやって使うのか」「何が便利なのか」が理解できます。

目次

Gobusterとは

Gobuster(ゴーバスター)は、Go言語で実装された高速かつ軽量なブルートフォースツールです。主にWebアプリケーション診断やペネトレーションテストの現場で用いられ、対象となるWebサーバーに対して、隠れたディレクトリやファイル、サブドメイン、仮想ホストなどを検出することができます。

例えば、隠れたディレクトリを検出する場合、事前に用意したWordlist(ワードリスト)を基に、対象のURLに対して多数のリクエストを投げて応答を確認します。これにより、通常のリンクからは見えない管理用ディレクトリや開発中のファイルなど、意図せず公開されているリソースを発見することができます。

Gobusterは、企業のセキュリティ監査や脅威モデリングにおいて、アタック・サーフェス(攻撃対象領域)の可視化に役立ちます。

許可のないサーバーに対してGobusterを使用することは、たとえ学習目的でも不正アクセスとみなされ、法律に抵触する可能性があります。学習目的でGobusterを使用する場合、意図的に脆弱性が仕込まれた学習環境(やられアプリ)を使用しましょう。
※この記事では、ローカル環境に構築したやられアプリを使用して、Gobusterの検証を行っています。

主な特徴

  • スキャンモード
  • Wordlist(ワードリスト)
  • コマンドラインインターフェース(CLI)
  • Go言語(Golang)で開発
  • オープンソース・無料

スキャンモード

Gobusterは、以下の7つのモードをサポートしており、ディレクトリ探索やドメイン列挙など、用途に応じてモードを選択することができます。

Gobuster(v3.6)でサポートしているモード

モードモード名説明
dirディレクトリモードWebサーバー上のディレクトリやファイルを検出
dnsDNSモードサブドメインの列挙
s3S3バケットモードAmazon S3バケットの列挙
gcsGCSバケットモードGCS(Google Cloud Storage)バケットを列挙
vhostバーチャルホストモードバーチャルホストの列挙
fuzzファジングモードパラメータやパスに対してファジング調査
tftpTFTPモードTFTP(Trivial File Transfer Protocol)サーバー上のファイル列挙

中でも最も使われるモードがディレクトリモードです。指定したワードリスト(Wordlist)をもとに、Webサーバー上に存在するディレクトリやファイルを検出します。

例えば、セキュリティ診断において /admin/backup.zip などのパスが外部に公開されていないかを調査する際に活用されます。

また、DNSモードでは、サブドメインの列挙が可能です。これは、企業のサブドメイン構成を把握し、そこに潜在的なセキュリティリスクが存在していないかを評価するのに有効です。

例えば、dev.example.comtest.api.example.com のような開発環境がインターネット上に露出していないかを確認できます。

Wordlist(ワードリスト)

Wordlist(ワードリスト)とは、Gobusterをはじめとするブルートフォース系ツールで使用される「単語リスト」のことを指します。

具体的には、対象のWebサイトやサーバーに対して、存在するディレクトリ名やファイル名、サブドメイン名などを推測するために用いられる文字列群を集めたテキストファイルです。

Wordlistの一例(抜粋)
  • 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公式サイトをご覧ください。

インストール後、gobuster versionコマンドを実行して、バージョン情報が表示されればインストール成功です。

また、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

なお、Kali Linux 2025.1には、Gobuster 3.6がプリインストールされています。

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.zipindex.bakdb.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は多くのオプションを提供しており、目的に応じた柔軟なスキャンが可能です。

なお、モード(dirdnsvhostなど)によって有効なオプションが異なるため、ここでは使用頻度の高い共通オプションについて解説します。各モードの個別オプションについては、専用のヘルプ機能で確認することができます。

$ 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マシン上に構築し、ローカル環境内で検証を実施しています。

STEP

スキャン対象の確認

スキャン対象となるWebサーバーに対して、ブラウザでアクセスします。

スキャン対象となるWebサーバー(DVWA)のトップ画面

ログイン認証画面が表示され、これ以上、先に進むことができません。このサイトに隠れたディレクトリやファイルをあぶり出します。

STEP

ワードリストを準備

Gobusterは、あらかじめ用意されたワードリストを使用してリクエストを送信し、ディレクトリやファイルの存在を確認します。今回は、Kali Linuxに標準で含まれている/usr/share/wordlists/dirb/common.txtを使用します。このリストには、一般的によく見られるディレクトリやファイル名が含まれています。

STEP

gobusterコマンドを実行

Kali Linux

$ gobuster dir -u http://192.168.10.105/dvwa/ -w /usr/share/wordlists/dirb/common.txt
  • dir:ディレクトリモード
  • -u:スキャン対象(DVWA)のURL
  • -w:使用するワードリスト
STEP

スキャン結果を確認

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ページなど、公開すべきでないファイルやディレクトリがアクセス可能になっており、構成情報やソースコードの漏えいが発生しうる状態であることが確認できます。

STEP

検出されたファイルを表示

検出された.git/HEADをブラウザで表示してみます。

Gobusterで検出されたファイルをブラウザで表示

脆弱性が見つかった場合の対応

Gobusterを使用してディレクトリやファイルの列挙を行った結果、想定外の管理画面や設定ファイル、バックアップファイルなどにアクセスできてしまった場合、それはシステム上の脆弱性、すなわち情報漏えいや不正アクセスのリスクに直結する問題と判断すべきです。

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パイプラインに自動セキュリティチェックを組み込む
  • セキュリティポリシーの見直し
デフォラボ

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
目次