OWASP DirBusterを使ってWebアプリケーションのセキュリティを評価する
DirBusterとは?
DirBusterは、Open Web Application Security Project (OWASP) によって開発された、Javaベースのオープンソースツールです。主な目的は、Webサーバーやアプリケーションサーバー上に存在する、通常の方法では見つけにくい「隠された」ディレクトリやファイルをブルートフォース(総当たり)攻撃によって発見することです。
Webサイトには、開発者が意図せずに残してしまった設定ファイル、バックアップファイル、テスト用のページ、管理画面など、本来公開されるべきではないリソースが存在することがあります。これらのリソースは、多くの場合、Webサイトのどこからもリンクされていませんが、URLを直接指定すればアクセスできてしまう可能性があります。DirBusterは、このような隠れたリソースを見つけ出し、潜在的なセキュリティリスクを特定するのに役立ちます。
ペネトレーションテスターやセキュリティ専門家にとって、DirBusterはWebアプリケーションのセキュリティ評価において重要なツールの一つです。
DirBusterの入手と起動方法
DirBusterはJavaアプリケーションであるため、実行にはJava Runtime Environment (JRE) が必要です。多くのペネトレーションテスト用Linuxディストリビューション(例えばKali Linux)には、DirBusterが標準で含まれていることが多いです。
Kali Linuxでの起動:
Kali Linuxを使用している場合、通常はターミナルから以下のコマンドでGUI版を起動できます:
もしインストールされていない場合は、以下のコマンドでインストールできます:
手動での起動:
DirBusterの `.jar` ファイルを入手している場合は、以下のコマンドで起動できます(バージョン番号は適宜変更してください):
または、 `-Xmx` オプションでメモリ割り当てを増やすことも推奨される場合があります:
DirBuster (GUI) の基本的な使い方
DirBusterのGUIは直感的で、主要な設定項目は以下の通りです:
- Target URL: スキャン対象のWebサイトのベースURLを入力します (例:
http://example.com/
やhttps://test.target.site/app/
)。プロトコル (http/https) を含める必要があります。 - Work Method: スキャンに使用するHTTPメソッドを選択します。通常は「Auto Switch (HEAD and GET)」のままで問題ありません。これは、まずHEADリクエストで存在を確認し、存在する場合 (200 OKなど) にGETリクエストを送信して詳細を取得する効率的な方法です。
- Number of Threads: 同時に送信するリクエスト数を設定します。数値を上げるとスキャン速度は向上しますが、ターゲットサーバーへの負荷が増加し、検知されるリスクも高まります。最初はデフォルトの10程度から始め、様子を見ながら調整するのが良いでしょう。
- Select scanning type:
- List based brute force: これがDirBusterの主要な機能です。指定した辞書ファイル(ワードリスト)に含まれる単語をURLパスとして試行します。
- Pure Brute Force: 辞書を使わず、指定した文字セットと長さでパス名を生成して試行します。非常に時間がかかるため、通常はList basedを使用します。
- File with list of dirs/files: 「List based brute force」を選択した場合、ここで使用する辞書ファイルを選択します。「Browse」ボタンをクリックしてファイルを選択します。Kali Linuxの場合、
/usr/share/dirbuster/wordlists/
ディレクトリ以下に複数の辞書ファイルが用意されています。directory-list-2.3-medium.txt
やdirectory-list-2.3-small.txt
がよく使われます。 - File extension: 探したいファイルの拡張子を指定します (例:
php, asp, jsp, txt, bak
)。カンマ区切りで複数指定できます。 - Scan Options:
- Be Recursive: ディレクトリが見つかった場合に、そのディレクトリ内をさらにスキャンするかどうかを指定します。通常はチェックを入れておくと、より深く探索できます。
- Scan for Dirs / Scan for Files: ディレクトリのみ、ファイルのみ、または両方をスキャンするか選択します。
設定が完了したら、「Start」ボタンをクリックしてスキャンを開始します。
結果の確認
スキャンが進行すると、「Results – List View」タブや「Results – Tree View」タブに結果が表示されます。
- List View: 発見されたパスと対応するHTTPステータスコードをリスト形式で表示します。
- Tree View: 発見されたパスをディレクトリ構造のようなツリー形式で表示します。
注目すべきは、ステータスコードが 200 OK
(アクセス成功) や 403 Forbidden
(アクセス禁止だが存在は確認) のパスです。404 Not Found
以外の応答は、何らかのリソースが存在する可能性を示唆しています。
見つかったパスを右クリックして「Open in Browser」を選択すると、直接ブラウザでアクセスを試みることができます。
DirBuster (コマンドライン) の使い方
DirBusterはGUIなしのヘッドレスモードでも動作します。これは、スクリプトでの自動化やリモートサーバーでの実行に便利です。
基本的なコマンド形式は以下のようになります(jarファイル名はバージョンに合わせてください):
主なコマンドラインオプション
オプション | 説明 | 例 |
---|---|---|
-H |
ヘッドレスモード (GUIなし) で起動します。 | -H |
-u <URL> |
ターゲットのURLを指定します。 | -u http://example.com/ |
-l <ワードリスト> |
使用するワードリストのパスを指定します。 | -l /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt |
-e <拡張子リスト> |
検索するファイルの拡張子をカンマ区切りで指定します。 | -e php,txt,bak |
-t <スレッド数> |
使用するスレッド数を指定します。デフォルトは10です。 | -t 50 |
-s <開始パス> |
スキャンを開始するパスを指定します。デフォルトは / です。 |
-s /admin/ |
-r <レポートファイル> |
スキャン結果を指定したファイルに保存します。ヘッドレスモードでは自動的に保存されます。 | -r scan_report.txt |
-R |
再帰的なスキャンを行いません(デフォルトは再帰的)。 | -R |
-g |
GETリクエストのみを使用します。 | -g |
-v |
詳細な情報を出力します (Verbose)。 | -v |
-P |
HTMLの解析を行いません。 | -P |
コマンドライン実行例
ワードリストの重要性
DirBusterのようなツールは、使用するワードリスト(辞書ファイル)の質に大きく依存します。優れたワードリストを使用することで、隠されたディレクトリやファイルを発見できる可能性が高まります。
DirBusterには、開発者が実際に使用しているディレクトリ名やファイル名を収集して作成された、質の高いリストが同梱されています。Kali Linuxでは、通常 /usr/share/dirbuster/wordlists/
にあります。サイズや内容によって複数のリストが提供されており、ターゲットの特性に応じて選択します。
directory-list-2.3-small.txt
: 小規模で基本的なリスト。短時間でスキャンしたい場合に。directory-list-2.3-medium.txt
: 中規模で一般的なリスト。バランスが取れており、よく使われます。directory-list-2.3-big.txt
: 大規模なリスト。時間はかかりますが、より網羅的なスキャンが可能です。(環境によっては含まれていない場合もあります)
また、SecListsのような、より大規模で多様なワードリスト集も存在します。ターゲットとなるWebアプリケーションの技術スタック(使用されている言語、フレームワークなど)に特化したカスタムワードリストを作成することも有効です。
高度な機能とヒント
- プロキシ設定: 「Options」メニューの「Advanced Options」にある「HTTP Options」タブで、HTTPプロキシを設定できます。これにより、Torなどを経由して匿名性を高めたり、企業のプロキシ環境下でスキャンしたりすることが可能になります。
- 認証: Basic認証が必要なサイトに対応するオプションもあります。
- 応答コードの無視: 特定のHTTPステータスコードを結果から除外する設定も可能です。
- スレッド数の調整: ターゲットサーバーへの影響を考慮し、適切なスレッド数を選びましょう。高すぎるスレッド数はサーバーに負荷をかけ、サービス停止やアクセス制限を引き起こす可能性があります。
- URL Fuzz オプション: 「Starting options」で「URL Fuzz」を選択すると、辞書の単語をURLの特定の部分(例:
http://example.com/page?id={dir}
の{dir}
部分)に挿入して試行できます。
DirBusterの代替ツール
DirBusterは有用なツールですが、開発言語がJavaであることや、更新頻度を考慮すると、他のツールも検討する価値があります。特にGo言語で書かれたツールは高速な傾向があります。
- DIRB: DirBusterと同様の目的を持つコマンドラインツール。シンプルで使いやすいですが、DirBusterほど多機能ではありません。
- Gobuster: Go言語で書かれた高速なコマンドラインツール。ディレクトリ/ファイル探索、DNSサブドメイン探索、仮想ホスト探索など、複数のモードを持っています。再帰的な探索はDirBusterほど得意ではない場合がありますが、速度が魅力です。
- ffuf (Fuzz Faster U Fool): Go言語製の非常に高速なWebファジングツール。柔軟性が高く、ディレクトリ/ファイル探索以外にも様々なファジングに使用できます。
- dirsearch: Python製のコマンドラインツール。多くのオプションがあり、活発に開発されています。
- wfuzz: Python製の多機能なWebファジングツール。ペイロード処理やエンコーディングなど、高度なカスタマイズが可能です。
- Dirstalk: DirBuster/DIRBの現代的な代替を目指すGo言語製ツール。
これらのツールはそれぞれ特徴が異なるため、目的や好みに応じて使い分けるのが良いでしょう。
倫理的な考慮事項と法的注意
まとめ
DirBusterは、Webサーバー上の隠れたディレクトリやファイルを探索するための強力なツールです。適切なワードリストと設定を用いることで、通常のブラウジングでは見つけられない潜在的な脆弱性や情報漏洩につながるリソースを発見できる可能性があります。
GUIとコマンドラインの両方をサポートしており、状況に応じて使い分けることができます。ただし、その強力さゆえに、使用には細心の注意が必要です。必ず許可された環境でのみ使用し、倫理的なガイドラインと法律を遵守してください。
また、Gobusterやffufといったより高速な代替ツールも存在するため、それらも試してみる価値があるでしょう。