WordPressスキャン

WordPressスキャンについて

サーバ上にインストールされているWordPressコア、プラグイン、テーマの一覧を自動取得し、脆弱性を検知できます。 WordPress関連だけで2万件以上の脆弱性情報を持つwpscan.comの脆弱性データベースを利用します。

本機能は、まずWordPressが稼働するOS上にてwpコマンドを実行し、WordPressコア、プラグイン、テーマの完全なバージョンリストを取得します。この完全なリストを元に検知するため、ネットワーク型のスキャナ(シグニチャから推測する方式)よりも高精度の検知が可能です。また、擬似攻撃は行わない非破壊型スキャンのため本番サイトに影響を及ぼしません。

設定方法

WordPressのスキャンには以下の設定が必要です。

  • wpscan.comにてAPI Tokenを発行
  • FutureVulsにAPI Tokenを登録
  • スキャナの設定
  • スキャン対象サーバ上のsudoersの設定
  • スキャン実施

それぞれについて説明します。

Tokenの取得とFutureVulsへの登録

まず、wpscan.comより登録して、API Tokenを取得してください。

次にFutureVulsを開き「グループ設定>外部連携>WordPress Vulnerability Database API」に先程発行したAPI Tokenを登録します。

スキャナの設定

/opt/vuls-saas/config.tomlを編集します。

この設定では、OSパッケージとWordPressの両方がスキャンされます。

[servers]

  [servers.dev]
    user = "vuls-saas"
    host = "localhost"
    port = "local"
    scanMode = ["fast-root"]
    [servers.dev.uuids]
      dev = "xxxx-xxxx-xxxx-xxxx"

  [servers.dev.wordpress]
    cmdPath = "/usr/local/bin/wp"
    osUser = "wordpress"
    docRoot = "/home/kusanagi/wp/DocumentRoot/"
  • cmdPathにはwpコマンドの絶対パスを指定してください
  • osUserには、wpコマンドが実行可能なユーザを指定します
  • docRootにはWordPressのDocumentRootを指定します

スキャン対象サーバ上のsudoersの設定

Vulsスキャナはスキャン対象サーバ上でsudo -u user -iしてwpコマンドをパスワードなしで実行できなければなりません。 WordPressが稼働するスキャン対象サーバ上の/etc/sudoers.d/vuls-saasに以下のコマンドを追加で設定してください。 wpコマンド実行可能なユーザやパスが異なる場合は環境に合わせて適宜修正してください。

/bin/bash -c /usr/local/bin/wp cli *, /bin/bash -c /usr/local/bin/wp core *, /bin/bash -c /usr/local/bin/wp theme *, /bin/bash -c /usr/local/bin/wp plugin *

スキャン実施

WordPressのみをスキャンする場合

/opt/vuls-saas/config.tomlを編集し、scanModules = ["wordpress"]を指定します。 この設定では、OSパッケージはスキャンされません。

[servers]

  [servers.dev]
    user = "vuls-saas"
    host = "localhost"
    port = "local"
    scanModules = ["wordpress"]
    [servers.dev.uuids]
      dev = "xxxx-xxxx-xxxx-xxxx"

  [servers.dev.wordpress]
    cmdPath = "/usr/local/bin/wp"
    osUser = "wordpress"
    docRoot = "/home/kusanagi/wp/DocumentRoot/"

複数のWordPressサイトをスキャンする場合

/opt/vuls-saas/config.tomlを以下のように編集します。

[servers]

  [servers.dev]
    user = "vuls-saas"
    host = "localhost"
    port = "local"
    scanModules = ["wordpress"]
    [servers.dev.uuids]
      dev = "xxxx-xxxx-xxxx-xxxx"

  [servers.dev.wordpress]
    cmdPath = "/usr/local/bin/wp"
    osUser = "wordpress"
    docRoot = "/home/kusanagi/wp/DocumentRoot/"

  ## config.toml内で重複しない名前を付ける(今回はYYYYとした)
  [servers.YYYY]
    user = "vuls-saas"
    host = "localhost"
    port = "local"
    scanModules = ["wordpress"]
    ## UUIDが他と重複しないように変更する
    [servers.YYYY.uuids]
      YYYY = "yyyy-yyyy-yyy-yyyy"

  ## 上で名付けたYYYYに変更する
  [servers.YYYY.wordpress]
    cmdPath = "/usr/local/bin/wp"
    osUser = "wordpress"
    docRoot = "/home/kusanagi/wp/DocumentRoot2/"

OSパッケージとWordPressを別サーバとして管理したい場合

FutureVuls上の別サーバとして管理したい場合は以下のように/opt/vuls-saas/config.tomlを編集し、サーバ定義を分割します。

[servers]

  # devはFutureVuls上でOSパッケージ脆弱性管理用
  [servers.dev]
    user = "vuls-saas"
    host = "localhost"
    port = "local"
    [servers.dev.uuids]
      dev = "xxxx-xxxx-xxxx-xxxx"

  # ZZZZはWordPress用
  [servers.ZZZZ]
    user = "vuls-saas"
    host = "localhost"
    port = "local"
    scanModules = ["wordpress"]
    [servers.ZZZZ.uuids]
      ZZZZ = "zzzz-zzzz-zzzz-zzzz"

  [servers.ZZZZ.wordpress]
    cmdPath = "/usr/local/bin/wp"
    osUser = "wordpress"
    docRoot = "/home/kusanagi/wp/DocumentRoot/"