CVE-2024-13216
Executive Summary
CVE-2024-13216 is a Sensitive Information Exposure vulnerability in the HT Event – WordPress Event Manager Plugin for Elementor plugin for WordPress. The flaw resides in the render function within /includes/widgets/htevent_sponsor.php. An authenticated attacker with Contributor-level access or higher can exploit this to extract sensitive data from private, pending, scheduled, and draft templates. This is a WordPress ecosystem issue, not related to the underlying web server (Apache/Nginx). The vulnerability is unpatched as of the latest version (1.4.7), and no public exploit code or proof-of-concept is 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 a WordPress plugin distributed via the official WordPress plugin repository. Users should verify the integrity of their plugin files and monitor for updates. No known supply chain compromise has been reported.
CVSS Breakdown & Threat Level
- CVSS Score: 4.3 (Medium)
- Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: Low (Contributor)
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: Low (exposure of template data)
- Integrity Impact: None
- Availability Impact: None
Threat Level: Medium. While the CVSS score is moderate, the ability to extract draft/pending content could lead to information disclosure that aids further attacks.
Deep Dive & Mechanics
The vulnerability exists in the render function of the htevent_sponsor.php widget file. The plugin fails to properly restrict which post statuses (e.g., private, draft, pending, scheduled) are accessible when rendering sponsor data. An authenticated user with Contributor-level access can call the render function with crafted parameters to retrieve template data that should be hidden from non-authors or non-editors.
The core issue is a missing capability check or status filter in the render method. The function likely queries posts without enforcing the post_status visibility rules, allowing an attacker to enumerate and extract sensitive content.
Vulnerable vs. Patched Code
Since no patch is available, the vulnerable code is assumed to be in /includes/widgets/htevent_sponsor.php. The render function likely contains a query similar to:
// Vulnerable code (hypothetical)
$args = array(
'post_type' => 'htevent_sponsor',
'post_status' => array('publish', 'private', 'draft', 'pending', 'future'),
'posts_per_page' => -1,
);
$sponsors = get_posts($args);
A patched version would restrict the query to only publish status for non-privileged users:
// Patched code (hypothetical)
$allowed_statuses = array('publish');
if (current_user_can('edit_others_posts')) {
$allowed_statuses = array('publish', 'private', 'draft', 'pending', 'future');
}
$args = array(
'post_type' => 'htevent_sponsor',
'post_status' => $allowed_statuses,
'posts_per_page' => -1,
);
$sponsors = get_posts($args);
Exploitation & Lab Setup
Red Team
Prerequisites:
- WordPress instance with HT Event plugin <= 1.4.7
- Valid user account with Contributor role or higher
Exploitation Steps:
- Authenticate to WordPress as a Contributor.
- Craft a request to the vulnerable endpoint (likely via AJAX or direct widget rendering).
- Use a tool like Burp Suite or cURL to send a POST request with parameters that trigger the
renderfunction without proper status filtering.
Example cURL command (hypothetical endpoint):
curl -X POST 'https://target.com/wp-admin/admin-ajax.php' \
-H 'Cookie: wordpress_logged_in_...' \
-d 'action=htevent_sponsor_render&post_id=0&status[]=private&status[]=draft'
- Parse the response to extract sensitive template data.
Blue Team
Detection:
- Monitor for unusual AJAX requests to
admin-ajax.phpwith actions related tohtevent_sponsor. - Look for authenticated users (Contributor level) querying non-publish post statuses.
- Check for abnormal spikes in database queries for
htevent_sponsorpost type.
Hunting:
- Search logs for
action=htevent_sponsor_renderor similar. - Review user activity for Contributor accounts accessing draft/private content.
Indicators of Compromise (IOCs)
- File:
/includes/widgets/htevent_sponsor.php(presence of vulnerable code) - Log Entry:
POST /wp-admin/admin-ajax.phpwithaction=htevent_sponsor_renderandstatus[]parameters containingprivate,draft,pending, orfuture. - Database Query: Unusual
wp_postsqueries withpost_status IN ('private','draft','pending','future')forpost_type = 'htevent_sponsor'. - User Agent: Any non-standard User-Agent making repeated AJAX calls to the vulnerable endpoint.
Detection Engineering
YARA Rule
rule CVE_2024_13216_HT_Event_Sponsor_Exposure {
meta:
description = "Detects vulnerable HT Event plugin file with sensitive information exposure"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2024-13216"
strings:
$vuln_func = "function render" nocase
$vuln_query = "get_posts" nocase
$vuln_status = "post_status" nocase
$vuln_file = "htevent_sponsor.php" nocase
condition:
$vuln_file and $vuln_func and $vuln_query and $vuln_status
}
Sigma Rule
title: CVE-2024-13216 - HT Event Sponsor Sensitive Information Exposure
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects exploitation attempts of CVE-2024-13216 via AJAX requests
author: Valters IT
date: 2025-04-10
references:
- https://nvd.nist.gov/vuln/detail/CVE-2024-13216
logsource:
category: webserver
product: apache
service: access_combined
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains: 'admin-ajax.php'
cs-uri-query|contains: 'action=htevent_sponsor_render'
cs-uri-query|contains|all:
- 'status[]=private'
- 'status[]=draft'
condition: selection
falsepositives:
- Legitimate admin activity (rare)
level: medium
tags:
- attack.t1552
- attack.t1083
- cve.2024.13216
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (
msg:"CVE-2024-13216 - HT Event Sponsor Sensitive Information Exposure";
flow:to_server,established;
content:"POST"; http_method;
content:"/wp-admin/admin-ajax.php"; http_uri;
content:"action=htevent_sponsor_render"; http_client_body;
content:"status[]="; http_client_body;
pcre:"/status\[\]=private|status\[\]=draft|status\[\]=pending|status\[\]=future/i";
classtype:attempted-recon;
sid:10000001;
rev:1;
reference:cve,2024-13216;
)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin if not critical to operations.
- Restrict Contributor roles to only necessary users.
- Apply a virtual patch using a WAF (e.g., ModSecurity) to block requests containing
status[]=privateor similar inadmin-ajax.php.
Long-term Fix:
- Wait for the vendor to release a patched version (currently unpatched).
- Implement a custom code fix by modifying
/includes/widgets/htevent_sponsor.phpto restrict post status queries based on user capabilities (see patched code example above).
Workaround:
- Use a WordPress security plugin to add capability checks for AJAX endpoints.
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.