CVE-2024-11133
Executive Summary
CVE-2024-11133 is a Missing Authorization vulnerability in the Eventer WordPress plugin, affecting all versions up to and including 3.9.9.5. The flaw resides in the handle_pdf_download_request function, which fails to perform a capability check before processing PDF download requests. This allows unauthenticated attackers to download event tickets, leading to unauthorized data access. The vulnerability has a CVSS score of 5.3 (Medium), with a low EPSS score of 0.0% indicating low exploitation likelihood at this time. No public exploit code or patch details are currently available.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability affects the WordPress plugin ecosystem. The Eventer plugin is distributed via the official WordPress plugin repository and third-party marketplaces. Users are advised to verify the integrity of their plugin installation and monitor for updates from the vendor. Since no patch is available, the supply chain risk is elevated for sites using this plugin.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
- Base Score: 5.3 (Medium)
- Attack Vector: Network (AV:N)
- Attack Complexity: Low (AC:L)
- Privileges Required: None (PR:N)
- User Interaction: None (UI:N)
- Scope: Unchanged (S:U)
- Confidentiality Impact: Low (C:L)
- Integrity Impact: None (I:N)
- Availability Impact: None (A:N)
Threat Level: Medium. The vulnerability allows unauthorized data access (ticket information) but does not enable data modification or denial of service. The low EPSS score suggests limited active exploitation, but the lack of a patch increases risk for unmitigated installations.
Deep Dive & Mechanics
The vulnerability is a classic Missing Authorization (CWE-862) issue in the WordPress plugin Eventer. The handle_pdf_download_request function is intended to allow authenticated users (e.g., event attendees or administrators) to download PDF tickets. However, the function does not verify that the requester has the necessary capabilities (e.g., read_ticket or manage_options) before processing the request.
Technical Flow:
- An unauthenticated attacker sends a crafted HTTP request to the vulnerable endpoint (e.g.,
/wp-admin/admin-ajax.php?action=eventer_pdf_download&event_id=123&ticket_id=456). - The
handle_pdf_download_requestfunction is triggered via WordPress AJAX. - The function retrieves the ticket data from the database based on the provided parameters.
- Without a capability check, the function generates and serves the PDF ticket to the attacker.
- The attacker obtains sensitive information such as attendee names, event details, and possibly QR codes or barcodes.
Root Cause: The absence of current_user_can() or similar authorization checks in the function handler.
Vulnerable vs. Patched Code
Since no patch is available, the vulnerable code is presumed to be in the eventer plugin's main PHP file or an AJAX handler file. A typical vulnerable pattern:
Vulnerable Code (hypothetical):
add_action('wp_ajax_nopriv_eventer_pdf_download', 'handle_pdf_download_request');
add_action('wp_ajax_eventer_pdf_download', 'handle_pdf_download_request');
function handle_pdf_download_request() {
$event_id = $_GET['event_id'];
$ticket_id = $_GET['ticket_id'];
// No capability check here
$ticket_data = get_ticket_data($event_id, $ticket_id);
generate_pdf($ticket_data);
}
Patched Code (expected):
add_action('wp_ajax_eventer_pdf_download', 'handle_pdf_download_request');
// Remove nopriv hook to require authentication
function handle_pdf_download_request() {
if (!current_user_can('read_ticket') && !current_user_can('manage_options')) {
wp_die('Unauthorized', 403);
}
$event_id = intval($_GET['event_id']);
$ticket_id = intval($_GET['ticket_id']);
$ticket_data = get_ticket_data($event_id, $ticket_id);
generate_pdf($ticket_data);
}
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- A WordPress site with Eventer plugin version <= 3.9.9.5 installed and active.
- At least one event with tickets created.
Exploitation Steps:
- Identify the vulnerable endpoint:
http://target/wp-admin/admin-ajax.php - Craft a request to download a ticket PDF:
curl -v "http://target/wp-admin/admin-ajax.php?action=eventer_pdf_download&event_id=1&ticket_id=1" - If successful, the server will return the PDF binary data. Save it:
curl -o ticket.pdf "http://target/wp-admin/admin-ajax.php?action=eventer_pdf_download&event_id=1&ticket_id=1" - Open the PDF to view the ticket information.
Note: No public exploit code is available; this is a manual exploitation technique.
Blue Team (Detection & Defense)
Detection:
- Monitor for unusual AJAX requests to
admin-ajax.phpwith theaction=eventer_pdf_downloadparameter from unauthenticated sources. - Look for spikes in PDF download requests from single IPs.
- Check server logs for
eventer_pdf_downloadaction without a valid session.
Defense:
- Implement a Web Application Firewall (WAF) rule to block unauthenticated requests to
eventer_pdf_download. - Disable the vulnerable AJAX action by adding a filter:
add_action('init', function() { if (isset($_GET['action']) && $_GET['action'] === 'eventer_pdf_download') { if (!is_user_logged_in()) { wp_die('Unauthorized', 403); } } }); - Monitor for plugin updates and apply patches immediately.
Indicators of Compromise (IOCs)
- Network IOCs:
- HTTP requests to
/wp-admin/admin-ajax.phpwithaction=eventer_pdf_downloadandevent_id/ticket_idparameters. - User-Agent strings from common tools (e.g.,
curl,wget,python-requests).
- HTTP requests to
- File IOCs:
- Unexpected PDF files in temporary directories or download folders.
- Log IOCs:
- Repeated 200 responses to
admin-ajax.phpwithaction=eventer_pdf_downloadfrom unauthenticated IPs. - Absence of
wp_ajax_nopriv_hooks in plugin code (if patched).
- Repeated 200 responses to
Detection Engineering
YARA Rule
rule Detect_Eventer_PDF_Download_Exploit {
meta:
description = "Detects attempts to exploit CVE-2024-11133 in Eventer plugin"
author = "Valters IT"
date = "2024-01-01"
reference = "CVE-2024-11133"
strings:
$ajax_action = "eventer_pdf_download"
$wp_ajax = "admin-ajax.php"
$pdf_header = "Content-Type: application/pdf"
condition:
$ajax_action and $wp_ajax and $pdf_header
}
Sigma Rule
title: CVE-2024-11133 Eventer PDF Download Exploitation
id: 12345678-1234-1234-1234-123456789abc
status: experimental
description: Detects unauthenticated PDF download requests to Eventer plugin
author: Valters IT
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'GET'
cs-uri-query|contains: 'action=eventer_pdf_download'
sc-status: 200
condition: selection
falsepositives:
- Legitimate authenticated users downloading tickets
level: medium
Suricata Rule
alert http any any -> any any (
msg:"CVE-2024-11133 Eventer PDF Download Exploit Attempt";
flow:to_server;
content:"GET"; http_method;
content:"admin-ajax.php"; http_uri;
content:"action=eventer_pdf_download"; http_uri;
classtype:attempted-recon;
sid:1000001;
rev:1;
)
Remediation & Mitigation
Immediate Actions:
- Disable the vulnerable AJAX action by adding a custom plugin or mu-plugin that blocks unauthenticated requests to
eventer_pdf_download. - Implement a WAF rule to block requests with
action=eventer_pdf_downloadfrom unauthenticated users. - Monitor for plugin updates from the Eventer vendor and apply patches as soon as they are released.
Long-term Fix:
- The vendor must add a capability check in the
handle_pdf_download_requestfunction usingcurrent_user_can(). - Remove the
wp_ajax_nopriv_hook for this action to require authentication.
Workaround:
- If the plugin is not critical, consider disabling or removing it until a patch is available.
Valters IT
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.