【注意】このサイトに記載されていることを他人に試すことは「不正アクセス禁止法」に該当する場合があります。詳しくはこちらから

ハッカーはwpscanでWordPressの脆弱性を調査する(Kali Linuxツール説明)

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

WordPressの脆弱性スキャンツールを理解するためにまとめてみました。
このwpscanの動作確認は自分のドメインでテストを行っています。

wpscanとは

wpscanは、リモートでインストールされたWordPressを確認して問題のあるセキュリティを発見するツールです。

機能

  • インストールされているWordPressのバージョンと関連する脆弱性
  • インストールされているプラグインと関連する脆弱性
  • インストールされているテーマと関連する脆弱性
  • ユーザー名の列挙
  • パスワードブルートフォーシングによる弱いパスワードを持つユーザー
  • バックアップされ、一般にアクセス可能なwp-config.phpファイル
  • 公的にアクセス可能なデータベースダンプ
  • エラーログがプラグインによって公開されている場合
  • メディアファイルの列挙
  • 脆弱なTimthumbファイル
  • WordPressのreadmeファイルが存在する場合
  • WP-Cronが有効になっている場合
  • ユーザー登録が有効になっている場合
  • フルパス開示
  • ディレクトリリストをアップロードする
whitemarkn
whitemarkn
サンプルでwordpressのユーザー名リストとパスワードリストを作成して、テスト環境でこれらのリストを用いて「wpscan」ツールを実行したところ、見事にユーザー名とパスワードが解析されました。
wordpressのユーザー名とパスワードは覚えられないぐらいの文字列が絶対に良い事を確信しました。(^^;;

ツールの場所

[Applications]→[03-Web Application Analysis]→[CMS & Framework Identification]→[wpscan]

ツールと使用方法

wpscan [options]

例 wpscan –url www.yahoo.co.jp

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

┌──(root__kali)-[/home/kali]
└─# wpscan --url **********.com
_______________________________________________________________
__ _______ _____
\ \ / / __ \ / ____|
\ \ /\ / /| |__) | (___
\ \/ \/ / | ___/ \___ \ / __|/ _` | '_ \
\ /\ / | | ____) | (__| (_| | | | |
\/ \/ |_| |_____/ \___|\__,_|_| |_|

WordPress Security Scanner by the WPScan Team
Version 3.8.14

@_WPScan_, @ethicalhack3r, @erwan_lr, @firefart
_______________________________________________________________

[i] Updating the Database ...
[i] Update completed.

[+] URL: http://**********.com/ [***.***.***.***]
[+] Effective URL: https://**********.com/
[+] Started: Wed Apr 7 10:15:51 2021

Interesting Finding(s):

[+] Headers
| Interesting Entry: server: ****
| Found By: Headers (Passive Detection)
| Confidence: 100%

[+] XML-RPC seems to be enabled: https://**********.com/****.php
| Found By: Link Tag (Passive Detection)
| Confidence: 100%
| Confirmed By: Direct Access (Aggressive Detection), 100% confidence
| References:
| - http://codex.wordpress.org/XML-RPC_Pingback_API
| - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_ghost_scanner
| - https://www.rapid7.com/db/modules/auxiliary/dos/http/wordpress_xmlrpc_dos
| - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_xmlrpc_login
| - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_pingback_access

[+] This site has '**** Plugins': http://**********.com/plugins/
| Found By: Direct Access (Aggressive Detection)
| Confidence: 80%
| Reference: http://codex.wordpress.org/***_Plugins
:
:
whitemarkn
whitemarkn
大量の出力結果の為端折っています。
分析はしっかり出来ているみたいです。

オプション

–url URL

The URL of the blog to scan.
Allowed Protocols: http, https.
Default Protocol if none provided: http.
This option is mandatory unless update or help or hh or version is/are supplied.
スキャンするブログのURLです。
許可されるプロトコル:http、https。
何も指定されていない場合のデフォルトプロトコル:http。
このオプションは、update、help、hh、versionのいずれかが指定されていない限り必須です。

-h, –help

Display the simple help and exit.
簡単なヘルプを表示して終了します。

–hh

Display the full help and exit.
フルヘルプを表示して終了します。

–version

Display the version and exit.
バージョンを表示して終了します。

-v, –verbose

Verbose mode.
Verboseモード。

–[no-]banner

Whether or not to display the banner.(Default: true)
バナーを表示するかどうか(デフォルト:true)

-o, –output FILE

Output to FILE.
ファイルに出力します。

-f, –format FORMAT

Output results in the format supplied.
Available choices: cli-no-colour, cli-no-color, cli, json.
指定されたフォーマットで結果を出力します。
利用可能な選択肢:cli-no-color、cli-no-color、cli、json。

–detection-mode MODE

Default: mixed.
Available choices: mixed, passive, aggressive
デフォルト:Mixed。
選択できる項目:ミックス、パッシブ、アグレッシブ

–user-agent, –ua VALUE
–random-user-agent, –rua

Use a random user-agent for each scan.
スキャンごとにランダムなユーザーエージェントを使用します。

–http-auth login:password.
-t, –max-threads VALUE

The max threads to use.(Default: 5)
使用する最大スレッド数(初期値:5)

–throttle MilliSeconds

Milliseconds to wait before doing another web request. If used, the max threads will be set to 1.
次のウェブリクエストを行うまでの待機時間(ミリ秒)。使用した場合、最大スレッド数は1に設定されます。

–request-timeout SECONDS

The request timeout in seconds.(Default: 60)
リクエストのタイムアウト時間を秒単位で指定します。(初期値:60)

–connect-timeout SECONDS

The connection timeout in seconds.(Default: 30)
接続タイムアウトを秒単位で指定します。(初期値:30)

–disable-tls-checks

Disables SSL/TLS certificate verification, and downgrade to TLS1.0+ (requires cURL 7.66 for the latter)
SSL/TLS証明書の検証を無効にし、TLS1.0+にダウングレードします。(後者はcURL 7.66が必要)

–proxy protocol://IP:port

Supported protocols depend on the cURL installed.
対応するプロトコルは、インストールされているcURLによって異なります。

–proxy-auth login:password
–cookie-string COOKIE

Cookie string to use in requests, format: cookie1=value1[; cookie2=value2]
リクエストに使用するクッキー文字列、フォーマット: cookie1=value1[; cookie2=value2].

–cookie-jar FILE-PATH

File to read and write cookies.(Default: /tmp/wpscan/cookie_jar.txt)
クッキーを読み書きするためのファイル。(初期値:/tmp/wpscan/cookie_jar.txt)

–force

Do not check if the target is running WordPress or returns a 403.
ターゲットがWordPressを実行しているかどうかをチェックしない、または403を返す。

–[no-]update

Whether or not to update the Database.
Databaseを更新するかどうか。

–api-token TOKEN

The WPScan API Token to display vulnerability data, available at https://wpscan.com/profile
脆弱性データを表示するためのWPScan API Token( https://wpscan.com/profile )を提供しています。

–wp-content-dir DIR

The wp-content directory if custom or not detected, such as “wp-content"
カスタムまたは検出されない場合は、"wp-content “などのwp-contentディレクトリ。

–wp-plugins-dir DIR

The plugins directory if custom or not detected, such as “wp-content/plugins"
カスタムまたは検出されない場合は、"wp-content/plugins “のようなプラグインのディレクトリ


-e, –enumerate [OPTS]

Enumeration Process
列挙のプロセス

選択可能な項目(Available Choices)

  • vp:脆弱性のあるプラグイン
  • ap:すべてのプラグイン
  • p:人気のあるプラグインです
  • vt:問題のあるテーマ
  • at:すべてのテーマ
  • t:人気のあるテーマです
  • tt:タイムサムズ
  • cb:設定のバックアップ
  • dbe:データベースのエクスポート
  • u:ユーザーIDの範囲 例:u1-5
     使用する範囲セパレータ。’-'.
     引数を与えない場合の値:1-10
  • m:メディアIDの範囲。例:m1-15
     注意:Permalinkの設定が “Plain “になっていないと、これらのメディアは検出されません。
     使用する範囲セパレータ。’-'.
     引数を与えない場合の値:1-100。

Separator to use between the values: ',’
Default: All Plugins, Config Backups
Value if no argument supplied: vp,vt,tt,cb,dbe,u,m
Incompatible choices (only one of each group/s can be used):
– vp, ap, p
– vt, at, t

値の間に使用するセパレータです。’,’
デフォルトです。すべてのプラグイン、コンフィグのバックアップ
引数を与えない場合の値: vp,vt,tt,cb,dbe,u,m
互換性のない選択肢(各グループ/Sのうち1つしか使用できない)。
– VP、AP、P
– vt, at, t


–exclude-content-based

REGEXP_OR_STRING Exclude all responses matching the Regexp (case insensitive) during parts of the enumeration.
Both the headers and body are checked. Regexp delimiters are not required.
REGEXP_OR_STRING Regexp にマッチするすべてのレスポンスを、列挙の一部の間に(大文字小文字を区別せずに)除外します。
ヘッダと本文の両方がチェックされます。Regexp のデリミタは必要ありません。

–plugins-detection MODE

Use the supplied mode to enumerate Plugins.(Default: passive)
Available choices: mixed, passive, aggressive.
プラグインを列挙するために、与えられたモードを使用します。(デフォルト:パッシブ
使用可能な選択肢: mixed, passive, aggressive。

–plugins-version-detection MODE

Use the supplied mode to check plugins’ versions.(Default: mixed)
Available choices: mixed, passive, aggressive.
プラグインのバージョンをチェックするために提供されているモードを使用します(デフォルト:mixed)。
選択可能な項目:mixed, passive, aggressive。

-P, –passwords FILE-PATH

List of passwords to use during the password attack.
If no –username/s option supplied, user enumeration will be run.
パスワード攻撃の際に使用するパスワードのリスト。
–username/s オプションが指定されていない場合は、ユーザー列挙が実行されます。

-U, –usernames LIST

List of usernames to use during the password attack.
Examples: 'a1’, 'a1,a2,a3’, '/tmp/a.txt’
パスワード攻撃の際に使用するユーザー名のリスト。
例を挙げます。’a1′, 'a1,a2,a3’, '/tmp/a.txt’

–multicall-max-passwords MAX_PWD

Maximum number of passwords to send by request with XMLRPC multicall.(Default: 500)
XMLRPCマルチコールのリクエストで送信するパスワードの最大数(デフォルト:500)

–password-attack ATTACK

Force the supplied attack to be used rather than automatically determining one.
Available choices: wp-login, xmlrpc, xmlrpc-multicall.
与えられた攻撃を自動的に決定するのではなく、強制的に使用します。
利用可能な選択肢: wp-login、xmlrpc、xmlrpc-multicall。

–login-uri URI

The URI of the login page if different from /wp-login.php.
ログインページのURIが/wp-login.phpと異なる場合は、以下のようになります。

–stealthy

Alias for –random-user-agent –detection-mode passive –plugins-version-detection passive.
random-user-agent –detection-mode passive –plugins-version-detection passive の別名です。

wpscanツールのまとめ

CMS(Contents Management System)の中でブログから大規模サイトまで作れるのがwordpressです。
比較的簡単に導入できるメリットがあるのですが、wordpressに脆弱性が発見されると世界中で使われている膨大な数のwordpressのサイトが危険に晒されるのです。

よって、WordPressの脆弱性、プラグインの脆弱性、テーマの脆弱性などを確認するのですね。

これを見られている方の中にもwordprssでサイトを作られている方が多いと思います。
お勧めのwordpressのプラグインに「wpscan」があります。

プラグインの特徴は、手動で精査された独自のWPScan WordPress脆弱性データベースを使用している点です。
この脆弱性データベースは2014年から存在しており、WordPressセキュリティの専門家やコミュニティ全体によって日々更新されています。
このデータベースには、21,000件以上の既知のセキュリティ脆弱性が含まれています。
このプラグインは、このデータベースを利用して、WordPressの脆弱性、プラグインの脆弱性、テーマの脆弱性をスキャンします。
また、毎日の自動スキャンをスケジュールしたり、メールで通知を送信するオプションもあるそうです。

ぜひチェックをおすすめします。