はじめに:Parseroとは?
ウェブサイトの情報収集やセキュリティ診断の初期段階で重要な役割を果たすファイルの一つに robots.txt
があります。このファイルは、ウェブサイトの管理者が検索エンジンのクローラー(ボット)に対して、サイト内のどのページをクロール(巡回・情報収集)してほしくないか、またはどのページを許可するかを指示するために使用されます。
通常、robots.txt
は検索エンジン最適化(SEO)の目的で使われますが、セキュリティの観点からは、しばしば意図せず内部のパスや管理画面の場所など、外部に知られたくない情報へのヒントが含まれていることがあります。攻撃者はこの情報を悪用して、隠されたディレクトリやファイルを探し出す可能性があります。
ここで登場するのが Parsero です。Parseroは、Kali Linux に含まれているツールの一つで、指定したウェブサイトの robots.txt
ファイルを自動的に取得し、その内容を解析するために設計されています。特に、「Disallow」(不許可)エントリや「Sitemap」(サイトマップ)エントリを抽出し、潜在的に興味深いパスや情報を発見する手助けをしてくれます。🕵️♂️
このブログ記事では、Parseroの基本的な使い方から、より詳細なオプション、そして実際の使用例までを、初心者にも分かりやすく解説していきます。セキュリティ診断やペネトレーションテストの偵察フェーズで非常に役立つツールですので、ぜひ使い方をマスターしましょう。
⚠️倫理的な注意: Parseroを含むセキュリティツールを使用する際は、必ず自身が管理するウェブサイト、または明確な許可を得ているウェブサイトに対してのみ使用してください。許可なく他者のウェブサイトをスキャンすることは、不正アクセスや法律違反とみなされる可能性があります。
Parseroのインストールと確認
Parseroは通常、Kali Linuxにデフォルトでインストールされています。まずは、ターミナルを開いて以下のコマンドを実行し、Parseroが利用可能か確認してみましょう。
parsero --version
バージョン情報が表示されれば、Parseroはすでにインストールされており、使用準備ができています。🎉
もし「command not found」のようなエラーが表示された場合は、以下のコマンドでインストールを試みてください(ただし、最近のKaliバージョンでは通常不要です)。
sudo apt update && sudo apt install parsero -y
インストール後、再度 parsero --version
で確認してください。
また、Parseroのヘルプメニューを表示させることで、利用可能なオプションの概要を確認できます。これは非常に便利なので、使い方に迷ったときはまず試してみましょう。
parsero -h
もしくは
parsero --help
これにより、後述する様々なオプションとその説明が表示されます。
基本的な使い方:robots.txtを解析する
Parseroの最も基本的な使い方は、対象となるウェブサイトのURLを指定して実行することです。-u
または --url
オプションに続けて、ドメイン名または完全なURLを指定します。
例えば、example.com
というウェブサイトの robots.txt
を解析したい場合は、以下のコマンドを実行します。
parsero -u example.com
または、プロトコル(http/https)を含めて指定することも可能です。
parsero -u https://www.example.com
コマンドを実行すると、Parseroはまず対象ドメインの robots.txt
ファイルを探しに行きます(通常は https://www.example.com/robots.txt
)。ファイルが見つかると、その内容をダウンロードし、解析を開始します。
出力結果には、主に以下の情報が含まれます:
- Finding robots.txt:
robots.txt
ファイルが見つかったURL。 - [+] Disallowed entries:
Disallow:
ディレクティブで指定されているパスの一覧。これらはクローラーにアクセスを禁止しているパスであり、管理画面やテスト用ディレクトリなど、隠されたリソースが含まれている可能性があります。 - [+] Sitemap entries:
Sitemap:
ディレクティブで指定されているサイトマップファイルのURL。サイトマップにはウェブサイトの全ページ(または主要なページ)のリストが含まれているため、サイト構造を理解する上で役立ちます。 - [!] Weird entries found: 標準的でない、または奇妙な記述が見つかった場合に表示されることがあります。
基本的な使い方だけでも、対象サイトがどのようなパスを隠そうとしているのか、またサイト全体の構造を把握するための手がかり(サイトマップ)があるかなどを素早く確認できます。📊
主要なオプション解説
Parseroには、解析の挙動を細かく制御するための様々なオプションが用意されています。ここでは、特によく使われる主要なオプションについて解説します。
オプション (短) | オプション (長) | 説明 | 例 |
---|---|---|---|
-u |
--url |
必須 解析対象のウェブサイトのURLまたはドメイン名を指定します。 | parsero -u example.com |
-l |
--list |
Parseroが認識している既知のrobots.txt の場所(一般的ではないパスを含む)のリストを表示します。ターゲットを指定せずにこれだけを実行できます。 |
parsero -l |
-o |
--output |
解析結果(主にDisallowedエントリ)を指定したファイルに保存します。 | parsero -u example.com -o disallowed_paths.txt |
-b |
--output-base-filename |
出力ファイル名のベースを指定します。例えば -b report とすると、report_disallowed.txt のようなファイル名で保存されます。-o とは少し異なる挙動をします。 |
parsero -u example.com -b output_report |
-s |
--sitemap |
robots.txt 内にSitemapエントリが見つかった場合、そのサイトマップファイルを取得し、そこに含まれるURLを解析して表示します。 |
parsero -u example.com -s |
-a |
--all |
DisallowedエントリとSitemapエントリの両方をチェックします(デフォルトの挙動に近いですが、明示的に両方を確認したい場合に)。-s と同時に指定すると、サイトマップの内容も取得・解析します。 |
parsero -u example.com -a |
-f |
--force |
robots.txt が見つからない、または無効に見える場合でも、強制的に処理を試みます。 |
parsero -u example.com -f |
-ua |
--user-agent |
リクエストを送信する際のUser-Agent文字列を指定します。デフォルトではPythonの標準的なUAが使われることが多いですが、特定のボット(例: Googlebot)になりすましてアクセスしたい場合などに使用します。 | parsero -u example.com -ua "Googlebot/2.1 (+http://www.google.com/bot.html)" |
--proxy |
HTTP/HTTPSリクエストを指定したプロキシ経由で行います。形式は http://proxy.example.com:8080 のように指定します。 |
parsero -u example.com --proxy http://127.0.0.1:8080 |
|
-m |
--mode |
検索モードを指定します (例: `disallowed`, `sitemap`, `all`)。デフォルトは `all` です。特定の種類の情報のみを抽出したい場合に便利です。 | parsero -u example.com -m disallowed |
これらのオプションを組み合わせることで、より目的に合わせた情報収集が可能になります。例えば、特定のUser-Agentでアクセスしつつ、結果をファイルに保存する、といった操作が簡単に行えます。🔧
実践的な使用例シナリオ
ここでは、いくつかの具体的なシナリオを想定し、Parseroをどのように活用できるかを見ていきましょう。
シナリオ1:基本的な偵察
あるウェブサイト (target-site.com
) の初期偵察として、robots.txt
にどのような情報が含まれているかを素早く確認したい。
parsero -u target-site.com
期待されるアクション:
Parseroが https://target-site.com/robots.txt
(またはHTTP) を取得し、DisallowedエントリとSitemapエントリを画面に出力します。これにより、管理者が隠そうとしている可能性のあるパス (/admin/
, /backup/
, /dev/
など) や、サイトマップの存在がわかります。📝
シナリオ2:Disallowedパスをファイルに保存
target-site.com
のDisallowedパスをリストアップし、後で他のツール(例:ディレクトリブルートフォースツール)の入力として使うためにファイルに保存したい。
parsero -u target-site.com -o disallowed.txt
期待されるアクション:
robots.txt
を解析し、見つかったDisallowedエントリ(例:/private
, /cgi-bin/
)を disallowed.txt
というファイルに一行ずつ書き出します。このファイルは、後続の調査で役立ちます。💾
シナリオ3:サイトマップの内容を調査
target-site.com
の robots.txt
にサイトマップが記載されているか確認し、もしあればそのサイトマップファイルの内容(URLリスト)を取得したい。
parsero -u target-site.com -s
期待されるアクション:
Parseroはまず robots.txt
をチェックし、Sitemap:
ディレクティブを見つけます。もし Sitemap: https://target-site.com/sitemap.xml
のような記述があれば、次に sitemap.xml
ファイルをダウンロードし、その中にリストされているURLを解析して表示します。これにより、ウェブサイトの公開されているページ構造を広範囲に把握できます。🗺️
シナリオ4:特定のクローラーとしてアクセス
ウェブサイトがUser-Agentによって異なる robots.txt
の内容を返す可能性があるか確認したい。Googlebotとしてアクセスしてみる。
parsero -u target-site.com -ua "Googlebot/2.1 (+http://www.google.com/bot.html)"
期待されるアクション:
Parseroは指定されたGooglebotのUser-Agent文字列を使って robots.txt
にアクセスします。サーバー側でUser-Agentに基づいた制御が行われている場合、デフォルトのUser-Agentでアクセスした時とは異なるDisallowedリストやルールが表示される可能性があります。🤖
シナリオ5:プロキシ経由でのアクセス
匿名性を高めたい、または特定のネットワーク経路からアクセスする必要があるため、プロキシ (http://127.0.0.1:8080
) を経由して target-site.com
の robots.txt
を調査したい。
parsero -u target-site.com --proxy http://127.0.0.1:8080
期待されるアクション: ParseroからのすべてのHTTP/HTTPSリクエストは、指定されたローカルプロキシ (この場合はlocalhostの8080ポートで待機しているプロキシ、例: Burp SuiteやOWASP ZAP) を経由して行われます。これにより、トラフィックの監視や改変、発信元IPアドレスのマスキングなどが可能になります。🔒
これらの例はParseroの多様な使い方の一部を示しています。実際の調査では、これらのオプションを組み合わせたり、得られた情報を他のツールと連携させたりすることで、より効果的な情報収集が可能になります。
結果の解釈と注意点
Parseroが出力する結果、特に Disallowed
エントリは、ウェブサイトの隠された側面を発見するための重要な手がかりとなります。しかし、その解釈には注意が必要です。
-
単なるSEO対策:
Disallow
されているパスが、必ずしも機密情報や脆弱な箇所であるとは限りません。単に検索結果に表示させたくない低品質なページや重複コンテンツ、パラメータ付きURLなどが指定されている場合も多くあります。🤷♀️ -
重要なヒント: 一方で、
/admin/
,/backup/
,/config/
,/logs/
,/old-version/
といったパスがDisallowされている場合、それは管理者用ページ、バックアップファイル、設定ファイル、ログファイル、古いバージョンのアプリケーションなど、攻撃者にとって価値のある情報が存在する可能性を示唆しています。これらのパスに対しては、さらなる調査(ディレクトリやファイルの存在確認など)を行う価値があります。🔍 -
存在しないパス:
robots.txt
に記載されていても、そのパスが実際にウェブサーバー上に存在するとは限りません。タイプミスや、過去には存在したが現在は削除されたパスなども考えられます。 -
ワイルドカードとパターン:
robots.txt
ではワイルドカード (*
) や行末マーカー ($
) を使用できます。例えばDisallow: /*.bak$
は、URLの末尾が.bak
で終わるすべてのパスへのアクセスを禁止します。Parseroはこれらのパターンも表示しますが、解釈にはrobots.txt
の仕様に関する知識が少し必要になる場合があります。 - サイトマップの価値: サイトマップは、ウェブサイトの公式なページリストを提供します。これにより、手動でのブラウジングでは見つけにくいページや、サイト全体の構造を効率的に把握できます。特に大規模なサイトでは非常に有用です。
💡ヒント: Parseroで見つけた興味深いDisallowedパスは、Dirb, Gobuster, ffuf などのディレクトリ・ファイル探索ツールへの入力として活用すると、隠されたリソースの発見に繋がることがあります。
🚫倫理とルールの遵守: 再度強調しますが、robots.txt
はあくまでクローラーに対する「お願い」であり、アクセス制御の仕組みではありません。技術的にはDisallowされたパスにもアクセス可能です。しかし、許可なくアクセスを試みることは、サイト所有者の意向に反する行為であり、場合によっては法的問題に発展する可能性があります。常に倫理的な判断と、テスト対象に関するルール(利用規約、テスト範囲の定義など)を遵守してください。
まとめ
Parseroは、ウェブサイトの robots.txt
ファイルを効率的に解析し、隠されたパスやサイト構造に関する情報を収集するためのシンプルかつ強力なツールです。Kali Linuxに標準で搭載されており、コマンドラインから簡単に利用できます。
基本的な使い方から、ファイル出力、サイトマップ解析、User-Agentの偽装、プロキシ経由でのアクセスなど、様々なオプションを活用することで、情報収集の精度と効率を高めることができます。👍
ただし、robots.txt
の情報はあくまでヒントであり、その解釈には注意が必要です。また、ツールを使用する際は、常に許可された範囲内で、倫理的な配慮を持って行うことが不可欠です。
セキュリティ診断やペネトレーションテストの初期偵察フェーズにおいて、Parseroはターゲットに関する貴重な洞察を与えてくれるでしょう。ぜひこのツールを使いこなし、効果的な情報収集活動に役立ててください。🚀
参考情報
-
Kali Tools – parsero: Kali Linux公式のツール紹介ページです。概要や基本的な使い方が記載されています。
https://www.kali.org/tools/parsero/ -
robots.txt の仕様について (Google検索セントラル):
robots.txt
の書き方やディレクティブの意味について、Googleが公式に解説しているページです。Parseroの出力をより深く理解するために役立ちます。
https://developers.google.com/search/docs/crawling-indexing/robots/robots_txt
コメント