私たちのサイトでは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
でできます。