EventPrime WordPress Plugin Unauthenticated Arbitrary File Upload — CVE-2026-1657
by d3kc4rt1 · 2026-07-05
- Severity
- Medium
- CVE
- CVE-2026-1657
- Category
- web
- Affected product
- EventPrime (WordPress plugin)
- Affected versions
- <= 4.2.8.1
- Disclosed
- 2026-07-05
- Patch status
- patched
References
Archive entry
intelseclab/poc-archiveMetadata
| Field | Value |
|---|---|
| Date Added | 2026-07-05 |
| Last Updated | 2026-02 |
| Author / Researcher | d3kc4rt1 |
| CVE / Advisory | CVE-2026-1657 |
| Category | web |
| Severity | Medium |
| CVSS Score | Not specified in source |
| Status | PoC |
| Tags | wordpress, eventprime, arbitrary-file-upload, unauthenticated, ajax, media-library, cwe-434 |
| Related | N/A |
Affected Target
| Field | Value |
|---|---|
| Software / System | EventPrime (WordPress plugin) |
| Versions Affected | <= 4.2.8.1 |
| Language / Platform | PHP / WordPress; PoC demonstrated with a single curl request |
| Authentication Required | No |
| Network Access Required | Yes |
Summary
The EventPrime WordPress plugin registers an AJAX action ep_upload_file_media with nopriv support, meaning any unauthenticated visitor can reach it. The handler upload_file_media() in includes/class-ep-ajax.php neither checks a user capability (current_user_can()) nor verifies a security nonce, and it only inspects the client-supplied filename extension rather than validating actual file content. This lets an unauthenticated attacker upload arbitrary files into the WordPress uploads directory and create Media Library attachment records, which can be used for storage-exhaustion denial of service, spamming the media library, or as a stepping stone toward further compromise if combined with other flaws. The repo documents the flaw with root-cause file/line references and a working curl-based reproduction rather than a packaged exploit script.
Vulnerability Details
Root Cause
includes/class-eventprime-event-calendar-management.php (around line 557) registers the upload_file_media action with nopriv support enabled, and the handler upload_file_media() in includes/class-ep-ajax.php (lines 1659-1697) lacks both authorization/nonce checks and real server-side content validation, checking only the client-provided filename extension before calling move_uploaded_file().
Attack Vector
- Attacker prepares a file (optionally disguised with an image-like extension).
- Attacker sends an unauthenticated multipart POST to
/wp-admin/admin-ajax.php?action=ep_upload_file_mediawith the file attached. - The plugin saves the file directly into
wp_upload_dir()['path']and creates a WordPress attachment viawp_insert_attachment(). - The response confirms success with the new attachment ID, and the file becomes retrievable from the uploads path.
Impact
Unauthenticated attackers can fill server storage, pollute the Media Library, or lay groundwork for further exploitation (e.g., RCE if paired with an execution-enabling misconfiguration or LFI).
Environment / Lab Setup
Target: WordPress site with EventPrime plugin <= 4.2.8.1
Attacker: curl (or any HTTP client capable of multipart/form-data POST)
Proof of Concept
PoC Script
No standalone script is provided in the source repository; the PoC is a single documented
curlrequest (seeREADME.mdreasoning above and the command below).
| |
Sending this request with no session cookies causes the target to store poc.jpg under wp-content/uploads/<year>/<month>/ and return a JSON body containing the new attachment_id, confirming the unauthenticated upload succeeded.
Detection & Indicators of Compromise
Signs of compromise:
- Unexpected attachments in the Media Library with no corresponding admin upload activity
- Rapid growth in
wp-content/uploads/disk usage without matching legitimate content - Repeated unauthenticated POSTs to the
ep_upload_file_mediaaction
Remediation
| Action | Detail |
|---|---|
| Primary fix | Vendor patched the plugin following responsible disclosure on 2026-02-17, per the source repository’s timeline — update to the fixed EventPrime release |
| Interim mitigation | Remove the nopriv registration for upload_file_media, add current_user_can('upload_files') and check_ajax_referer() checks, and validate uploads with wp_handle_upload() |
References
Notes
Mirrored from https://github.com/d3kc4rt1/CVE-2026-1657 on 2026-07-05.