WPScan 入門
WordPress の脆弱性スキャンツール「WPScan」
2015/05/26 : Security
はじめに
ホームページ管理システムの中でも圧倒的なシェアを誇る 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 入門」
←「ネットで丸見えのデジタル複合機を検証」
« 戻る