
CVE-2026-78006 The Events Calendar <= 6.17.4 - 비인증 PHP 객체 주입을 통한 원격 코드 실행 POC
CVE-2026-78006 The Events Calendar <= 6.17.4 - 비인증 PHP 객체 주입을 통한 원격 코드 실행에 대한 POC
#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가 사용자 자신의 대기 중인 댓글을 moderation-hash 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 객체 주입 프리미티브입니다.
---
## 7. 가젯 체인
연구 PoC는 역직렬화 중에 호출 가능한 동작을 제공하는
WordPress / The Events Calendar 객체 구조를 구성합니다.
PoC는 콜백 지향 객체와 직렬화된 클래스 구조를 사용하여
연구 페이로드를 구성합니다.
---
## 8. 코드 실행
최종 영향은 원격 코드 실행입니다.
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입니다.
비동기 러너는 두 개의 결과 파일을 생성할 수 있습니다:```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
Comments must be enabled
and
comments must be visible on events```
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
플러그인 버전
+
도달 가능한 이벤트
+
댓글 전달
+
Moderation-hash 렌더링
+
취약한 위젯 처리
+
제어된 실행 증거```
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
웹 서버 로그
+
WordPress 로그
+
데이터베이스 활동
+
파일 무결성
+
관리자 계정```
---
# Indicators of Compromise
Potential indicators include:
```text
예상치 못한 관리자 계정
예상치 못한 플러그인 디렉터리
예상치 못한 PHP 파일
wp-content/uploads/ 내 의심스러운 파일
예상치 못한 이벤트 댓글
비정상적인 moderation-hash 요청
예상치 못한 위젯 관련 요청
예상치 못한 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
생성된 자격 증명
웹셸 파일
캡처된 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 Single Event Template
|
v
WordPress do_blocks()
|
v
Legacy Widget Block
|
v
Forged Widget Instance
|
v
Valid Integrity Attribute
|
v
is_safe_widget_instance()
|
v
PHP Object Deserialization
|
v
Magic Method Invocation
|
v
PHP Object Injection
|
v
Remote Code Execution```
---
# 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 매직 메서드 동작
+
위조된 무결성 속성
+
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 댓글
moderation hash
legacy-widget
보안 연구
PoC
Proof of Concept
모의 해킹```