
CVE-2026-78006 The Events Calendar <= 6.17.4 のPOC - 未認証のPHPオブジェクトインジェクションからリモートコード実行
CVE-2026-78006 の PoC The Events Calendar <= 6.17.4 - 未認証の PHP オブジェクトインジェクションからリモートコード実行へ
#CONTACT 何か質問があれば telegram まで : @soldout0O
私の活動を評価していただけるなら、USDT (TRC20): TQBA72kakjCZLnJt8fJYcD7dyQCEpzNtVN を通じてプロジェクトを支援することをご検討ください。
WordPress 用の The Events Calendar には、リモートコード実行へと連鎖させることが可能な未認証の PHP オブジェクトインジェクション脆弱性が存在します。
脆弱なコードパスには以下が関与します:
is_safe_widget_instance()enable_rendering_widget_copied()unserialize()do_blocks()文書化された条件下では、未認証の攻撃者がイベントコメントを通じて細工されたブロックマークアップを送り込み、コメントのモデレーションが行われる前に脆弱なデシリアライズパスへ到達することができます。
この脆弱性は、プラグインによるウィジェットインスタンス周辺の保護が不十分であるために存在します。
脆弱なフローは次のように要約できます:```text Unauthenticated Comment | v Pending Event Comment | v WordPress Moderation-Hash URL | v Unauthenticated Author Can View Own Pending Comment | v V2 Single-Event Template | v do_blocks() | v Injected Block Markup | v enable_rendering_widget_copied() | v Forged Integrity Attribute | v is_safe_widget_instance() | v PHP Magic Methods / Object Deserialization | v unserialize() | v PHP Object Injection | v Remote Code Execution
---
# 影響を受けるプラグイン
**プラグイン:** The Events Calendar
**脆弱性:** 認証不要の PHP オブジェクトインジェクションによる
リモートコード実行
**影響を受けるバージョン:** Wordfence のアドバイザリによると、
**6.17.4** 以前のすべてのバージョン。
> [!IMPORTANT]
> このリポジトリで現在公開されている研究用 PoC は、内部的に
> `<= 6.17.2` を対象としていると識別されています。
>
> 上記のバージョン範囲は Wordfence のアドバイザリ
> (`<= 6.17.4`) に従っています。デプロイメントをテストする前に、
> 必ずベンダーのアドバイザリで正確な脆弱バージョン/修正バージョンを確認してください。
---
# 根本原因
脆弱な動作は、ウィジェットの安全性チェックと PHP のオブジェクト
デシリアライズ動作との相互作用に関連しています。
関与する主要な関数は以下のとおりです:```text
is_safe_widget_instance()
enable_rendering_widget_copied()
セキュリティチェックは不十分である。なぜなら、PHP は意図された安全性検証が有効な保護を提供する前に、そのパース/デシリアライズ動作中にマジックメソッドを呼び出す可能性があるからである。
このチェーンはまた、プラグインが提供されたウィジェットインスタンスに対して有効な整合性値を生成することにも依存している。
この脆弱性の最も重要な特徴の一つは、攻撃者が既存の WordPress アカウントを必要としないことである。
この攻撃パスは、WordPress がモデレーションハッシュ URL を通じてユーザー自身の保留中のコメントを公開する方法を悪用する。
関連する条件は以下のとおりである:```text Comments enabled + Comments visible on events + Attacker can submit an event comment + V2 single-event template active
コメントを送信すると、WordPress はコメント投稿者が自分の保留中のコメントを閲覧できるようにする、認証不要の moderation-hash URL を提供することがあります。
これにより、細工されたブロックマークアップに対する認証不要の配信メカニズムが生まれます。
---
# 技術的説明
## 1. コメントの送信
攻撃者はイベントに関連付けられたコメントを送信します。
コメントは承認される必要はありません。
重要な特性は、WordPress が moderation-hash メカニズムを通じてコメントを公開できることです。
---
## 2. Moderation-Hash へのアクセス
WordPress はコメント投稿者に、自分の保留中のコメントを閲覧できる URL を提供します。
つまり、攻撃者はモデレーションを待つことなく、脆弱なレンダリングパスに到達できます。
概念的には:```text
POST Comment
|
v
Pending Comment
|
v
Moderation Hash
|
v
Unauthenticated Access
The Events Calendar の V2 単一イベントテンプレートは、イベント コンテンツとコメント関連の HTML を処理します。
関連する WordPress の処理パスは最終的に次に到達します:```text do_blocks()
これは重要である。なぜなら、レンダリングされたコンテンツに埋め込まれたブロックマークアップが
WordPress のブロックデータとして解釈されるからである。
---
## 4. 細工されたブロックデータ
PoC は、シリアライズされたウィジェットインスタンスを含む
レガシーウィジェットブロックを構築する。
研究実装では、エンコードされた
シリアライズ済みインスタンスと整合性属性を使用してブロックを構築する。
脆弱な経路は最終的にこのデータをウィジェットインスタンスとして処理する。
---
## 5. 整合性チェックのバイパス
プラグインの `enable_rendering_widget_copied()` の挙動は、攻撃者が制御する
ウィジェットデータに対して有効な整合性属性を生成するために悪用され得る。
これにより、悪意のあるウィジェットインスタンスが期待される
整合性チェックを通過し、脆弱な処理経路に到達できる。
---
## 6. 安全でないオブジェクト処理
脆弱な `is_safe_widget_instance()` 保護は、細工されたウィジェットインスタンスを通じて
供給されるオブジェクトに対して不十分である。
PHP のオブジェクト処理挙動は、デシリアライズ処理中にマジックメソッドを
呼び出す可能性がある。
その結果、悪用可能な PHP Object Injection プリミティブが生じる。
---
## 7. ガジェットチェーン
研究用 PoC は、デシリアライズ中に呼び出し可能な挙動を提供する
WordPress / The Events Calendar のオブジェクト
構造を構築する。
PoC は、コールバック指向のオブジェクトとシリアライズされたクラス構造を
用いて研究用ペイロードを構築する。
---
## 8. コード実行
最終的な影響は Remote Code Execution である。
PoC には研究用ウェブシェル段階と管理者作成
ロジックが含まれている。
安全な脆弱性検証においては、重要なセキュリティ境界は
脆弱なデシリアライズチェーンの実行成功によってすでに実証されている。
---
# なぜこの脆弱性が重大なのか
以下の組み合わせ:```text
Unauthenticated
+
Remote
+
PHP Object Injection
+
RCE
高い影響度の攻撃経路を生み出します。
攻撃者に必要なものは:
ではありません。
主な環境上の前提条件は、脆弱なイベント/コメント レンダリングパスに到達可能であることです。
リポジトリには Python ベースの研究用実装が含まれています。
アップロードされた PoC は、元の研究 ロジックをラップした非同期ランナーです。
使用しているもの:```text Python aiohttp rich
実装は、段階的なペイロード配信と検証を通じて脆弱性チェーンを実行する。
PoCのソースコードは、そのアーキテクチャを次のように説明している:```text
payload building
|
v
stage 1
|
v
verification
|
v
stage 2
研究用実装には以下の機能が含まれています:
PoC には Windows および Unix 系環境向けのプラットフォーム対応チェックも含まれています。
研究ツールは、個別の許可された WordPress インストールに対して使用できます。
概念的には:```text Single URL | v Target Discovery | v Event Discovery | v Comment Delivery | v Vulnerability Trigger | v Verification
単一ターゲットのワークフローは次のような場合に有用です:
* ローカルラボ
* ステージングシステム
* CVE再現
* ベンダーテスト
* 許可されたペネトレーションテスト
* セキュリティリサーチ
---
# URLリスト
非同期ランナーはURLのリストもサポートしています。
入力形式は次のとおりです:```text
one URL per line
例:```text https://lab-wordpress-01.example https://lab-wordpress-02.example https://lab-wordpress-03.example
空行とコメントは無視できます。
ランナーはターゲットをロードし、設定されたスレッド/並行数を使用して
それらを並行処理します。
---
# 並行処理
PoCは複数のターゲットの並行処理をサポートしています。
概念的には:```text
URL LIST
|
+-----------+-----------+
| | |
v v v
Worker 1 Worker 2 Worker 3
| | |
v v v
Target Target Target
| | |
+-----------+-----------+
|
v
Results
実装では、非同期セマフォを使用して 同時実行レベルを制御します。
ランナーで設定されているデフォルトの同時実行数は 20 です。
非同期ランナーは2つの結果ファイルを作成できます:```text shells.txt admins.txt
`shells.txt` には発見されたアップロード済みシェル URL が含まれます。
`admins.txt` には管理者の結果情報が次の形式で含まれます:```text
url | user | pass
[!WARNING] これらのファイルには極めて機密性の高い認証情報や ポストエクスプロイテーションの痕跡が含まれる可能性があります。
生成された結果ファイルを GitHub に公開しないでください。
公開脆弱性研究では、これらのファイルを Git
リポジトリの外に保管し、.gitignore に追加してください。
shells.txt admins.txt
For responsible vulnerability validation:
START
|
v
プラグインのバージョンを確認
|
v
前提条件を確認
|
v
コメントが有効になっていることを確認
|
v
イベントがコメントを公開していることを確認
|
v
ラボで再現
|
v
脆弱な動作を確認
|
v
証拠とログを記録
|
v
停止 / 開示```
Use the minimum level of interaction required to prove the finding.
---
# Important Prerequisites
The Wordfence advisory identifies the following important condition:
```text
コメントが有効になっている必要があります
および
コメントがイベントで表示される必要があります```
The attack relies on the ability of an unauthenticated commenter to view
their own pending comment through the WordPress moderation-hash URL.
If comments are disabled or the relevant event comment path is not
available, the documented unauthenticated delivery mechanism may not be
reachable.
---
# Platform Considerations
The PoC contains environment-detection functionality.
The research code attempts to identify information such as:
```text
オペレーティングシステム
現在の実行ユーザー
現在の作業ディレクトリ
ドキュメントルート
サーバーソフトウェア
HTTPホスト
PHP情報```