【実演解説つき】WhatWebの使用方法を徹底解説!

Webサイトで使用されている技術を特定するための解析ツール
- WhatWeb -

セキュリティ診断の現場で欠かせないのが「対象のWebサイトがどんな技術で構築されているのか」を素早く把握するスキルです。そんな時に役立つのがWhatWebです。

本記事では、WhatWebの特徴から使い方、さらには具体的な使用例までを詳しく解説します。

目次

WhatWebとは

WhatWebは、対象のWebサイトで使用されている技術やソフトウェアの情報を収集するためのWebスキャナです。主に脆弱性診断やペネトレーションテストの初期フェーズで利用されます。

具体的には、Webサーバの種類(Apache、Nginxなど)、利用されているCMS(WordPress、Drupalなど)、Webアプリケーションフレームワーク(Django、Ruby on Railsなど)、さらには使用中のJavaScriptライブラリやアナリティクスサービスまでを検出することができます。

類似ツールとの違い

類似ツールとしてよく比較対象に挙げられるのが〝Wappalyzer〟です。WappalyzerはGUIベースのブラウザ拡張機能であるのに対し、WhatWebはCLIベースのツールです。

WhatWebはスクリプトやCI/CDパイプラインと容易に連携できるため、スケーラブルな調査やセキュリティ診断の自動化に適しています。

注意事項

許可を得ていないシステムに対するスキャン行為は、不正アクセスやサイバー攻撃と見なされる可能性があります。許可のない環境では絶対に使用しないでください。

学習目的で練習したい場合は、実際の環境ではなく、やられアプリなどの意図的に脆弱性を含んだ学習用環境を利用してください。

本記事では、Windows上の仮想環境に構築したOWASP BWAを使用して、WhatWebの検証を行っています。

WhatWebの特徴

主な特徴
  • Web技術の特定
  • シンプルなコマンドライン・インタフェース(CLI)
  • プラグイン方式の検出ロジック
  • Rubyで開発
  • オープンソース・無料

Web技術の特定

WhatWebの最大の特徴は、対象のWebサイトが利用しているWeb技術を迅速に特定できる点です。

例えば、サーバの種類(例.Apache、Nginx、IIS)、使用されているCMS(例.WordPress、Drupal、Joomla)、スクリプト言語(例.PHP、ASP.NET、Ruby on Rails)、フロントエンドのフレームワークやJavaScriptライブラリに至るまで、広範囲にわたり検出可能です。

これにより、セキュリティ診断において攻撃対象領域(Attack Surface)の把握を容易にします。特に、古いバージョンのCMSや脆弱性のあるライブラリが使用されている場合、それが明確に特定されることで、迅速なリスク評価につながります。

シンプルなコマンドライン・インタフェース(CLI)

WhatWebはCLIベースで動作し、whatweb example.comのような単純なコマンドで実行できます。オプション設定により、スキャン強度や出力フォーマットなどを指定することも可能です。

セキュリティ診断においては、スクリプトや自動化ツールと組み合わせるケースが多く、CLIであることは非常に大きな利点です。

プラグイン方式の検出ロジック

WhatWebは、1,800種類以上のプラグインを搭載しており、各種Web技術を検出するための専用ロジックが組み込まれています。

プラグインは、HTTPヘッダ、HTMLソースコード、Cookie情報、エラーメッセージなどを組み合わせることで、精度の高い検出を実現しています。

ユーザーが自らカスタムプラグインを作成できるため、特定業界向けCMSや自社開発のWebフレームワークなど、特殊な環境にも柔軟に対応しています。これにより、一般的なスキャンツールでは対応しきれない要素についても、網羅的なセキュリティチェックが可能です。

Rubyで開発

WhatWebは、Rubyプログラミング言語で開発されています。Rubyはコードの可読性が高く、プラグイン開発やカスタマイズを行いやすいのが特徴です。

セキュリティエンジニアが調査目的に応じてプラグインの開発や検出ロジックの拡張を行う際、Rubyの分かりやすい文法は診断業務を円滑に進める上で大きな強みとなります。

オープンソース・無料

WhatWebは、GPLv2ライセンスのもとで公開されているオープンソースソフトウェアです。ライセンス費用が不要で、企業や個人が自由に利用できます。

特に脆弱性診断やペネトレーションテストの分野では、コストを抑えつつ高機能なツールを活用できる点は大きなメリットです。

オープンソースであることから、透明性の高いコードレビューが可能であり、ツールの信頼性を担保しています。加えて、導入ハードルが低いため、セキュリティ診断や教育環境で広く採用されています。

WhatWebの使用方法

この記事では、Windows上の仮想環境で稼働しているKali Linux 2025.3を用いて、WhatWebの使用方法を解説します。

WhatWebを起動

Kali Linuxには、WhatWebがプリインストールされているため、Terminal、またはアプリケーションメニューから起動します。

Terminalから起動する場合

$ whatweb [オプション] <ターゲット>

コマンドの詳細は、後述します。

アプリケーションメニューから起動する場合

アプリケーションメニュー01-Reconnaissance(偵察)>Web Vulnerability Scanning(Web脆弱性スキャン)>whatwebを選択すると、Terminalが起動し、ヘルプコマンドwhatweb --helpが自動実行されます。

Kali LinuxのアプリケーションメニューからWhatWebを起動

基本コマンド

# 例)ホスト名で指定
$ whatweb example.com

最も基本的な使用方法は、ターゲット(スキャン対象)を指定するだけです。ターゲットの指定方法は、ホスト名だけでなく、URLIPアドレス、さらにはIP範囲(CIDR、x.x.x-x、x.x.x.x-x.x.x.x)に対応しています。

ターゲットを複数指定することも可能です。

# 空白区切りで指定
$ whatweb example1.com example2.com

# ファイルで指定
$ whatweb -i targets.txt

バージョン確認

$ whatweb --version

定期的にapt update && apt upgradeなどを実行し、最新バージョンを利用することが推奨されます。

リリース履歴(バージョン:リリース日)
  • 0.6.2 : 2025年8月25日
  • 0.6.1 : 2025年7月30日
  • 0.5.4 : 2020年12月14日
  • 0.5.3 : 2020年10月1日
  • 0.5.2 : 2020年6月9日
  • 0.5.1 : 2020年2月25日
  • 0.5.0 : 2019年6月9日
  • 0.4.9 : 2017年11月23日
  • 0.4.8-dev : 2012年から2017年まで継続的リリース
  • 0.4.7 : 2011年4月5日
  • 0.4.6 : 2011年3月25日
  • 0.4.5 : 2010年8月17日
  • 0.4.4 : 2010年6月29日
  • 0.4.3 : 2010年5月24日
  • 0.4.2 : 2010年4月30日
  • 0.4.1 : 2010年4月28日
  • 0.4 : 2010年3月14日
  • 0.3 : 2009年11月2日

ヘルプ

$ whatweb --help

利用可能なオプションを確認する場合、--helpオプションを使用します。特に初めてWhatWebを使用する方は、このヘルプに目を通すことで、機能の全体像を掴むことができます。

代表的なオプション

whatwebコマンドには多くのオプションが用意されており、目的に応じて柔軟に調整できます。ここでは、脆弱性診断やペネトレーションテストにおいて頻繁に利用される代表的なオプションを解説します。

スキャン強度

$ whatweb -a 3 example.com

「どれくらい積極的に情報収集(スキャン)するか」というスキャン強度(アグレッション)を-aオプションで指定します。

スキャン強度の設定値

設定値設定内容説明
1Stealthy(軽量)ターゲットごとに1回のHTTPリクエストを行います。(デフォルト設定)
3Aggressive(積極的)レベル1でプラグインにマッチした場合、追加のリクエストを行います。ある程度の検出精度を保ちつつ、不必要な大量リクエストを避けます。
4Heavy(重度)ターゲットごとに大量のHTTPリクエストを行います。
・検出精度が高く、詳細な調査が可能。
・スキャン時間が長く、対象サーバに負荷がかかる。

プラグイン

プラグインを一覧表示

$ whatweb -l

WhatWebは1,800種類以上のプラグインを搭載しており、-lオプションで一覧表示できます。

プラグインの詳細情報

$ whatweb -I プラグイン名

-Iオプションにて、プラグインの詳細情報を確認することができます。

特定のプラグインを指定

$ whatweb -p プラグイン名 example.com

WhatWebは多数のプラグインを内蔵しており、-pオプションで特定のプラグインを選択して実行できます。例えば、-p PHPと指定すれば、PHP関連の検出ロジックのみが機能します。

詳細出力

$ whatweb -v example.com

-vオプションを付与することで、スキャン結果をより詳細に表示できます。(プラグインの説明も含む。)

ファイル出力

$ whatweb --log-brief=outout.txt example.com

スキャン結果をテキスト、XML、JSONなどの形式でファイル出力できるため、他システムとの連携にも対応可能です。

主な出力形式
  • --log-brief=FILE : 一行ずつ簡潔な結果を出力。
  • --log-verbose=FILE : 詳細な結果を出力。
  • --log-xml=FILE : XML形式で出力。
  • --log-json=FILE : JSON形式で出力。

【実演解説】WhatWebの使用例

実際にWhatWebを使って、特定のWebサイトに対してスキャンを行い、どのような情報が取得できるかを実演形式で解説します。

システム構成

WhatWeb実行マシン・Kali Linux 2025.3
・WhatWeb version 0.6.2
スキャン対象マシン・OWASP BWA(bWAPP)
・192.168.10.105(ホストオンリーアダプター利用)

VirtualBox上に構築したOWASP BWAに含まれる脆弱なWebアプリケーション「bWAPP」に対して、WhatWebを実行します。

OWASP BWAは、脆弱なWebアプリケーションを多数含んだセキュリティ学習用の仮想マシンです。

WhatWebを実行

以下のコマンドをKali Linuxのターミナルで実行します。

$ whatweb http://192.168.10.105/bWAPP/

実行結果を解説

実際の実行結果は、以下の通りです。

$ whatweb http://192.168.10.105/bWAPP/
http://192.168.10.105/bWAPP/ [302 Found] Apache[2.2.14][mod_mono/2.4.3,mod_perl/2.0.4,mod_python/3.3.1,mod_ssl/2.2.14,proxy_html/3.0.1], Country[RESERVED][ZZ], HTTPServer[Ubuntu Linux][Apache/2.2.14 (Ubuntu) mod_mono/2.4.3 PHP/5.3.2-1ubuntu4.30 with Suhosin-Patch proxy_html/3.0.1 mod_python/3.3.1 Python/2.6.5 mod_ssl/2.2.14 OpenSSL/0.9.8k Phusion_Passenger/4.0.38 mod_perl/2.0.4 Perl/v5.10.1], IP[192.168.10.105], OpenSSL[0.9.8k], PHP[5.3.2-1ubuntu4.30][Suhosin-Patch], Passenger[4.0.38], Perl[5.10.1], Python[2.6.5], RedirectLocation[portal.php], X-Powered-By[PHP/5.3.2-1ubuntu4.30]
http://192.168.10.105/bWAPP/login.php [200 OK] Apache[2.2.14][mod_mono/2.4.3,mod_perl/2.0.4,mod_python/3.3.1,mod_ssl/2.2.14,proxy_html/3.0.1], Cookies[PHPSESSID], Country[RESERVED][ZZ], HTML5, HTTPServer[Ubuntu Linux][Apache/2.2.14 (Ubuntu) mod_mono/2.4.3 PHP/5.3.2-1ubuntu4.30 with Suhosin-Patch proxy_html/3.0.1 mod_python/3.3.1 Python/2.6.5 mod_ssl/2.2.14 OpenSSL/0.9.8k Phusion_Passenger/4.0.38 mod_perl/2.0.4 Perl/v5.10.1], IP[192.168.10.105], OpenSSL[0.9.8k], PHP[5.3.2-1ubuntu4.30][Suhosin-Patch], Passenger[4.0.38], PasswordField[password], Perl[5.10.1], Python[2.6.5], Script, Title[bWAPP - Login], X-Powered-By[PHP/5.3.2-1ubuntu4.30]
http://192.168.10.105/bWAPP/portal.php [302 Found] Apache[2.2.14][mod_mono/2.4.3,mod_perl/2.0.4,mod_python/3.3.1,mod_ssl/2.2.14,proxy_html/3.0.1], Cookies[PHPSESSID], Country[RESERVED][ZZ], HTTPServer[Ubuntu Linux][Apache/2.2.14 (Ubuntu) mod_mono/2.4.3 PHP/5.3.2-1ubuntu4.30 with Suhosin-Patch proxy_html/3.0.1 mod_python/3.3.1 Python/2.6.5 mod_ssl/2.2.14 OpenSSL/0.9.8k Phusion_Passenger/4.0.38 mod_perl/2.0.4 Perl/v5.10.1], IP[192.168.10.105], OpenSSL[0.9.8k], PHP[5.3.2-1ubuntu4.30][Suhosin-Patch], Passenger[4.0.38], Perl[5.10.1], Python[2.6.5], RedirectLocation[login.php], X-Powered-By[PHP/5.3.2-1ubuntu4.30]

この結果から読み取れるポイントを解説します。

項目検出値備考
Web サーバApache 2.2.14古いバージョン(EOL)
PHP5.3.2-1ubuntu4.30(Suhosin-Patch)EOL、脆弱性多数
OpenSSL0.9.8k古い(既知の脆弱性あり)
言語/実行環境Perl 5.10.1、Python 2.6.5、Passenger 4.0.38複数のランタイムが混在
検出モジュールmod_mono, mod_perl, mod_python, mod_ssl, proxy_html複数のモジュールが有効
セッションPHPSESSIDセッション管理あり
/bWAPP/302 → portal.phpトップはリダイレクト
/bWAPP/portal.php302 → login.php未認証時はログインへリダイレクト
/bWAPP/login.php200ログイン画面

このように、WhatWebを実行することで、対象のWebサーバが利用しているWeb技術を迅速に特定でき、脆弱性対策やセキュリティ運用に活用できます。

デフォラボ

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

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