Webアプリケーションのセキュリティ診断やペネトレーションテストにおいて、隠されたディレクトリやファイルを特定することは非常に重要です。この探索プロセスで強力な味方となるのが、DIRB (Directory Buster) というツールです。DIRBは辞書ベースの攻撃によってWebサーバー上のコンテンツを発見しますが、その効果は使用する辞書(ワードリスト)の質に大きく左右されます。
標準で提供される辞書も便利ですが、特定のパターンに基づいたカスタム辞書を作成したい場面も多々あります。例えば、特定の命名規則を持つファイルを探したい場合や、短い文字列の組み合わせを網羅的に試したい場合などです。このようなニーズに応えるのが、DIRBスイートに含まれる `dirb-gendict` というユーティリティツールです。
`dirb-gendict` は、指定したパターンに基づいてインクリメンタルに(順番に増やしながら)辞書ファイルを生成することができるコマンドラインツールです。これにより、特定の文字種(数字、英小文字、英大文字、16進数など)とパターンを組み合わせることで、状況に応じた最適なワードリストを作成できます。
dirb-gendict の基本的な使い方とオプション
`dirb-gendict` の基本的な構文は非常にシンプルです。
dirb-gendict [オプション] パターン
主なオプションは、生成する文字の種類を指定する `-type` です。`type` には以下のいずれかの文字を指定します。
オプション | 説明 | 使用文字 |
---|---|---|
-n |
数字 (Numeric) | 0-9 |
-c |
英小文字 (Character) | a-z |
-C |
英大文字 (Uppercase Character) | A-Z |
-h |
16進数 (Hexadecimal) | 0-f |
-a |
英数字(小文字のみ) (Alphanumeric) | 0-9a-z |
-s |
英数字(大文字小文字区別) (Case sensitive Alphanumeric) | 0-9a-zA-Z |
パターン (pattern): これはASCII文字列で、`X` という文字がワイルドカードとして機能します。生成される辞書では、この `X` の部分が指定された `-type` の文字でインクリメンタルに置き換えられます。パターン内の `X` の数が、生成される文字列の可変部分の長さになります。
例えば、パターンが `file_XX` で、`-type` に `-n` (数字) を指定した場合、`file_00`, `file_01`, …, `file_99` のようなリストが生成されます。
生成された辞書は標準出力に出力されます。ファイルに保存したい場合は、リダイレクト (`>`) を使用します。
dirb-gendict -n mypattern_X > numeric_list.txt
実践的な利用例 🚀
`dirb-gendict` の具体的な使い方をいくつか見ていきましょう。
例1: 3桁の数字を含むファイル名リストの生成
`backup_000.zip` から `backup_999.zip` までのファイル名を生成したい場合:
dirb-gendict -n backup_XXX.zip
このコマンドは、`backup_000.zip`, `backup_001.zip`, …, `backup_999.zip` というリストを標準出力に表示します。ファイルに保存するには次のようにします。
dirb-gendict -n backup_XXX.zip > backup_list.txt
例2: 小文字アルファベット2文字のディレクトリ名リストの生成
`/users/aa` から `/users/zz` までの可能性のあるパスを探したい場合、まず `aa` から `zz` までのリストを生成します。
dirb-gendict -c XX
生成されるリスト:
aa
ab
ac
...
zy
zz
このリストを `alpha_list.txt` として保存し、DIRBで利用できます。
dirb http://example.com/users/ alpha_list.txt
例3: 特定のプレフィックスを持つ16進数4桁のIDリスト生成
`id_0000` から `id_ffff` までのリストを生成したい場合:
dirb-gendict -h id_XXXX > hex_ids.txt
これにより、16進数の文字 (`0-9`, `a-f`) を使った4桁の組み合わせが `id_` の後に付与されたリストが生成されます。
例4: 大文字小文字数字を含む短いパスワード候補リストの生成
もし、非常に単純な3文字のパスワード(例えば、初期設定パスワードなど)が使われている可能性がある場合、`-s` オプションで試すことができます。
dirb-gendict -s XXX > short_passwords.txt
ただし、この組み合わせは非常に多くなるため (`62 * 62 * 62 = 238,328` 通り)、生成されるファイルサイズと、これを使ったスキャンにかかる時間に注意が必要です。`X` の数が増えると、組み合わせは指数関数的に増加します。🤯
dirb-gendict と DIRB の連携
`dirb-gendict` で生成した辞書ファイルは、DIRB本体で簡単に利用できます。DIRBコマンドの基本的な構文は以下の通りです。
dirb <ターゲットURL> [使用する辞書ファイル(複数可)] [オプション]
先ほど例1で作成した `backup_list.txt` を使って、`http://target-site.com/backups/` ディレクトリ以下をスキャンするには、次のように実行します。
dirb http://target-site.com/backups/ backup_list.txt
DIRBは `backup_list.txt` に含まれる各行(例: `backup_000.zip`, `backup_001.zip` など)をターゲットURLに追加してリクエストを送信し、サーバーからの応答(HTTPステータスコードなど)を分析して、存在するファイルやディレクトリを特定します。
同様に、例2で生成した `alpha_list.txt` を使って `/users/` ディレクトリ以下を探索する場合:
dirb http://target-site.com/users/ alpha_list.txt
これにより、`http://target-site.com/users/aa`, `http://target-site.com/users/ab`, …, `http://target-site.com/users/zz` へのアクセスが試みられます。
dirb-gendict の限界と代替ツール
`dirb-gendict` はシンプルで特定のパターン生成には便利ですが、いくつかの限界もあります。
- 複雑なパターンの非対応: 例えば、「英字で始まり、数字が続く」といった複雑なルールや、複数の文字種を組み合わせたパターン(例: `[a-z][0-9][A-Z]` のような正規表現に近い形式)の直接指定はできません。
- 文字種の組み合わせ制限: オプションで指定できるのは1種類の文字セットのみです。例えば「小文字と数字だけを使いたい (`[a-z0-9]`)」場合、`-a` (小文字+数字) や `-s` (大文字小文字+数字) はありますが、より細かな指定はできません。
- パフォーマンス: 非常に巨大なリストを生成する場合、他の専用ツールに比べてパフォーマンスが劣る可能性があります。
より高度な辞書生成機能が必要な場合は、`crunch` というツールがよく使われます。`crunch` は、最小/最大長、特定の文字セット、固定文字列の挿入、パターンの繰り返しなど、`dirb-gendict` よりもはるかに柔軟な辞書生成が可能です。
また、Webコンテンツ探索ツールとしては、DIRB以外にも `gobuster`, `ffuf`, `wfuzz`, `dirsearch` など、多機能で高速なツールが存在します。これらのツールは、スレッド制御、再帰検索、特定のステータスコードのフィルタリング、拡張子の付与など、より洗練された機能を備えていることが多いです。
まとめ
`dirb-gendict` は、DIRBスイートに含まれるシンプルながらも便利な辞書生成ツールです。特定の命名規則を持つファイルやディレクトリ、あるいは単純な文字の組み合わせからなるリストを素早く生成したい場合に役立ちます。基本的な使い方をマスターし、生成した辞書をDIRBと連携させることで、Webアプリケーションのコンテンツ探索をより効率的に、そして効果的に行うことができます。 💻✨
ただし、そのシンプルさゆえの限界も理解し、より複雑な要件や大規模な探索には `crunch` や他の高機能なWebコンテンツスキャナーの利用も検討しましょう。ツールの特性を理解し、状況に応じて使い分けることが、効果的なセキュリティ診断への近道です。
コメント