サーバ上にインストールされているWordPressコア、プラグイン、テーマの一覧を自動取得し、脆弱性を検知できます。 WordPress関連だけで2万件以上の脆弱性情報を持つ「wpscan.com」の脆弱性データベースを利用します。
本機能は、まず WordPress が稼働する OS 上にて Vuls スキャナが wp
コマンドを実行し、WordPress コア、プラグイン、テーマの完全なバージョンリストを取得します。完全なリストを元に検知するため、ネットワーク型のスキャナ(シグニチャから推測する方式)よりも高精度の検知が可能です。また、擬似攻撃は行わない非破壊型スキャンのため本番サイトに影響を及ぼしません。
本機能は Linux 上にセットアップされた WordPress が対象です
Linux スキャナバージョン v0.15.5 以上が必要です。バージョン確認方法は「こちら」
WordPress のスキャンには以下の設定が必要です。
それぞれについて説明します。
まず、「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/"
wp
コマンドの絶対パスを指定してください
which wp
Vuls スキャナは、スキャン対象サーバ上で sudo -u <user> -i
して wp
コマンドをパスワードなしで実行できなければなりません。
WordPress が稼働するスキャン対象サーバ上の /etc/sudoers.d/vuls-saas
に以下の設定を追記してください。
wp
コマンド実行可能なユーザやパスが異なる場合は、環境に合わせて適宜修正してください。
<user> ALL=(ALL) NOPASSWD:SETENV: /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 *
Vulsスキャナのアップデート時に /etc/sudoers.d/vuls-saas
が上書きされ、次回スキャン時にエラーとなる可能性があります。Vulsスキャナのアップデート後に再度 /etc/sudoers.d/vuls-saas
を編集する必要があるのでご注意下さい。
/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/"
/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/"
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/"