html2dic ツール徹底解説:Webページからカスタム辞書を作成する方法

セキュリティツール

Webアプリケーションのセキュリティテストやペネトレーションテストにおいて、対象サーバーに存在するディレクトリやファイルを特定することは非常に重要です。隠された管理画面や設定ファイル、バックアップファイルなどが見つかると、それが脆弱性発見の糸口となることがあります。

このような探索作業を効率化するツールとして DIRB (Directory Buster) が広く知られています。DIRBは、辞書ファイル(単語リスト)に記載された名前を試すことで、サーバー上のディレクトリやファイルを総当たり的に探索します(辞書攻撃)。

そして、今回ご紹介する html2dic は、そのDIRBに同梱されているユーティリティツールの一つです。その主な役割は、HTMLファイルの内容から単語を抽出し、DIRBなどで使用できる辞書ファイル(ワードリスト)を生成することです。これにより、ターゲットのWebサイト固有の単語を含む、より効果的なカスタム辞書を作成できます。🎯

例えば、Webサイト内で頻繁に使用されている特定の単語やプロジェクト名などを抽出して辞書に加えることで、デフォルトの辞書では見つけられなかったディレクトリやファイルを発見できる可能性が高まります。

html2dic は通常、DIRBツールスイートの一部として提供されています。そのため、個別にインストールする必要はほとんどありません。Kali Linuxなどのペネトレーションテスト用Linuxディストリビューションを使用している場合、DIRBは標準でインストールされていることが多く、それに伴い html2dic も利用可能な状態になっています。

もしDIRBがインストールされていない環境の場合は、お使いのLinuxディストリビューションのパッケージマネージャーを使用してDIRBをインストールしてください。例えば、Debian/Ubuntu系のシステムでは以下のコマンドでインストールできます。

sudo apt update
sudo apt install dirb

インストールが完了すれば、dirb コマンドと共に html2dic コマンドも利用できるようになります。

DIRBスイートの他のツール 🛠️

DIRBパッケージには、html2dic の他に以下のツールも含まれていることがあります。
  • dirb: メインのWebコンテンツスキャナー。
  • dirb-gendict: 指定したパターンに基づいて辞書を生成するツール。
これらのツールも、状況に応じて役立つことがあります。

html2dic の使い方は非常にシンプルです。基本的なコマンド構文は以下の通りです。

html2dic <入力HTMLファイル>

ここで、<入力HTMLファイル> には、単語を抽出したいHTMLファイルのパスを指定します。

実行すると、html2dic は指定されたHTMLファイルを解析し、含まれている単語(英数字など)を抽出して、標準出力に1行ずつ出力します

例として、example.html という名前のHTMLファイルがあるとします。このファイルから単語を抽出し、custom_wordlist.txt というファイルに保存するには、以下のコマンドを実行します。

# まずは example.html の中身を確認(例)
cat example.html
<!--
<!DOCTYPE html>
<html>
<head>
    <title>Sample Page for html2dic</title>
</head>
<body>
    <h1>Welcome to My Project Alpha</h1>
    <p>This page contains details about the 'alpha-admin' interface and 'beta_users' group.</p>
    <a href="/login.php">Login</a>
    <!-- Hidden comment: backup_config.zip -->
</body>
</html>
-->

# html2dic を実行し、結果をファイルにリダイレクト
html2dic example.html > custom_wordlist.txt

# 生成された辞書ファイルの中身を確認
cat custom_wordlist.txt
<!-- (出力例 - 実際の出力はツールの実装により多少異なる場合があります)
DOCTYPE
html
head
title
Sample
Page
for
html2dic
/title
/head
body
h1
Welcome
to
My
Project
Alpha
/h1
p
This
page
contains
details
about
the
alpha-admin
interface
and
beta_users
group
/p
a
href
login.php
Login
/a
Hidden
comment
backup_config.zip
/body
/html
-->

このように、HTMLタグや属性、コメント内の単語まで抽出されていることがわかります。抽出された単語リストは、そのままDIRBなどのツールで使用できる形式になっています。

注意点: 抽出される単語は、HTMLの構造やhtml2dicの実装によって異なります。必ずしもすべての単語が抽出されるわけではなく、また、不要な単語(HTMLタグ名など)も含まれる可能性があります。生成された辞書は、必要に応じて手動で編集・調整することをお勧めします。🧹

html2dic は直接URLを指定してWebページを取得する機能は持っていません。しかし、curlwget などのコマンドと組み合わせることで、Webページの内容から直接辞書を作成できます。

例えば、http://example.com のトップページから辞書を作成する場合:

# curl を使ってWebページの内容を取得し、パイプで html2dic に渡す
curl -s http://example.com | html2dic > example_com_wordlist.txt

# wget を使ってHTMLファイルをダウンロードしてから html2dic を実行する
wget http://example.com -O index.html
html2dic index.html > example_com_wordlist.txt
rm index.html # 不要になったHTMLファイルを削除

どちらの方法でも、指定したWebページの内容に基づいた単語リストが生成されます。

利用可能な情報によると、html2dic コマンド自体には、特別なコマンドラインオプションは用意されていないようです。主な機能は、指定されたHTMLファイルから単語を抽出し、標準出力へリストとして表示することに特化しています。

Manページ (man html2dic) によると、その説明は非常にシンプルです。

NAME
html2dic – Dump word dictionary from html input file

SYNOPSIS
html2dic <file>

DESCRIPTION
html2dic extract all words from an HTML page, generating a dictionary of all word found, one word per line. Output is printed on stdout.

このことからも、複雑な設定やオプションはなく、単一のファイルを入力として受け取り、単語リストを出力するという、非常にシンプルなツールであることがわかります。

html2dic は、以下のような場面で特に役立ちます。

  • ターゲット固有の辞書作成:
    一般的な辞書ファイルには含まれていない、特定のWebサイトやアプリケーションに固有の単語(プロジェクト名、特定の機能名、開発者名など)を抽出したい場合。これにより、隠されたディレクトリやファイルを発見する確率を高めることができます。🕵️‍♀️
  • JavaScript内の単語抽出:
    HTML内に埋め込まれたJavaScriptコードに含まれる変数名、関数名、APIエンドポイントのパスの一部なども抽出できる可能性があります。これらは、さらなる調査の手がかりとなることがあります。
  • コメントからの情報抽出:
    開発者が残したコメント内に、ファイル名やディレクトリ名、設定に関する情報が含まれていることがあります。html2dic はコメント内の単語も抽出対象とすることが多いため、思わぬ発見につながる可能性があります。🤫
  • 辞書ファイルの拡充:
    既存の辞書ファイルと、html2dic で生成した単語リストを組み合わせることで、より網羅的で効果的な辞書ファイルを作成できます。
    # 既存の辞書と生成した辞書を結合し、重複を削除して新しい辞書を作成
    cat /usr/share/wordlists/dirb/common.txt custom_wordlist.txt | sort -u > combined_wordlist.txt

html2dic は便利なツールですが、いくつかの注意点と限界も存在します。

  • ノイズの多さ:
    HTMLタグ名(html, body, div など)や一般的な英単語(the, is, and など)も大量に抽出されるため、生成された辞書にはノイズが多く含まれます。そのまま使用すると、DIRBなどのスキャンに時間がかかりすぎたり、不要なリクエストを大量に送信したりする可能性があります。使用前に手動でフィルタリングや調整を行うことが推奨されます。
  • 複雑なJavaScriptの解析限界:
    動的に生成されるコンテンツや、難読化されたJavaScriptコード内の単語を正確に抽出することは困難です。html2dic は基本的に静的なHTMLファイルの内容を解析するため、ブラウザでレンダリングされた後のDOM構造に含まれる単語などは抽出できません。
  • 文字エンコーディング:
    対象となるHTMLファイルの文字エンコーディングによっては、日本語などのマルチバイト文字が正しく抽出されない可能性があります。主に英数字の単語抽出に特化していると考えられます。
  • ツールの代替:
    Webサイトから単語を抽出するツールとしては、CeWL (Custom Word List generator) など、より高機能なツールも存在します。CeWLはWebサイトをクロールし、指定した深さまでリンクを辿りながら単語を収集できるため、より広範囲な単語リストを作成できます。状況に応じて適切なツールを選択することが重要です。

html2dic は、DIRBに同梱されるシンプルなユーティリティツールであり、HTMLファイルから単語を抽出してカスタム辞書(ワードリスト)を作成するのに役立ちます。特定のWebサイトに合わせた辞書を作成することで、DIRBなどのディレクトリ/ファイルスキャンツールの精度と効率を高めることができます。

使い方は非常に簡単で、コマンドラインから対象のHTMLファイルを指定するだけです。curlwget と組み合わせることで、オンライン上のWebページから直接辞書を作成することも可能です。

ただし、生成されるリストにはノイズが多く含まれる可能性があるため、使用前には内容を確認し、必要に応じて調整することが重要です。また、より高度な機能が必要な場合は、CeWLなどの代替ツールの利用も検討しましょう。

Webアプリケーションの診断において、ターゲットに特化した情報収集は成功の鍵となります。html2dic を適切に活用し、より効果的なセキュリティテストを実施しましょう! 💪

コメント

タイトルとURLをコピーしました