wivern ロゴ

サイバーセキュリティ&人工知能研究所

サイバーセキュリティや人工知能(機械学習等)を中心に、最新技術を研究しています。


WPScan 入門

WordPress の脆弱性スキャンツール「WPScan」

WPScan

はじめに
ホームページ管理システムの中でも圧倒的なシェアを誇る WordPress ですが、脆弱性が発見されると世界中で WordPress を活用している膨大な数のサイトが危険に晒されます。
私が管理を依頼されているサイトでも、WordPress を活用しているサイトが半数を超えています。
特に最近、サイトをスマホ対応に改変する流れもあって、WordPress を導入するサイトは増加傾向にあります。
今回は私のように WordPress を管理している人に、WordPress の脆弱性スキャンツール「WPScan」を紹介したいと思います。

WPScan とは
WPScan とは、Ruby で書かれた WordPress の脆弱性スキャンツールで、オープンソースで公開されています。
公式サイトによると、Linux や OSX で動作します。
Kali Linux にはデフォルトでインストールされているので、コマンドラインから起動できます。
以下、公式サイトの英文での記述を元に、使い方を日本語に直訳して紹介します。
本稿執筆時点でのバージョンは、2.7(Released: 2015-03-16) です。

コマンドライン・オプションや実行例を見ればわかりますが、このツールは使い方次第で攻撃ツールになりえます。
自分が管理運営していないサイトに対するこのツールの使用は、違法行為に見なされる場合がありますので、くれぐれもご注意ください。

コマンドライン・オプション
--update
データベースを更新します。

--url | -u <ターゲットの URL>
スキャンしたい WordPress サイトの URLを指定します。

--force | -f
リモート・サイトで WordPress の稼働をチェックせずに WPScan を強行します。

--enumerate | -e [オプション]
列挙
 オプション:
 u     id 1 から 10 までの username を列挙します
 u[10-20] id 10 から 20 までの username を列挙します( [] が必要です)
 p     プラグインを列挙します
 vp    脆弱性のあるプラグインだけを列挙します
 ap    全てのプラグインを列挙します(時間がかかります)
 tt    timthumb を列挙します
 t     テーマを列挙します
 vt    脆弱性のあるテーマだけを列挙します
 at    全てのテーマを列挙します(時間がかかります)

 ※複数の値を指定できます:「-e tt,p」は timthumb とプラグインを列挙します。
  オプションが指定されていない場合のデフォルトは「vt,tt,u,vp」です。

--exclude-content-based "<正規表現 または 文字列>"
列挙と共に使われるオプションで、正規表現か文字列で指定された結果を除外します。
正規表現デリミタを指定する必要はありませんが、「'」か「"」を書かなければいけません。

--config-file | -c <設定ファイル>
設定ファイルを指定します。example.conf.json を参照してください。

--user-agent | -a
User-Agent を指定します。

--random-agent | -r
ランダムな User-Agent を使用します。

--follow-redirection
ターゲットの URL がリダイレクトしていた場合、確認せずにそれに従うかどうかを指定します。

--wp-content-dir
WPScan はインデックス・ページをスキャンしてコンテンツ・ディレククトリ(例:wp-content)を探そうとしますが、指定することができます。サブディレクトリでもかまいません。

--wp-plugins-dir
プラグイン・ディレクトリを指定します。指定がない場合は、WPScan は wp-content-dir/plugins を使用します。サブディレクトリでもかまいません。

--proxy <[プロトコル://]ホスト:ポート>
プロキシを指定します( conf/browser.conf.json の内のひとつを上書きします)。
HTTP、SOCKS4、SOCKS4A と SOCKS5 がサポートされています。 (ホスト:ポートの形式で)プロトコルを指定しないと、HTTP が使われます。

--proxy-auth <ユーザーネーム:パスワード>
プロキシのログイン認証を指定します。

--basic-auth <ユーザーネーム:パスワード>
HTTP の基本認証を指定します。

--wordlist | -w <ワードリスト>
パスワードのブルート・フォース攻撃のためのワードリストを指定します。

--threads | -t <スレッド数>
マルチ・スレッド・リクエストを使う場合のスレッド数を指定します。

--username | -U <ユーザーネーム>
指定されたユーザーネームでブルート・フォース攻撃をします。

--usernames <ファイルのパス>
指定したファイルのユーザーネームでブルート・フォース攻撃をします。

--cache-ttl <キャッシュ TTL>
Typhoeus( Ruby 用高速並列HTTPライブラリ) のキャッシュ TTL を指定します。

--request-timeout <リクエスト・タイムアウト>
リクエスト・タイムアウトを指定します。

--connect-timeout <接続タイムアウト>
接続タイムアウトを指定します。

--max-threads <最大スレッド数>
最大スレッド数を指定します。

--help | -h
このヘルプ画面を表示します。

--verbose | -v
詳細を表示するように指定します。

--batch
ユーザーに入力を求めず、デフォルトの動作を使用します。

--no-color
出力に色を使いません。

--log
標準出力を log.txt に保存します。


実行例
侵入せずにチェック
wpscan --url www.example.com
50 スレッドを使って列挙されたユーザーにパスワードのワードリストでブルート・フォース
wpscan --url www.example.com --wordlist darkc0de.lst --threads 50
ユーザーネーム「admin」だけに対してパスワードのワードリストでブルート・フォース
wpscan --url www.example.com --wordlist darkc0de.lst --username admin
インストールされているプラグインを列挙
wpscan --url www.example.com --enumerate p
全てを列挙
wpscan --url www.example.com --enumerate
カスタム・コンテンツ・ディレクトリを使用
wpscan -u www.example.com --wp-content-dir custom-content
WPScan のデータベースを更新
wpscan --update
デバッグ情報を出力
wpscan --url www.example.com --debug-output 2>debug.log


記述に際しては、細心の注意をしたつもりですが、間違いやご指摘がありましたら、こちらからお知らせいただけると幸いです。


→「WPScan 入門」
←「ネットで丸見えのデジタル複合機を検証」


« 戻る


↓ Now Translating...

↑ Now Translating...

↓ Now Reading...

↑ Now Reading...

↓ Recommending...

↑ Recommending...