WordPress脆弱性診断は無料ツールのWPScanで

WPScanはWordPressの脆弱性チェックに有用なツールです。「WordPress脆弱性診断に使える無料ツール」です。活用すれば安心できる部分が増えます。

当然ですが検出できない部分もたくさんありますので注意が必要です。攻撃者は弱い部分を見つけて攻撃してきますので、WPScanで検出できない部分にも目を向けてセキュリティ対策を行う必要があります。

本記事では、私の診断の一部のチェックで使用しているWPScanについてまとめました。参考になればと思います。

目次

1. WordPress脆弱性診断は無料でできる?

WordPressというCMSは非常に有名ですので、脆弱性情報も出回りやすいです。しかし、「WordPressを使わない」という選択はしにくいもの。

WordPressを使うメリットとしてよく挙げられるのが、「わからないことがあれば、すぐに情報を手に入れられる」という点です。

つまり、その気になれば、ご自身のホームページの脆弱性もわかります。簡単な脆弱性診断であれば、無料でおこなうことが可能です。

「WordPress」という言葉が指す意味

本記事では、度々「WordPress」という言葉を使います。その言葉が持つ意味として、以下の3つを指すことがあります。

  • WordPressの公式ホームページ
  • WordPressの本体(ファイル)
  • WordPressを使って構築したホームページ

本記事では特に、「WordPressを使って構築したホームページ」を、「WordPress」と表現することがあります。

2. WordPress脆弱性診断に使えるWPScanとは

おそらくこの記事をご覧の方は、「WordPress脆弱性診断を、無料でおこないたい」という目的をお持ちの方が多いかと思います。

前述しました通り、WordPress脆弱性診断は、無料のツールでおこなえます。私も使っている無料ツールのWPScanを紹介します。

WordPressの無料診断ツールのWPScan

WPScanとは

WPScanとは、WordPressのセキュリティをチェックしてくれるツールです。どのような脆弱性が潜んでいるかを診断してくれます。

診断だけでなく、プロキシを指定できたり、ブルートフォースのパスワードファイル・リクエストのスレッド数を指定できたりします。

なお、WPScanはコマンドラインで動かすツールです。「コマンドライン」という用語が身近な人にとっては、WPScanは便利で、使いやすいツールです。しかし、そうでない人にとっては、扱うことがむずかしいツールかと思います。

WPScanの主な診断項目

WPScanの診断結果項目は、主に以下です。

  • 現在使っているWordPressのバージョン
  • 現在使っているプラグインのバージョン情報と、テーマのバージョン情報、それに紐づく既知の脆弱性情報
  • 情報漏えいに関する項目、パスワードチェック など

3. WPScanのインストール手順

ここからは、「WPScanをコマンドラインで動かす」手順を説明していきます。コマンドを扱えるようになると、できることがグッと増えていきます。

初心者の方向けの項目ではありませんが、これを機に興味を持っていただけたら幸いです。では早速、WPScanをインストールしていきましょう。

今回は、自身の端末のゲストOS(CentOS7)の環境に、WPScanをインストールしていきます。この手順はLinux環境を準備する必要があります。また個人端末を想定した手順です。インターネットに公開されたサーバでは行わないでください。なお、Kali Linuxには標準でWPScanがインストールされています。

必要なパッケージをインストール

WPScanをインストールする前に、まず下準備をしていきます。WPScanを動かすのに必要なパッケージをインストールしましょう。

# cd ~
# yum -y install gcc openssl-devel readline-devel libxml2 libxml2-devel libxslt libxslt-devel libcurl-devel patch git bzip2

Rubyのインストール

WPScanはRubyで動くツールですので、下準備として、Rubyをインストールしておきます。その前に、古いRubyがインストールされている場合は、削除しておきましょう。

# yum remove ruby

Rubyがインストールされていないことを確かめます。「-bash: ruby: コマンドが見つかりません」と返ってくればOKです。

# ruby -v

次に、「rbenv」をインストールします。rbenvは、Rubyのバージョンを管理しているものです。rbenvを使うと、Rubyのバージョンを簡単に切り替えられます。

# git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
# echo ‘export PATH=”$HOME/.rbenv/bin:$PATH”‘ >> ~/.bash_profile
# echo ‘eval “$(rbenv init -)”‘ >> ~/.bash_profile
# source ~/.bash_profile
# git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
# cd ~/.rbenv/plugins/ruby-build
# ./install.sh

rbenvがインストールされていることを確かめます。「rbenv 1.1.1-37-g1c772d5」などと返ってくればOKです。

# rbenv -v

Rubyをインストールするために、「インストール可能なRubyの最新バージョン」を確かめます。ちなみに、Rubyの最新バージョン(安定版)は、「2.5.1」です(2018年7月現在)。

# rbenv install -l

それでは、Ruby(バージョン:2.5.1)をインストールしていきます。

# rbenv install 2.5.1
# rbenv rehash
# rbenv global 2.5.1

Rubyがインストールされているかどうかを確かめます。「ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]」などと返ってくればOKです。

# ruby -v

WPScanのインストール

WPScanをインストールしていきます。

# mkdir -p /root/tools
# cd /root/tools
# git clone https://github.com/wpscanteam/wpscan.git
# cd wpscan
# gem install bundler && bundle install –without test

念のため、最新バージョンへのアップデートを行います。これでインストール作業は完了です。

# cd /root/tools/wpscan
# git pull
# ruby wpscan.rb –update

4. WPScanの簡単な使い方

クイックスキャンは以下のように実行します。

# cd /root/tools/wpscan
# ruby wpscan.rb –url 【WordPressのURL】

ユーザーIDが露出していないかどうかは、以下のコマンドでチェックできます。

# ruby wpscan.rb –url 【WordPressのURL】 –enumerate u

ちなみに、「クイックスキャン」と「ユーザーIDの露出チェック」を同時におこないたい場合は、以下のコマンドを使います。

# ruby /root/tools/wpscan/wpscan.rb –url 【WordPressのURL】 –enumerate u

その他に、パスワードリストをテキストファイルに並べて、辞書アタックも行えます。パスワード辞書は過去の流出情報や対象サイトで使用されるテキスト情報から生成した文字列などを使用して作成すると効果的です。

5. WPScanで検出できる脆弱性とできないリスク

WPScanはWordPressの脆弱性を調べる際に有用なツールです。しかも無料で入手できます。しかし、万能ではありません。見つけられないリスクも多くありますので注意が必要です。それだけに頼って他を見逃さないように注意したいです。

以下ではWPScanで検出できる脆弱性とできないリスクについてまとめました。

WPScanで検出できる脆弱性

WPScanで検出できる脆弱性についてみていきます。

WPScanの機能

WPScanの機能については、主に以下になります。

  • 侵入をおこなわない単純なスキャン
  • ログインユーザーリストの取得
  • インストールされているプラグインと、現在のバージョンの取得
  • インストールされているテーマと、現在のバージョンの取得

侵入をおこなわない単純なスキャン

WordPressに侵入せず、単純なスキャンをおこないます。スキャン結果としては、以下のような項目が返ってきます。

  • 現在のヘッダ情報
  • 現在公開しているファイル
  • 現在使っているWordPressのバージョン情報
現在のヘッダ情報

現在のヘッダ情報が返ってきます。「興味深いヘッダ」項目として情報が挙がります。セキュリティ用のパラメータを設定している場合でも表示されますので、念のためヘッダ情報を確かめておくとよいかもしれません。

現在公開しているファイル

現在公開されているファイルが表示されます。この項目で列挙されているファイルは、本来であれば、非公開にすることが望ましいです。

現在使っているWordPressのバージョン情報

現在使っているWordPressのバージョン情報が表示されます。最新バージョンでない場合、「脆弱性のタイトル」「参考URL」「対策バージョン」が、最大30個検出されます。

ログインユーザーリストの取得

WordPressのログインユーザーをすべて列挙します。「ID」「ユーザー名」「ユーザーID」を取得し、ログインユーザーをリスト化します。

「wp-login.php」ページに誰でもアクセスできる状態、なおかつユーザーIDがわかってしまう状態は、あまり望ましくありません。

ブルートフォース攻撃や辞書アタックをされ、パスワードを解読されてしまう可能性があるからです。

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

現在使っているプラグインの情報が表示されます。よほどマイナーなプラグインでなければ、現在のバージョン情報と併せて、「最終更新日」「プラグインの場所」「readme.txt」「最新バージョン情報」が表示されます。

脆弱性がある場合は、「脆弱性情報」も併せて表示されます。

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

現在使っているテーマの情報が表示されます。よほどマイナーなテーマでなければ、現在のバージョン情報と併せて、「テーマの場所」「CSSの場所」「テーマ名」「テーマの配布元」「説明」「制作者」「制作者URL」が表示されます。

脆弱性がある場合は、「脆弱性情報」も併せて表示されます。

WPScanで検出できないリスク

WPScanで検出できないリスクについてみていきます。

WPScanの検出範囲

WPScanではWordPress(本体、テーマ、プラグイン)を対象にしたスキャナーです。一部WebサーバやPHPの設定についても指摘してくれますが、あくまでもコンテンツの範囲で有効なツールです。ネットワークやOS、プラットフォーム、Webに露出してしまったシステムの弱点となる情報などのリスクは検出できません。

有名な脆弱性以外は検出できない

WPScanが検出する内容は、WordPress(本体、テーマ、プラグイン)の過去の脆弱性のデータになります。つまりデータのある有名な脆弱性が検出観点になります。

「SQLインジェクション」や、「クロスサイトスクリプティング(XSS)」の攻撃が通るかどうかをチェック項目としている場合も、過去のデータをもとに検出しているだけに過ぎません。自作やマイナーなプラグイン、テーマについては脆弱でも問題は検出されません。

運用面の問題点

例えば、バックアップファイルや問題のあるテストプログラムがホームページ公開場所に残っているなど、運用面で作りこむ脆弱性についても検出できません。

まとめ

WPScanはWordPressの診断に有用なツールです。活用すれば安心できる部分が増えます。一方で当然ですが検出できない部分もたくさんあります。攻撃者は弱い部分を見つけて攻撃してきますので、WPScanで検出できない部分にも目を向けてセキュリティ対策を行う必要があります。

特に運用面のミスには注意したいです。クローラに見つかりたくない攻撃者に有益な情報をrobots.txtに記載したり、ID情報やバックアップファイルの放置など致命的なミスにならないようにしたいです。

まずは、WordPressコンテンツ部分だけでなく、ネットワークやOS、プラットフォーム、Webに露出してしまったシステムの弱点となる情報など広い範囲でリスクを考え、弱い部分はもっと掘り下げて調べるなどして順に対策していければと思います。

私の診断は、まずは広い観点を得たい方におすすめです。私の診断については「WordPress、及びホームページの脆弱性診断サービス」まとめています。お試しいただければ幸いです。

500円:WordPressセキュリティ診断します 300件以上のホームページを診断してきたエンジニアにおまかせ