Posts WPScanでWordPressサイトをチェックする
Post
Cancel

WPScanでWordPressサイトをチェックする

私たちのサイトではWordPressでブログサイトを開いています。セキュリティ的に安全に守られているのか気になるところです。 そこで、今回のテーマはWordPressのセキュリティ診断ツール「WPScan」です。WPScanは、Rubyで開発されています。

WPScanの概要

WPScanの主な機能を挙げます。

  • ログインユーザー名/表示名を列挙
  • WordPressやインストールされているプラグインやテーマのバージョンを取得
  • バージョンによるプラグインやテーマの脆弱性を列挙
  • ログインパスワードをブルートフォースアタックで取得 など

インストール

http://wpscan.org/を参照のこと。ここでは、CentOS6.5にインストールしたときのメモを書きます。 やったことは先のホームページに記載されていることをしただけですが、1つ変更を加えたのは.ruby-versionでした。CentOS6.5にRubyのversion2.2.2はインストールできなかったので、wpscan/.ruby-versionの記述を変更し、インストールできていたバージョン2.1.4にすることでwpscan.rbを実行することができました。

やったこと

sudo yum install gcc ruby-devel libxml2 libxml2-devel libxslt libxslt-devel libcurl-devel patch
git clone https://github.com/wpscanteam/wpscan.git
cd wpscan
less .ruby-version           # => 2.2.2 必要ならば変更する。
sudo gem install bundler && bundle install --without test

セキュリティチェック

基本のコマンドは

ruby wpscan.rb --url www.example-wp.com

になります。

また、(オプション)引数を調べるときには、

ruby wpscan.rb --help

で調べることができます。

いくつかをここで紹介します。

列挙(Enumeration)

引数に--enumerateまたは-eをあたえると以下のようなものを探して列挙してくれます。

次の引数指定では、「インストールされているプラグイン」と「インストールされているテーマ」を探してバージョンをチェックし、データベースにある脆弱性を持つバージョン情報などを表示してくれます。

$ ruby wpscan.rb --url www.example-wp.com -e p t

は次と同じです。

$ ruby wpscan.rb --url www.example-wp.com --enumerate p t

実行結果の一例をお見せします。

$ ruby wpscan.rb --url www.example-wp.com --enumerate p t
_______________________________________________________________
        __          _______   _____
        \ \        / /  __ \ / ____|
         \ \  /\  / /| |__) | (___   ___  __ _ _ __
          \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \
           \  /\  /  | |     ____) | (__| (_| | | | |
            \/  \/   |_|    |_____/ \___|\__,_|_| |_|

        WordPress Security Scanner by the WPScan Team
                       Version 2.7
          Sponsored by Sucuri - https://sucuri.net
   @_WPScan_, @ethicalhack3r, @erwan_lr, pvdl, @_FireFart_
_______________________________________________________________

[+] URL: http://www.example-wp.com/
[+] Started: Tue Apr 21 18:26:39 2015

[+] robots.txt available under: 'http://www.example-wp.com/robots.txt'
[!] The WordPress 'http://www.example-wp.com/readme.html' file exists exposing a version number
[+] Interesting header: LINK: <http://www.example-wp.com/>; rel=shortlink
[+] Interesting header: SERVER: Apache/2.2.15 (CentOS)
[+] Interesting header: X-POWERED-BY: PHP/5.3.3
[+] This site has 'Must Use Plugins' (http://codex.wordpress.org/Must_Use_Plugins)
[+] XML-RPC Interface available under: http://www.example-wp.com/xmlrpc.php


[+] WordPress version 4.1.1 identified from meta generator

[+] WordPress theme in use: advantage-child

[+] Name: advantage-child
 |  Location: http://www.example-wp.com/t/themes/advantage-child/
 |  Style URL: http://www.example-wp.com/t/themes/advantage-child/style.css
 |  Referenced style.css: http://www.example-wp.com/wp-content/themes/advantage-child/style.css
 |  Description:

[+] Enumerating installed plugins  ...

   Time: 00:00:15 <====================================================================================================================================> (2221 / 2221) 100.00% Time: 00:00:15

[+] We found 4 plugins:

[+] Name: link-manager
 |  Location: http://www.example-wp.com/wp-content/plugins/link-manager/
 |  Readme: http://www.example-wp.com/wp-content/plugins/link-manager/readme.txt
[!] Directory listing is enabled: http://www.example-wp.com/wp-content/plugins/link-manager/

[+] Name: ml-slider - v3.3.1
 |  Location: http://www.example-wp.com/wp-content/plugins/ml-slider/
 |  Readme: http://www.example-wp.com/wp-content/plugins/ml-slider/readme.txt
[!] Directory listing is enabled: http://www.example-wp.com/wp-content/plugins/ml-slider/

[!] Title: Meta Slider 2.5 - metaslider.php id Parameter XSS
    Reference: https://wpvulndb.com/vulnerabilities/7050
    Reference: http://packetstormsecurity.com/files/127288/
    Reference: http://www.securityfocus.com/bid/68283
    Reference: http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-4846
    Reference: http://osvdb.org/108611

[!] Title: Meta Slider 2.1.6 - Multiple Script Direct Request Path Disclosure
    Reference: https://wpvulndb.com/vulnerabilities/7051
    Reference: http://osvdb.org/100794


[+] Name: redirection - v2.3.14
 |  Location: http://www.example-wp.com/wp-content/plugins/redirection/
 |  Readme: http://www.example-wp.com/wp-content/plugins/redirection/readme.txt
[!] Directory listing is enabled: http://www.example-wp.com/wp-content/plugins/redirection/

[+] Name: wassup - v1.8.6
 |  Location: http://www.example-wp.com/wp-content/plugins/wassup/
 |  Readme: http://www.example-wp.com/wp-content/plugins/wassup/readme.txt

[!] Title: WassUp 1.4.3 - (spy.php to_date) SQL Injection Exploit
    Reference: https://wpvulndb.com/vulnerabilities/6492
    Reference: http://www.exploit-db.com/exploits/5017/

[+] Finished: Tue Apr 21 18:27:07 2015
[+] Requests Done: 2415
[+] Memory used: 54.449 MB
[+] Elapsed time: 00:00:28

使用中のテーマについての情報やインストールされているプラグインについて異なるバージョンの脆弱性についての情報も表示されています。

wpscanが見つけてくれた物事(ファイルが一覧できるディレクトリがあることなど)に対してどのように対処するかは、サイト管理者自身の判断ということですね。

列挙(Enumeration)のオプション

列挙(Enumeration)のオプションには次のものがありますが、オプションなしで実行すると-e vt,tt,u,vpがデフォルトで実行されます。

  • u ログインユーザーのログインIDと表示名
  • p インストールされているプラグイン
  • vp 攻撃を受けやすいプラグイン
  • ap 全てのプラグイン
  • t インストールされているテーマ
  • vt 攻撃を受けやすいテーマ
  • at 全てのテーマ
  • tt チムサムファイル

最後にあげたチムサム(timthumbs)ファイルとは何だろうと思い、少し調べてみたらWordPressのテーマで使われていたプラグインのことなのですね。画像のサムネイルを自動的にリサイズしてくれるものだそうですが、脆弱性が見つかりそれに対しては対策が施されたようです。作者の方は、現在はサポートもメンテナンスも行っておらず、I No Longer Use TimThumbとおっしゃっています(バグフィックスはGoogle Codeで行われています)。

ブルートフォースアタック

引数-e uでログインユーザーのIDが取得できました。そのログインIDに対してWPScanは、ブルートフォースアタックを行うことができます。 「ブルートフォースアタック」とは、パスワードのリストに従って力ずくでパスワードを探し出す、というものです。しかもWPScanはマルチスレッドで実行できます。

$ ruby wpscan.rb --url www.example-wp.com --wordlist darkc0de.lst --threads 50

ここでdarkc0de.lstがパスワードのリストを書き込んだファイルです。特定のログインユーザーを指定して実行もできます。

$ ruby wpscan.rb --url www.example.com --wordlist darkc0de.lst --username admin

アップデート

  • データベースのアップデート テーマやプラグインの情報をアップデートします。
  $ ruby wpscan.rb --update
  
  • ソースコードのアップデートはGithubでインストールしていればgit pullでできます。
シェア
#内容発言者

配列からHashを作る

Jekyll - Pluginを作る

坂井和郎