
CVE-2026-93300のPythonによる概念実証コード。WordPressプラグイン「EventON Subscriber」における未認証のSQLインジェクション脆弱性を対象とし、AJAXハンドラをフィンガープリントし、タイムベースのオラクルを用いてデータベースのデータを抽出します。
CVE-2026-93300 のPythonによる概念実証(PoC): EventON - Subscriber WordPressプラグインの email パラメータを介した未認証SQLインジェクション(Wordfence、CVSS 7.5 High)。
| CVE | CVE-2026-93300 |
| プラグイン | EventON - Subscriber (eventon-subscriber) |
| 影響を受けるバージョン | 1.4.5 以前のすべてのバージョン |
| 修正バージョン | 公開なし(2026-10時点) |
| ベクター | POST /wp-admin/admin-ajax.php、action=evosub_new_subscriber、パラメータ email |
| 認証 | 不要(未認証) |
| CWE | CWE-89 SQLインジェクション |
購読フォームのAJAXハンドラ(evosub_new_subscriber、wp_ajax_nopriv_ で登録され、assets/evosub_script.js の公開フロントエンドフォームから到達可能)は、ユーザーが指定した email の値を使用して既存のSQLクエリを構築する際に、$wpdb->prepare() や適切なエスケープを行っていません。この値はエスケープされずにクエリに到達するため、攻撃者は文字列リテラルから抜け出し、クエリを追加・変更してデータベースから任意のデータを読み取ることができます。
evosub_script.js のクライアント側のメール正規表現はブラウザ内での唯一の形式チェックであり、サーバー側の保護は提供しません。
# 1. Detect only (fingerprint handler, find working injection oracle)
python3 cve_2026_93300.py --url https://target.example --mode check
# 2. Dump wp_users (login / email / password hash)
python3 cve_2026_93300.py --url https://target.example --mode users --prefix wp_
# 3. Extract any scalar query result
python3 cve_2026_93300.py --url https://target.example --mode sql \
--sql "SELECT option_value FROM wp_options WHERE option_name='admin_email'"
| オプション | デフォルト | 説明 |
|---|---|---|
--mode | check | check / users / sql |
--action | evosub_new_subscriber | テスト対象の AJAX アクション |
--param | email | 注入するパラメータ |
--prefix | wp_ | WordPress のテーブルプレフィックス |
--sql | — | --mode sql 用のスカラー SELECT |
--delay | 2.0 | 時間ベースオラクル用の SLEEP() 秒数 |
--timeout | 25 | HTTP タイムアウト |
--max-id | 15 | スキャンする最大ユーザー ID |
--proxy / --insecure / --ua | — | HTTP プロキシ / TLS 検証のスキップ / カスタム UA |
action=evosub_new_subscriber を未登録のアクション(0 / HTTP 400)と比較し、ハンドラが存在して動作していることを確認します。'、"、\)→ SQL エラーが反映される場合(WP_DEBUG)、エラーベースのオラクルを使用します(最速、1 ビットあたり 1 リクエスト);SLEEP() を用いた UNION のカラム数ブルートフォース → union-time オラクル(プローブごとに 1 回の評価、行ごとの遅延なし);;SELECT SLEEP(...))→ ドライバが複数ステートメントを許可する場合、stacked-time オラクル;OR/AND/paren/concat SLEEP)→ template-time オラクルのフォールバック。1=1 → true および 1=0 → false(繰り返し)と応答しなければならず、これにより低速・不安定なターゲットからの誤検知を除外します。LENGTH() および ASCII(SUBSTRING(...)) に対する二分探索(1 文字あたり 7 リクエスト)。--mode check は、データアクセスを証明するために user_login@USER() の健全性抽出で終了します。
evo-subscriber 投稿タイプに poc*@example.invalid エントリがいくつか作成される場合があります。これらは Events → All Subscribers に表示され、ゴミ箱に移動できます。email を検証している場合、すべてのプローブは同一の挙動を示し、ツールは 脆弱ではない / 入力が検証済み と報告します。admin-ajax.php が壊れているターゲット(ベースラインで致命的エラー)は、異常として報告され中止されます。SELECT 以外のクエリ形式(INSERT/UPDATE コンテキスト)は検出されますが、有効な時間オラクルが存在しない場合があります。--delay を 1.0 以上に保ってください。非常に小さい遅延は、高レイテンシの回線で偽陰性を生じさせます。email(およびすべてのリクエスト入力)を $wpdb->prepare() / esc_sql() で処理してください。サーバー側で is_email() を用いて検証してください。email の値に SQL メタ文字('、"、\、--、;、UNION)を含む未認証の admin-ajax.php リクエストをブロックしてください。許可されたセキュリティテストおよび教育目的のみを対象としています。コンピュータシステムへの不正アクセスは違法です。適用されるすべての法律を遵守する責任はあなたにあります。