ハッカーはwhatwebでwebサイトのアプリケーションの情報を調査する(Kali Linux)

ホワイトハッカーの知識Kali Linuxツール,whatweb,座学

ターゲットとなるwebサイトのアプリケーションの情報を調査するツールを理解するためにまとめてみました。
このwhatwebの動作確認は自分のドメインでテストを行っています。

【追加】 Youtubeに最新動画を掲載しました。

whatwebとは

WhatWebはターゲットとなるwebサイトのアプリケーションの情報を調査するツールです。
コンテンツ管理システム(CMS)、ブログプラットフォーム、統計/分析パッケージ、JavaScriptライブラリ、ウェブサーバ、組み込みデバイスなどのウェブ技術を認識します。
そして、バージョン番号、電子メールアドレス、アカウントID、ウェブフレームワークモジュール、SQLエラーなども識別します。

WhatWebは、ステルス的に速く、または徹底的に遅くすることができます。
また、スピードと信頼性の間のトレードオフをコントロールするために、アグレッションレベルをサポートしています。
一度のウェブページ訪問でウェブサイトを特定するのに十分な情報が含まれていることもありますが、そうでない場合は、WhatWebはさらにウェブサイトを調査することができます。
ステルスと呼ばれるデフォルトの攻撃レベルは、最も高速で、ウェブサイトへのHTTPリクエストを1回しか必要としません。これは、公共のウェブサイトをスキャンするのに適しています。よりアグレッシブなモードは、ペネトレーションテストで使用するために開発されました。

機能

  • 1700以上のプラグイン
  • スピード/ステルス性と信頼性のトレードオフをコントロール
  • プラグインはサンプルURLを含む
  • パフォーマンスの調整 同時にスキャンするウェブサイトの数をコントロール
  • 複数のログフォーマット。Brief(greppable)、Verbose(human readable)、XML、JSON、MagicTree、RubyObject、MongoDB、SQL、ElasticSearch
  • TORを含むプロキシのサポート
  • カスタムHTTPヘッダ
  • ベーシックHTTP認証
  • ウェブページのリダイレクトの制御
  • NmapスタイルのIPレンジ
  • ファジーマッチング
  • 結果の確実性の認識
  • コマンドラインで定義されたカスタムプラグイン

ツールの場所

[Applications]→[03-Web Application Analysis]→[Web Vulnerability Scanners]→[whatweb]

ツールと使用方法

whatweb [options] <URLs>

例 whatweb -v -a 3 192.168.56.2

EXAMPLE USAGE:
* Scan example.com.
* example.comをスキャンします。
./whatweb example.com

* Scan reddit.com slashdot.org with verbose plugin descriptions.
*詳細なプラグインの説明を使用してreddit.com、slashdot.orgをスキャンします。
./whatweb -v reddit.com slashdot.org

* An aggressive scan of wired.com detects the exact version of WordPress.
* Wired.comを積極的にスキャンすると、WordPressの正確なバージョンが検出されます。
./whatweb -a 3 www.wired.com

* Scan the local network quickly and suppress errors.
*ローカルネットワークをすばやくスキャンし、エラーを抑制します。
whatweb –no-errors 192.168.0.0/24

* Scan the local network for https websites.
*ローカルネットワークをスキャンしてhttpsWebサイトを探します。
whatweb –no-errors –url-prefix https:// 192.168.0.0/24

* Scan for crossdomain policies in the Alexa Top 1000.
* Alexa Top1000でクロスドメインポリシーをスキャンします。
./whatweb -i plugin-development/alexa-top-100.txt \
–url-suffix /crossdomain.xml -p crossdomain_xml

【実行イメージ】少し端折って整形しています。

┌──(kali__kali)-[~]
└─$ whatweb -v -a 3 192.168.56.2/wordpress/
WhatWeb report for http://192.168.56.2/wordpress/
Status : 200 OK
Title : wordpress01 | Just another WordPress site
IP : 192.168.56.2
Country : RESERVED, ZZ

Summary : Script, X-UA-Compatible[IE=edge], MetaGenerator[Site Kit by Google 1.30.0], HTML5, JQuery[3.5.1], HTTPServer[Ubuntu Linux][Apache/2.4.41 (Ubuntu)], UncommonHeaders[link], Open-Graph-Protocol[website], WordPress, Apache[2.4.41]

Detected Plugins:
[ Apache ]
The Apache HTTP Server Project is an effort to develop and
maintain an open-source HTTP server for modern operating
systems including UNIX and Windows NT. The goal of this
project is to provide a secure, efficient and extensible
server that provides HTTP services in sync with the current
HTTP standards.

Version : 2.4.41 (from HTTP Server Header)
Google Dorks: (3)
Website : http://httpd.apache.org/

[ HTML5 ]
HTML version 5, detected by the doctype declaration


[ HTTPServer ]
HTTP server header string. This plugin also attempts to
identify the operating system from the server header.

OS : Ubuntu Linux
String : Apache/2.4.41 (Ubuntu) (from server string)

[ JQuery ]
A fast, concise, JavaScript that simplifies how to traverse
HTML documents, handle events, perform animations, and add
AJAX.

Version : 3.5.1
Website : http://jquery.com/

[ MetaGenerator ]
This plugin identifies meta generator tags and extracts its
value.

String : Site Kit by Google 1.30.0

[ Open-Graph-Protocol ]
The Open Graph protocol enables you to integrate your Web
pages into the social graph. It is currently designed for
Web pages representing profiles of real-world things .
things like movies, sports teams, celebrities, and
restaurants. Including Open Graph tags on your Web page,
makes your page equivalent to a Facebook Page.

Version : website

[ Script ]
This plugin detects instances of script HTML elements and
returns the script language/type.


[ UncommonHeaders ]
Uncommon HTTP server headers. The blacklist includes all
the standard headers and many non standard but common ones.
Interesting but fairly common headers should have their own
plugins, eg. x-powered-by, server and x-aspnet-version.
Info about headers can be found at www.http-stats.com

String : link (from headers)

[ WordPress ]
WordPress is an opensource blogging system commonly used as
a CMS.

Aggressive function available (check plugin file or details).
Google Dorks: (1)
Website : http://www.wordpress.org/

[ X-UA-Compatible ]
This plugin retrieves the X-UA-Compatible value from the
HTTP header and meta http-equiv tag. - More Info:
http://msdn.microsoft.com/en-us/library/cc817574.aspx

String : IE=edge

HTTP Headers:
HTTP/1.1 200 OK
Date: Sun, 25 Apr 2021 08:12:52 GMT
Server: Apache/2.4.41 (Ubuntu)
Link: <http://192.168.56.2/wordpress/index.php/wp-json/>; rel="https://api.w.org/"
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 25972
Connection: close
Content-Type: text/html; charset=UTF-8

ターゲット選択オプション(TARGET SELECTION)

<TARGETs>

Enter URLs, hostnames, IP addresses, filenames or IP ranges in CIDR, x.x.x-x, or x.x.x.x-x.x.x.x format.
URL、ホスト名、IPアドレス、ファイル名、またはIP範囲をCIDR、x.x.x-x、またはx.x.x.x-x.x.x.x形式で入力します。

–input-file=FILE, -i

Read targets from a file. You can pipe hostnames or URLs directly with -i /dev/stdin.
ファイルからターゲットを読み込みます。i /dev/stdinでホスト名やURLを直接パイプすることができます。

ターゲットの変更オプション(TARGET MODIFICATION)

–url-prefix

Add a prefix to target URLs.
ターゲットURLにプレフィックスを追加します。

–url-suffix

Add a suffix to target URLs.
対象となるURLにサフィックスを追加します。

–url-pattern

Insert the targets into a URL.
e.g. example.com/%insert%/robots.txt
ターゲットをURLに挿入します。
例:example.com/%insert%/robots.txt

侵略オプション(AGGRESSION)

The aggression level controls the trade-off between speed/stealth and reliability.
アグレッションレベルは、スピード/ステルス性と信頼性のトレードオフをコントロールします。

–aggression, -a=LEVEL

Set the aggression level. Default: 1.
アグレッションレベルを設定します。デフォルト:1

1. Stealthy
Makes one HTTP request per target and also follows redirects.
ターゲットごとに1つのHTTPリクエストを行い、リダイレクトにも従います。

3. Aggressive
If a level 1 plugin is matched, additional requests will be made.
レベル1のプラグインがマッチした場合、追加のリクエストを行います。

4. Heavy
Makes a lot of HTTP requests per target. URLs from all plugins are attempted.
ターゲットごとに大量のHTTPリクエストを行います。すべてのプラグインのURLが試行されます。

HTTPオプション(HTTP OPTIONS)

–user-agent, -U=AGENT

Identify as AGENT instead of WhatWeb/0.5.5.
WhatWeb/0.5.5ではなく、AGENTとして識別します。

–header, -H

Add an HTTP header. eg “Foo:Bar". Specifying a default header will replace it. Specifying an empty value, e.g. “User-Agent:" will remove it.
HTTPヘッダーを追加します。 例:「Foo:Bar」。 デフォルトのヘッダーを指定すると、ヘッダーが置き換えられます。 空の値を指定します。例: 「User-Agent:」はそれを削除します。

–follow-redirect=WHEN

Control when to follow redirects. WHEN may be `never’, `http-only’, `meta-only’, `same-site’, or `always’. Default: always.
いつリダイレクトを行うかを制御する。WHENには`never’、`http-only’、`meta-only’、`same-site’、`always’のいずれかを指定します。デフォルトは always です。

–max-redirects=NUM

Maximum number of redirects. Default: 10.
リダイレクトの最大数。デフォルト:10

認証オプション(AUTHENTICATION)

–user, -u=<user:password>

HTTP basic authentication.
HTTP ベーシック認証。

–cookie, -c=COOKIES

Use cookies, e.g. 'name=value; name2=value2’.
name=value; name2=value2」のように、クッキーを使用します。

–cookie-jar=FILE

Read cookies from a file.
ファイルからクッキーを読み込む。

プロキシオプション(PROXY)

–proxy

<hostname[:port]> Set proxy hostname and port. Default: 8080.
<hostname[:port]> プロキシのホスト名とポートを設定します。デフォルトは8080です。

–proxy-user

<username:password> Set proxy user and password.
<username:password> プロキシのユーザーとパスワードを設定します。

プラグインオプション(PLUGINS)

–list-plugins, -l

List all plugins.
すべてのプラグインを一覧表示します。

–info-plugins, -I=[SEARCH]

List all plugins with detailed information.
Optionally search with keywords in a comma delimited list.
すべてのプラグインを詳細な情報とともに一覧表示します。
カンマ区切りのキーワードで検索することも可能です。

–search-plugins=STRING

Search plugins for a keyword.
キーワードを指定してプラグインを検索します。

–plugins, -p=LIST

Select plugins. LIST is a comma delimited set of selected plugins. Default is all.
Each element can be a directory, file or plugin name and can optionally have a modifier, +/-.
プラグインを選択します。LISTは、選択されたプラグインのセットをカンマで区切ったものです。デフォルトは all です。
各要素には、ディレクトリ名、ファイル名、プラグイン名を指定でき、オプションで修飾子(+/-)を付けることができます。
例:
+/tmp/moo.rb,+/tmp/foo.rb title,md5,+./plugins-disabled/
./plugins-disabled,-md5 -p + is a shortcut for -p +plugins-disabled.

–grep, -g=STRING|REGEXP

Search for STRING or a Regular Expression. Shows only the results that match.
STRINGまたは正規表現で検索します。一致した結果のみを表示します。
例:
–grep “hello"
–grep “/he[l]*o/"

–custom-plugin=DEFINITION

Define a custom plugin named Custom-Plugin,
Custom-Pluginという名前のカスタムプラグインを定義します。
例:
“:text=>’powered by abc'"
“:version=>/powered[ ]?by ab[0-9]/"
“:ghdb=>’intitle:abc \"powered by abc\"'"
“:md5=>’8666257030b94d3bdb46e05945f60b42′"
“{:text=>’powered by abc’}"

–dorks=PLUGIN

List Google dorks for the selected plugin.
選択したプラグインのGoogle dorksを一覧表示します。

出力オプション(OUTPUT)

–verbose, -v

Verbose output includes plugin descriptions. Use twice for debugging.
冗長な出力には、プラグインの説明が含まれます。デバッグには2回使用します。

–colour,–color=WHEN

control whether colour is used. WHEN may be `never’, `always’, or `auto’.
は色を使うかどうかを制御します。WHENは`never’、`always’、`auto’のいずれかです。

–quiet, -q

Do not display brief logging to STDOUT.
ショートログをSTDOUTに表示しない。

–no-errors

Suppress error messages.
エラーメッセージを表示しない。

ロギングオプション(LOGGING)

–log-brief=FILE

Log brief, one-line output.
簡潔な1行の出力を記録します。

–log-verbose=FILE

Log verbose output.
冗長な出力を記録します。

–log-errors=FILE

Log errors.
ログエラーが発生します。

–log-xml=FILE

Log XML format.
ログのXML形式。

–log-json=FILE

Log JSON format.
ログのJSON形式。

–log-sql=FILE

Log SQL INSERT statements.
SQLのINSERT文を記録する。

–log-sql-create=FILE

Create SQL database tables.
SQLデータベースのテーブルを作成します。

–log-json-verbose=FILE

Log JSON Verbose format.
Log JSON Verbose形式で表示します。

–log-magictree=FILE

Log MagicTree XML format.
Log MagicTreeのXML形式。

–log-object=FILE

Log Ruby object inspection format.
ログ・ルビー・オブジェクトの検査形式。

–log-mongo-database

Name of the MongoDB database.
MongoDBデータベースの名称。

–log-mongo-collection

Name of the MongoDB collection. Default: whatweb.
MongoDBコレクションの名前。デフォルトはwhatwebです。

–log-mongo-host

MongoDB hostname or IP address. Default: 0.0.0.0.
MongoDBのホスト名またはIPアドレス。デフォルト:0.0.0.0

–log-mongo-username

MongoDB username. Default: nil.
MongoDB のユーザー名。デフォルト: nil

–log-mongo-password

MongoDB password. Default: nil.
MongoDBのパスワード。デフォルトは nil です。

–log-elastic-index

Name of the index to store results. Default: whatweb
結果を保存するインデックスの名前。デフォルト:whatweb

–log-elastic-host

Host:port of the elastic http interface. Default: 127.0.0.1:9200
エラスティックHTTPインターフェースのホスト:ポート。デフォルト:127.0.0.1:9200

パフォーマンスと安定性オプション(PERFORMANCE & STABILITY)

–max-threads, -t

Number of simultaneous threads. Default: 25.
同時接続可能なスレッドの数。デフォルト:25

–open-timeout

Time in seconds. Default: 15.
秒単位の時間。デフォルト:15

–read-timeout

Time in seconds. Default: 30.
時間の単位は秒。デフォルト:30

–wait=SECONDS

Wait SECONDS between connections. This is useful when using a single thread.
接続と接続の間にSECONDSを待ちます。これは、単一のスレッドを使用する場合に便利です。

ヘルプとその他オプション(HELP & MISCELLANEOUS)

–short-help

Short usage help.
短い使い方のヘルプです。

–help, -h

Complete usage help.
完全な使い方のヘルプ。

–debug

Raise errors in plugins.
プラグインのエラーを発生させる。

–version

Display version information.
バージョン情報を表示します。

YouTubeに最新動画を掲載しました。

「チャンネル登録」と「評価」よろしくお願いします。

 

whatwebツールのまとめ

whatwebツールを使えば、ターゲットのwebサイトで「どのアプリケーション」を利用していて、アプリケーションの「バージョン」が簡単にわかります。

ブラックハットハッカーはアプリケーションの不具合を発見したらwhatwebツールを利用して、不具合のあるアプリケーションを探して攻撃するのでしょうか。

チェックしてわかったのですが、wordpressのバージョンもわかるのですが、テーマによっては表示されない場合がありました。セキュリティの強いテーマを使う必要がありますね。