WordPressサイトを自分で運営する上で、気を遣っておきたいこと。それは「セキュリティ対策」です。

クラッキングの被害に合わないためにも、Webサイトの脆弱性を少しでも減らしておきたいところ。サイトを安全に保つためには、まず自サイトに潜む脆弱性を正確に把握することが重要です。

そこで本記事では、WordPressに特化した脆弱性スキャンツール「WPScan」の概要と使い方を解説します。


WordPressテーマ「GLUE」
WordPressテーマ「GLUE」
無料で高機能なWordPressテーマが手に入る。

WPScanとは?

WPScan

WPScanは、WordPressで構築されたWebサイトのセキュリティ問題を診断するための脆弱性スキャンツールです。

WordPress本体、インストールされているプラグイン、テーマにセキュリティ上の欠陥(脆弱性)がないかをチェックします。

セキュリティ専門家によって更新される、4万3000件以上のデータが登録された独自の脆弱性データベース(WPScan Vulnerability Database)を活用してスキャンを行う点が最大の特徴です。

用途や環境に合わせて、エンジニア向けの「ターミナル版(コマンド操作)」と、WordPress管理画面から操作できる「プラグイン版」の2種類が提供されています。

WPScan

WordPressサイトの効果的なセキュリティ対策については、こちらの記事にまとめていますので、よろしければどうぞ。

メリット

  • 精度の高いスキャンが可能:独自の巨大なデータベースと照合するため、既知の脆弱性を漏れなく検出できる
  • 幅広いチェック項目:バージョンの古いプラグインの検出だけでなく、パスワードの強度など、サイト全体のセキュリティリスクを点検できる
  • 初心者でも簡単に導入できる:WordPressやセキュリティの初心者でも、ボタンをクリックするだけで簡単にチェックできる
  • 環境に応じた使い分けが可能:本格的な侵入テストにはターミナル版、日常的なサイト管理にはプラグイン版といった使い分けができる

デメリット(注意点)

  • 一般向けのプラグインサポートが終了:プラグイン版は、企業向け有料プラン以外のサポートが終了。公式は、「Jetpack Protect」への移行を推奨
  • 無料枠に1日のスキャン制限がある:無料プランのAPIリクエストは、1日25リクエストまで。導入プラグインが多い場合、1日でスキャンが完了しない場合がある
  • 単独で有効化できない環境がある:WPScanのプラグインが有効化できない場合、システムを補うための別プラグイン(Action Schedulerなど)を追加する手間が発生する
  • ターミナル版は環境構築の手間がかかる:ターミナル版を利用する場合、RubyやLinuxなどの環境構築と、コマンドライン操作の知識が必要になる

WPScanのターミナル版とプラグイン版の比較

WPScanでは、OSのターミナル上で操作する「ターミナル版」と、WordPressにインストールして操作する「プラグイン版」の2つがあります。

項目 ターミナル版(CLI版) プラグイン版
スキャンの仕組み 外部から擬似的に攻撃・調査 WP内部から情報を読み取る
必要な環境構築 あり(Ruby環境やLinux環境など) なし(プラグインのみ)
必要な前提知識 コマンドラインの基本操作 WordPressの基本操作
API制限(無料枠) 1日25リクエストまで 1日25リクエストまで
主な用途 セキュリティ専門家による侵入テスト サイト運営者による自己診断

ターミナル版(CLI版)

ターミナル版は、コマンドライン(CUI)で操作するエンジニア向けのツールです。侵入テスト用OS(Kali Linuxなど)には標準で搭載されていることも多く、WPScanの「本来の姿」と言えます。

  • 操作方法:wpscan –url https://example.com のようなコマンドを入力して実行
  • 主な用途:外部のサーバーから複数のサイトを一括でスキャンしたり、詳細なオプションを指定して高度な脆弱性診断を行ったりする場合に使用
  • 特徴:PCや外部サーバーにRubyなどの実行環境を構築する必要がある。操作にはコマンドラインの知識が不可欠

プラグイン版

プラグイン版は、WordPressの管理画面からボタン操作だけでスキャンを実行できるツールです。ターミナルの操作に慣れていないサイト運営者でも、導入のハードルが低いのが特徴です。

  • 操作方法:プラグインのレポート画面から「Run All」ボタンをクリックする
  • 主な用途:自身が管理しているサイトのセキュリティ状態を、定期的に手軽にチェックしたい場合に使用
  • 特徴:スキャン結果をダッシュボード上で確認でき、視覚的に分かりやすいのがメリット。ただし、スキャンを実行するためには公式サイトで発行される「APIトークン」の設定が必要

現状と注意点

WPScanプラグイン版を利用するにあたり、事前に知っておくべき現状を整理します。

  • 一般ユーザー向けのサポートは終了傾向
    現在、WPScanの公式プラグインは企業向けのエンタープライズ版に注力しています。それに伴い、一般ユーザー向けのサポートは終了しています。
  • 公式は代替として「Jetpack Protect」を推奨(※)
    一般のサイト運営者に向けては、手軽に利用できる公式プラグイン「Jetpack Protect」への移行が推奨されています。
  • ターミナル版は引き続き利用可能
    移行の案内は「プラグイン版」のみが対象です。外部からスキャンを行う「ターミナル版(CLI版)」は、セキュリティ専門家や研究者向けに現在も継続して提供されています。

※WPScanとJetpack Protectは、どちらもWordPress.comを提供しているAutomattic社が運営。

本記事ではWPScanプラグイン版の検証をメインに行いますが、これから手軽にセキュリティ対策を始めたい場合は、Jetpack Protectの導入から検討するのも一つの方法です。

WPScanの料金プラン(無料枠・有料版)

WPScanの利用料金は、現在以下のようになっています。

  • 無料プラン:1日25リクエストまで(無料)
  • 有料プラン(エンタープライズ):個別見積もり(要問い合わせ)

以前は固定の料金プランが公開されていましたが、現在は企業向けのカスタムプランへと移行しており、公式サイトに具体的な料金は掲載されていません。

そのため、一般のサイト運営者が利用する場合は、「1日25リクエストの無料枠の範囲内で運用する」のが基本となります。

スキャンはWordPress本体(1消費)に加え、インストールされているテーマとプラグインの数だけリクエストを消費します。もし導入数が多く、1日の無料枠で全項目のスキャンが完了しない場合は、「Jetpack Protect」など別のスキャンツールの利用を検討してください。

WPScanの設定と使い方

APIトークンの取得手順

WPScanを利用するには、はじめにAPIトークンを取得する必要があります。公式サイトにアクセスしたら、スクロールして「Start for free」をクリックします。

WPScanのAPIトークン取得方法1

アカウント作成画面が表示されますので、お名前・メールアドレス・パスワードを入力して完了します。その後、ログインすると、APIトークンが表示されますので、コピーしておきます。

WPScanのAPIトークン取得方法2

プラグインのインストール方法

  1. WordPress管理画面の「プラグイン」>「プラグインを追加」を開く
  2. 検索窓に「WPScan」と入力
  3. 「WPScan」を「今すぐインストール」し、「有効化」をクリック

「重大なエラー」が出た場合の対処法

WPScanを有効化した際、まれに「重大なエラーが発生しました」という表示や、「サイトで技術的な問題が発生しています」といった内容のメールが届くことがあります。

WPScan有効時の重大なエラー1

WPScan有効時の重大なエラー2

これはデータベースの処理エラーが原因です。以下の手順で解決できます。

  1. メール内の「リカバリーモード」、サーバーのファイルマネージャー、FTPソフトのいずれかWPScanを無効化
  2. プラグインの新規追加から「Action Scheduler」を検索し、インストール・有効化
  3. 再度WPScanを有効化

APIの入力と設定方法

WordPressダッシュボードの左側の「WPScan」>「設定」>「WP API Token」へ、事前にコピーしておいたAPIトークンを貼り付けます。

WPScanの設定方法1

スクロールすると、スキャンの設定を行うことができます。

WPScanの設定方法2

  • Automated Scanning(自動スキャン頻度):「毎日(Daily)」を選択するのがおすすめ。スキャンはWordPress本体で1回、インストールされているテーマごとに1回、プラグインごとに1回消費される
  • Scanning Time(スキャン実行時間):スキャンはページの表示速度に影響するため、訪問者の少ない深夜〜早朝(例:03:00 や 04:00 など)がおすすめ。
  • セキュリティチェックを無効化:無効化するとセキュリティチェックができないため、オフのままが推奨
  • Ignore Items(無視する項目):特定のWordPressコア、プラグイン、テーマをスキャン対象から除外するための項目。チェックを入れず、すべてをスキャン対象にしておく方が安全

脆弱性スキャンの実行と結果の見方

脆弱性をスキャンするには、WordPressダッシュボード > WPScan > レポートから「Run All」をクリックします。

WPScanでのスキャン方法1

今回は、以下の環境でスキャンしましたが、1〜2分で完了しました。

  • WordPress本体:1
  • プラグイン:3
  • テーマ:4
  • WPScan指定のセキュリティ項目:8

WPScanでのスキャン方法2

画面の右側中央で、消費されたAPIリクエストや、リセットされる時間が表示されます。今回は、APIリクエストが8消費されました。17時間後にリセットされ、また25まで使えるようになります。

WPScanでのスキャン方法3

もし、脆弱性が発見された場合は、画面右上に「Some vulnerabilities were found(いくつかの脆弱性が発見されました)」と表示されます。

WPScanでのスキャン方法4

また、レポートの中央をスクロールして確認すると、赤い「!」が付いた該当箇所も表示されます。

WPScanでのスキャン方法5

今回は、外部連携機能のXML-RPCが一部しか無効化されていないということでした。

  • XML-RPC Enabled(XML-RPCが有効 )
  • The XML-RPC interface is partly disabled, but still allows unauthenticated requests.(XML-RPCインターフェースは一部無効化されていますが、認証なしのリクエストは依然として許可されています)
  • low Severity(深刻度:低)

セキュリティプラグインなどで、XML-RPCを完全に無効化すると、右上に「既知の脆弱性は発見されませんでした」と表示されました。

WPScanでのスキャン方法6

さらに、レポート中央を確認すると、緑色のチェックが表示され、脆弱性に問題がないことが確認できます。

WPScanでのスキャン方法7

これで毎日のようにスキャンできますので、セキュリティ設定のし忘れも防ぎやすくなります。

よくある質問(FAQ)

Q. 「no wpscan api token given」と表示されてスキャンできない

A. 公式サイトでAPIトークンを取得し、設定画面に入力してください。

Q. プラグインを有効化したら「重大なエラー」が発生した

A. 「重大なエラーが発生しました」というエラーの場合、システム側のデータベース不具合の可能性があります。「Action Scheduler」というプラグインを追加でインストールすることで解決できる場合があります。

Q. 一般ユーザーへ「Jetpack Protect」の移行が推奨されているのはなぜ?

A. プラグイン版WPScanは一般ユーザー向けのサポートが終了のため、より設定が簡単な公式プラグインとして「Jetpack Protect」を案内されています。

どちらも裏側で同じ脆弱性データベースを利用しているため、スキャンの精度や安全性に違いはありません。

Q. ターミナル版(CLI版)とプラグイン版で、脆弱性の検出精度に違いはある?

A. どちらも「4万3000件以上のWPScan独自データベース」を照合に使うため、検出精度自体に違いはありません。

ただし、ターミナル版は外部からの侵入テスト向け、プラグイン版は内部からの設定確認向けと、スキャンの仕組みや用途が異なります。

まとめ

本記事では、WordPress特化の脆弱性スキャナー「WPScan」について、プラグイン版を中心とした導入手順やトラブルシューティングを検証・解説しました。

WPScanプラグイン版は、セキュリティの診断項目を細かく確認したい方にとっては間違いなく有用なツールです。一方で、「より手間をかけずに安全性を保ちたい」という場合は、公式が案内するJetpack Protectを利用するのも選択肢となります。

ご自身のサイト環境や運用スタイルに合わせてツールを選択し、継続的な脆弱性対策を行っていきましょう。

自分のサイトで"記事"が売れる
WordPressテーマ
WordPressテーマ「PANDORA」
レイアウト自由自在なブログ・メディアを構築。
WordPressテーマ「VOYAGE」
読まれるメディアで記事を販売しよう。
WordPressテーマ「HARVES」
ネットショップで記事も販売できる。
WordPressテーマ「BLAZE」
モノ・サービスを売り続けるサイト。