
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情報```
These values are useful for controlled research and understanding the
impact of successful code execution.
---
# Payload Architecture
The serialized payload contains multiple nested PHP objects.
The research implementation builds structures associated with:
```text
Tribe__Utils__Callback
Tribe\Utils\Element_Classes
stdClass```
The serialized structures are then embedded into a WordPress legacy
widget block.
Conceptually:
```text
PHPオブジェクトグラフ
|
v
シリアライズされたオブジェクト
|
v
Base64エンコーディング
|
v
レガシーウィジェットブロック
|
v
WordPress do_blocks()
|
v
The Events Calendar
|
v
オブジェクトのデシリアライズ```
---
# Stage 1
The research PoC's first stage is designed to verify that the injected
object graph reaches the intended execution path.
The stage contains multiple controlled callbacks used to determine
whether code execution or environment disclosure occurred.
The implementation includes research checks such as:
```text
カレントワーキングディレクトリ
実行ユーザー
ドキュメントルート
サーバー情報
PHP情報```
---
# Stage 2
If the initial stage does not directly establish the required persistent
artifact location, the PoC contains a second-stage mechanism that
attempts alternative locations.
The research implementation specifically considers WordPress upload
locations and document-root-related paths.
---
# Administrator Stage
The PoC also contains administrator creation functionality.
The research implementation can construct a WordPress administrator
through the vulnerable execution path.
This demonstrates that successful exploitation can result in both:
```text
リモートコード実行
+
永続的なWordPress管理者アクセス```
Administrator credentials generated during research should never be
committed to source control.
---
# Webshell Stage
The PoC contains a webshell stage intended for controlled research.
The webshell is packaged as a WordPress plugin ZIP and deployed through
an authenticated WordPress administrator session established by the
chain.
The research implementation uses a secret token to gate shell requests.
> [!CAUTION]
> The webshell is an exploitation artifact.
>
> Use it only in an isolated laboratory or during an explicitly
> authorized penetration test, and remove it immediately after testing.
---
# Verification
Successful vulnerability validation can be based on evidence such as:
```text
プラグインバージョン
+
到達可能なイベント
+
コメント配信
+
モデレーション用ハッシュのレンダリング
+
脆弱なウィジェット処理
+
制御された実行の証拠```
For responsible disclosure, collect only the minimum evidence required.
---
# Impact
Successful exploitation may allow an unauthenticated attacker to:
* Execute arbitrary PHP code
* Execute commands in the context of the web server
* Read sensitive application information
* Access environment information
* Modify WordPress files
* Create administrator accounts
* Install malicious plugins
* Establish persistence
* Potentially compromise the underlying server
The ultimate impact depends on the privileges of the PHP process and
the hosting environment.
---
# Detection
Defenders should monitor for unusual activity involving:
* Event comment submissions
* Pending comments followed by moderation-hash access
* Suspicious block markup
* Legacy widget blocks
* Unexpected widget instance data
* Unexpected serialized PHP objects
* PHP execution triggered during event rendering
* Unexpected plugin installations
* New administrator accounts
* Unexpected PHP files
* Suspicious files under `wp-content/uploads/`
A compromise investigation should correlate:
```text
Webサーバーログ
+
WordPressログ
+
データベースアクティビティ
+
ファイル整合性
+
管理者アカウント```
---
# Indicators of Compromise
Potential indicators include:
```text
予期しない管理者アカウント
予期しないプラグインディレクトリ
予期しないPHPファイル
wp-content/uploads/ 内の不審なファイル
予期しないイベントコメント
異常なモデレーション用ハッシュリクエスト
予期しないウィジェット関連リクエスト
予期しないPHP実行```
Because individual indicators can have legitimate explanations, they
should be investigated in context.
---
# Mitigation
The primary mitigation is to update **The Events Calendar** to a fixed
version provided by the vendor.
Until the plugin is updated, defenders should consider:
* Disabling comments where operationally acceptable
* Restricting public event comments
* Monitoring event comment traffic
* Reviewing recently created administrator accounts
* Monitoring plugin installation activity
* Performing file-integrity checks
* Reviewing web-server logs
* Reviewing WordPress logs
If compromise is suspected, treat the system as potentially compromised
rather than merely vulnerable.
---
# Incident Response
If exploitation is suspected:
1. Preserve relevant logs.
2. Identify suspicious requests.
3. Review administrator accounts.
4. Review installed plugins.
5. Inspect recently modified PHP files.
6. Inspect `wp-content/uploads/`.
7. Rotate WordPress credentials.
8. Rotate hosting/server credentials where appropriate.
9. Remove unauthorized persistence.
10. Restore trusted application files when necessary.
11. Upgrade the vulnerable plugin.
12. Continue monitoring for re-entry.
---
# Responsible Disclosure
When reporting this vulnerability or derivative research:
* Clearly identify the affected plugin.
* Include the affected version.
* Include the fixed version when confirmed.
* Explain the unauthenticated attack path.
* Document the required prerequisites.
* Provide reproducible evidence in a controlled environment.
* Avoid publishing victim data.
* Never publish generated administrator credentials.
* Never publish live webshell URLs.
---
# Research Limitations
A vulnerable plugin version alone does not guarantee successful
exploitation.
The attack path can be affected by:
* WordPress configuration
* Comment settings
* Event visibility
* Template configuration
* Security plugins
* Web Application Firewalls
* Reverse proxies
* PHP configuration
* Hosting permissions
* Object caching
* Network filtering
Therefore, version fingerprinting should be treated as an initial
indicator rather than definitive proof of exploitability.
---
# Repository Safety
Do not commit:
```text
shells.txt
admins.txt
実際のターゲットURL
生成された認証情報
webshellファイル
キャプチャしたphpinfo出力
データベースダンプ
サーバー環境情報
非公開のテストデータ```
Use synthetic laboratory targets when creating screenshots,
demonstrations, or documentation.
---
# Recommended Repository Structure
```text
the-events-calendar-poc/
│
├── poc.py
├── README.md
├── LICENSE
├── .gitignore
│
├── screenshots/
│ └── .gitkeep
│
└── docs/
└── research-notes.md```
Keep runtime artifacts outside the repository.
---
# Technical Summary
```text
The Events Calendar
|
v
V2 単一イベントテンプレート
|
v
WordPress do_blocks()
|
v
レガシーウィジェットブロック
|
v
偽造ウィジェットインスタンス
|
v
有効な整合性属性
|
v
is_safe_widget_instance()
|
v
PHP オブジェクトデシリアライゼーション
|
v
マジックメソッド呼び出し
|
v
PHP オブジェクトインジェクション
|
v
リモートコード実行```
---
# Severity
**Impact:** Remote Code Execution
**Authentication:** Not required
**Attack Vector:** Remote
**Primary Component:** The Events Calendar
**Primary Vulnerable Functions:**
```text
is_safe_widget_instance()
enable_rendering_widget_copied()```
**Delivery Mechanism:**
```text
イベントコメント
+
WordPress moderation-hash URL
+
V2 イベントレンダリング```
---
# Key Takeaway
The important aspect of this vulnerability is not simply that the plugin
uses PHP serialization.
The complete unauthenticated attack path is enabled by the combination
of:
```text
不十分なウィジェット検証
+
PHPマジックメソッドの挙動
+
偽造されたintegrity属性
+
do_blocks()
+
公開イベントコメント
+
Moderation-hashアクセス```
This combination creates an unauthenticated path to PHP Object Injection
and Remote Code Execution.
---
# Credits
Vulnerability details and affected-version information:
**Wordfence Threat Intelligence**
Research PoC:
**The Events Calendar PHP Object Injection / RCE research implementation**
---
# References
* Wordfence Threat Intelligence — The Events Calendar PHP Object
Injection / RCE vulnerability
* The Events Calendar
* WordPress Core
* WordPress Comments
* WordPress Block Editor
* WordPress `do_blocks()`
* PHP Object Serialization / Deserialization
---
# Disclaimer
This repository contains security research concerning a remote-code-
execution vulnerability affecting a WordPress plugin.
The PoC is provided for:
* Security research
* Defensive validation
* Authorized penetration testing
* Controlled laboratory reproduction
* Education
Only test systems that you own or have explicit written authorization
to assess.
The authors are not responsible for unauthorized use of this research.
---
# Keywords
```text
CVE-2026-78006
The Events Calendar
The Events Calendar WordPress
The Events Calendar 脆弱性
The Events Calendar RCE
The Events Calendar PHP オブジェクトインジェクション
WordPress
CVE-2026-78006 POC
WordPress セキュリティ
WordPress 脆弱性
WordPress RCE
PHP オブジェクトインジェクション
PHP デシリアライゼーション
未認証 RCE
リモートコード実行
CVE
WordPress プラグインセキュリティ
WordPress プラグイン RCE
is_safe_widget_instance
enable_rendering_widget_copied
do_blocks
WordPress コメント
モデレーションハッシュ
legacy-widget
セキュリティリサーチ
PoC
概念実証
ペネトレーションテスト```