24時間365日フルマネージドホスティングサービスのデイーネット

[技術ブログvol.7] WPScanを使ってWordPressサイトをチェックしてみる

今回は、WPScanというWordPressのセキュリティ診断ツールをご紹介します。

WPScanの概要

WPScanの主な機能は以下の通りです。

  • 侵入を試行しない単純なスキャン
  • ログインユーザ一覧の取得
  • ログインパスワードのブルートフォースアタックと取得
  • インストールされているプラグインの列挙とバージョンの取得
  • インストールされているテーマとバージョンの取得

この他にも、プロキシを指定できたり、ブルートフォースのパスワードファイルや、リクエストのスレッド数を指定できたりします。

インストール

WPScanはRubyで動くツールですが、要件としてRuby1.9.2以上が必要となります。(推奨は1.9.3以上)

いつも使っているCentOS6は、yumでそのままインストールすると1.8系が入ってしまいます。
そこで、できるだけ簡単にしたいので、今回はUbuntuを使うことにしました。

使ったUbuntuは、AWSで公開されているものを利用しました。
バージョン「13.10」のものです。

 # cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=13.10
DISTRIB_CODENAME=saucy
DISTRIB_DESCRIPTION=”Ubuntu 13.10″

WPScanの要件の一覧はこんな感じです。

  • Windows not supported
  • Ruby >= 1.9.2 – Recommended: 1.9.3
  • Curl >= 7.21 - Recommended: latest – FYI the 7.29 has a segfault
  • RubyGems - Recommended: latest
  • Git

まずは、Ubuntu側の準備です。
このUbuntuは、最小インストール状態なので、最初にパッケージリストを入手します。

 # apt-get update

利用できるrubyの確認をします。

  • Ruby1.9系
 # apt-cache search ^ruby1.9
ruby1.9.1 – Interpreter of object-oriented scripting language Ruby
ruby1.9.1-dev – Header files for compiling extension modules for the Ruby 1.9.1
ruby1.9.1-examples – Examples for Ruby 1.9
ruby1.9.1-full – Ruby 1.9.1 full installation
ruby1.9.3 – Interpreter of object-oriented scripting language Ruby, version 1.9.3

1.9.3のバージョンが使えるようです。

  • Ruby2系
 # apt-cache search ^ruby2
ruby1.9.1 – Interpreter of object-oriented scripting language Ruby
ruby1.9.1-dev – Header files for compiling extension modules for the Ruby 1.9.1
ruby1.9.1-examples – Examples for Ruby 1.9
ruby1.9.1-full – Ruby 1.9.1 full installation
ruby1.9.3 – Interpreter of object-oriented scripting language Ruby, version 1.9.3

ruby2.0が使えますが、今回は「1.9.3」のものを使うことにします。

次に必要なものをインストールします。

 # apt-get install libcurl4-gnutls-dev libopenssl-ruby libxml2 libxml2-dev libxslt1-dev ruby-dev git  ruby1.9.3 make

全てインストールできるまで、少々時間がかかります。
インストールが終わったら、WPScanのインストールを行います。

 # git clone https://github.com/wpscanteam/wpscan.git
# cd wpscan
# gem install bundler && bundle install –without test development

こちらも少々時間がかかります。

全て終われば、WPScanのインストール完了です。

 

使い方

インストールしたディレクトリに、wpscan.rbというファイルがあり、これが本体のファイルになります。
このwpscan.rbを実行して使います。

侵入を試行しない単純なスキャン

まずは一番簡単な使い方です。

 # ruby wpscan.rb -u www.example.com

※「www.example.com」の部分は、WordPressがインストールされた対象サイトのURLを指定します。

ログインユーザ一覧の取得

 # ruby wpscan.rb -u www.example.com -e u

ユーザID、ログインユーザ名、ブログ上の表示名が一覧で取得出来てしまいます。

ログインパスワードのブルートフォースアタックと取得

 # ruby wpscan.rb -u www.example.com -w password.txt -U admin –threads 10

対象サーバに負荷をかけ過ぎないように「–threads」でリクエストのスレッド数を指定しています。

ここでは、ユーザ「admin」に対して、「password.txt」というパスワードファイルを使って、パスワードの取得を試みていて、「qwerty」というパスワードを見事取得しています。

パスワードファイルの中身は、以下のような感じで作ってみました。

 # cat password.txt

qazwsx
123456
abcdef
passwd
qwerty
hogehoge
test01

一行に1つのパスワードという書き方であれば、どんな内容でもいいので、自由に作ることができます。

インストールされているプラグインの列挙とバージョンの取得

 # ruby wpscan.rb -u www.example.com -e ap

停止しているプラグインも表示されます。
コマンド最後の「-e ap」というオプションは、全てのプラグインをチェックするという意味ですが、今回は、検出できないものが1つだけありました。

インストールされているテーマとバージョンの取得

 # ruby wpscan.rb -u www.example.com -e at

プラグイン同様にテーマの詳細が表示されます。

最後に

こういったツールは攻撃ツールにも使えてしまうので、悪用は厳禁ですが、逆に考えると、攻撃パターンを予想した対策が打てるという意味で、とても有効なセキュリティ対策の1つだと思います。

よかったら是非活用してみてください。

次回予定

次回は、クラウド系のことを紹介したいと思います。
更新予定は、12月中旬頃です。

  • このページの先頭へ

  • 東京本社
    〒105-0001東京都港区虎ノ門2-3-22 第一秋山ビル5F
    TEL:03-3591-8887 FAX:03-3591-8886
  • 大阪本社
    〒541-0041 大阪市中央区北浜2-6-11北浜エクセルビル5F
    TEL:06-6231-8887 FAX:06-6231-8897

  • 認証範囲はこちらをご覧ください。

Denet logo

クラウドサービス・データセンタ・高機能専有サーバ・共有サーバホスティングサービス 株式会社ディーネット
dot_bar