テクノロジー

WPScanとElasticStackを利用して、WPサイトの脆弱性を検知する

はじめに

マイナビではマネージドなWordPress基盤「SMEW」が社内向けに提供されており、WordPressを使ったサイトの多くがSMEW上で稼働しています。

ご存知の通り、WordPressは多くの脆弱性が報告されます。脆弱性に迅速に対応できるよう、WPScanとElastic Stackを使って、SMEW上で稼働している各サイトのWordPress脆弱性を自動でスキャンするシステムを開発しました。本記事で簡単に紹介します。

▼SMEWについての詳細はこちらをご覧ください

マイナビで内製している独自サービスSMEWとは?構成を紹介します!

WPScanとは

オープンソースのWordPressの脆弱性スキャンツールです。

WPScanを利用してみる

WPScanは Kali Linux に標準で入っています。

wpscan --url "https://hogehoge/" --api-token "{token}" -format json

オプション

  • url
    • サイトのURL
  • api-token
    • WPScanにユーザ登録した時に発行されるトークン
  • format
    • 出力結果のフォーマット

実行結果(一部抜粋)

スキャン結果の「vulnerabilities」のフィールドに、脆弱性名、CVE、Fixのバージョン等の詳細情報が出力されます。
下記、スキャン結果から、All in One SEO Packというプラグインに脆弱性があることがわかります。

▼スキャン結果

{
    "main_theme": null,
    "plugins": {
      "all-in-one-seo-pack": {
        "confidence": 30,
        "confirmed_by": {},
        "directory_listing": null,
        "error_log_url": null,
        "found_by": "Comment (Passive Detection)",
        "interesting_entries": [],
        "last_updated": "2022-03-30T17:01:00.000Z",
        "latest_version": "4.1.9.4",
        "location": "https://hogehoge/webroot/plugins/all-in-one-seo-pack/",
        "outdated": true,
        "readme_url": null,
        "slug": "all-in-one-seo-pack",
        "version": {
          "confidence": 60,
          "confirmed_by": {},
          "found_by": "Comment (Passive Detection)",
          "interesting_entries": [
            "https://hogehoge/, Match: 'All in One SEO Pack 2.6.1 by'"
          ],
          "number": "2.6.1"
        },
        "vulnerabilities": [
          {
            "fixed_in": "3.6.2",
            "references": {
              "cve": [
                "2020-35946"
              ],
              "url": [
                "https://www.wordfence.com/blog/2020/07/2-million-users-affected-by-vulnerability-in-all-in-one-seo-pack/"
              ],
              "wpvulndb": [
                "528fff6c-54fe-4812-9b08-8c4e47350c83"
              ],
              "youtube": [
                "https://www.youtube.com/watch?v=2fqMM6HRV5s"
              ]
            },
            "title": "All in One SEO Pack < 3.6.2 - Authenticated Stored Cross-Site Scripting"
          }
        ]
      }
    },
    "requests_done": 186,
    "start_memory": 52584448,
    "start_time": 1648701772,
    "stop_time": 1648701796,
    "target_ip": "198.51.100.0",
    "target_url": "https://hogehoge/",
    "used_memory": 219262976,
    "used_memory_humanised": "209.105 MB"
                -略-
}

Elastic Stackとは

Elasticsearch、Kibana、Beats、Logstashの総称。
ログをリアルタイムに検索、分析、可視化することができます。

アドカレ1.jpg

アドカレ1.jpg

Kibanaのアラート機能を利用して、特定の条件のログがあったら、SLACK等に通知できます。

アドカレ1.jpg

自動化の取り組み

処理の流れ

  1. SMEW上で管理されたサイト一覧を取得し、DynamoDBに格納する。
  2. スキャン対象キューに入れる
  3. ECSTaskを起動し、スキャンを実行する。
  4. 脆弱性があるログを検知したら、Slackに通知する。

構成図

アドカレ1.jpg

通知結果(例)

アドカレ1.jpg

まとめ

今後もSMEWだけでなく、マイナビの全てのサイトのセキュリティを高めるための技術開発に取り組んでいきます。

※本記事は2022年12月時点の内容です。

テクノロジーの記事一覧
タグ一覧
TOPへ戻る