WPScanによる、WordPressの脆弱性診断の始め方

WordPress のセキュリティ診断ツール WPScan

近年、不正アクセスの増加により、セキュリティに対する関心も高まりつつあります。さくらインターネットでも Web改ざん検知サービス やSSLの契約数が伸びてきているようですが、それでもやはり不正アクセスは絶えないのが現状です。

狙われるのはメールパスワード、そして WordPress

さくらのレンタルサーバのサポート経験上、しばしば目にする不正アクセスは、メールパスワードの漏洩による大量メール送信です。しかし、これは比較的対策が簡単です。意識してパスワードの管理を行っていれば、それでリスクの9割以上はなくなると思います。

次に多いのがWordPressの不正アクセスです。WordPressは世界の1/3のサイトで使われており、便利で人気がある反面、非常に狙われやすいアプリケーションでもあります。

さくらのレンタルサーバのコラムにも セキュリティリスクが9割以上減るWordPressセキュリティの基本の基 を書きました。対策はこちらをご覧いただきたいです。

加えて、実際に脆弱性があるのかどうかについても確認しておきたいところです。しかし、ウェブサイトの脆弱性診断ってとても高価です。筆者が調べたところ、月額数万円以上というところが多いようです。

そうだ WPScan を使おう

WPScan とは、オープンソースの WordPress の脆弱性スキャンツールです。個人利用の範囲では、無料で利用できます。

  • CUI(コマンドラインと呼ばれる黒い画面)
  • レポートが全て英語

という点でちょっとハードルは高いですが、無料で基本的な脆弱性を洗い出してくれる優れたソフトです。

今回は、さくらのVPSに WPScan をインストールし、さくらのレンタルサーバ上のWordPressのセキュリティ診断を行いました。

さくらのVPSにWPScanをインストール

今回のシステム構成はこちらです。

  • さくらのVPS:メモリ512MB(初期費用0円、月額643円)
  • OS:Ubuntu 20.04

WPScan自体はそれほど重いプログラムではないため、さくらのVPSは最小構成の 512MB のプランで十分です。また、OSには、WPScanに関するたくさんのナレッジが存在する Ubuntu を使用しました。

まずは、おなじみのVPSのOSインストールから始めたいと思います。

さくらのVPSに Ubuntu 20.04 をインストール

まずは、VPSのコントロールパネルにログインしましょう。

次に、OSの再インストールです。

「標準OS」かつ、ここでは「Ubuntu 20.04 」を選択します。

インストールが実行され、コントロールパネルの画面左下に↓のような表示が出てくれば、あとは待つのみです。

完了したら、次はいよいよWPScanのインストールです。

コントロールパネルのコンソールからでも設定は可能ですが、利便性を考えますと、何らかのSSHクライアントを使った方が良いでしょう。

各種アップデート、WPScanのインストール

なにはともあれ、環境を整えるために、まずはUbuntu の各種バージョンアップを行います。

もちろん、この前に root(ubuntu)で直接SSHにログインできないようにするとか、SSHの接続ポートを変えるとか、アクセス制限を行うなど、セキュリティ対策は必須になると思いますが、ここでは省略します。(脆弱性診断のためのサーバに脆弱性があったら大変です。)

VPSにログインしたら、最初は各種アップデートとアップグレード

sudo apt-get update
sudo apt-get upgrade

次に、rubyなど、WPScanのインストールに必要な環境を整えます。

WPScanに必要な依存環境をインストール。そして、RubyGemリポジトリからWPScanをインストール

sudo apt install curl git libcurl4-openssl-dev make zlib1g-dev gawk g++ gcc libreadline6-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 autoconf libgdbm-dev libncurses5-dev automake libtool bison pkg-config ruby ruby-bundler ruby-dev -y

そして、RubyGemリポジトリからWPScanをインストールです。

sudo gem install wpscan

さぁ、これで準備が整いました。

WPScanを使ってみる

WPScan にも脆弱性診断のためのデータベースがあり、頻繁に更新が行われています。WPScanを使う前には、データベースの更新を行いましょう。古いデータベースでの診断になると、脆弱性の検知に至らない可能性もあるので、コマンド実行前は必ず更新をかけましょう。

wpscan --update

コマンドの実行

いよいよ、コマンドの実行です。
様々なコマンドの実行方法がありますが、とりあえずは一括したコマンドを実行してみましょう。

コマンド実行例)https://example.com/ をスキャンする場合

sudo wpscan --url https://example.com/ --enumerate

実行結果

コマンドを実行すると、まずはこのような画面が表示されます。

[!] の部分をチェックする

脆弱性で付け込まれやすい XML-RPC や WP-Cron の有効/無効や、WordPress自体のバージョン確認
脆弱性が確認されたプラグインやテーマなどをチェックしてくれますが、基本的には[!]と表示された部分だけチェックすれば良いようです。

また、[!] について「No themes Found.」などの「No 〇〇 Found.」と表示されるものについては問題ないので、特に対応は必要なく、そのままで問題ないようです。

他にも、WPScanには様々なオプションが使えますので、興味があればお試しください。

まとめ

一説によると、攻撃者は事前に WPScan を使って脆弱性を調べるようです。事実であれば、WPScanで脆弱性がない状態を目指すと、セキュリティインシデントのリスクをかなりの軽減できるのではないかと考えます。

転ばぬ先の杖の脆弱性チェック。さらに、定期的な世代バックアップもあれば、WordPressのサイト運用も安心度がぐっと上がると思いますので、よろしければご活用ください。