CVE-2025-24657

5.9 MEDIUM

📋 TL;DR

This stored XSS vulnerability in WebToffee's Wishlist for WooCommerce plugin allows attackers to inject malicious scripts into web pages that persist and execute when other users view them. It affects all WordPress sites using the plugin from any version up to 2.1.2. Attackers can steal session cookies, redirect users, or perform actions on their behalf.

💻 Affected Systems

Products:
  • WebToffee Wishlist for WooCommerce WordPress plugin
Versions: All versions up to and including 2.1.2
Operating Systems: Any OS running WordPress
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects WordPress installations with the vulnerable plugin activated. WooCommerce must be installed for the plugin to function.

⚠️ Manual Verification Required

This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.

Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).

🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers steal administrator session cookies, gain full control of the WordPress site, install backdoors, deface the site, or steal customer payment information from WooCommerce stores.

🟠

Likely Case

Attackers steal user session cookies to hijack accounts, redirect users to phishing sites, or display malicious content to visitors.

🟢

If Mitigated

With proper input validation and output encoding, the malicious scripts are neutralized before reaching users, preventing execution.

🌐 Internet-Facing: HIGH
🏢 Internal Only: LOW

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ✅ No
Complexity: LOW

Stored XSS vulnerabilities are commonly exploited. While no public PoC is confirmed, the vulnerability type is well-understood and easily weaponized.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 2.1.3 or later

Vendor Advisory: https://patchstack.com/database/wordpress/plugin/wt-woocommerce-wishlist/vulnerability/wordpress-wishlist-for-woocommerce-plugin-2-1-2-cross-site-scripting-xss-vulnerability?_s_id=cve

Restart Required: No

Instructions:

1. Log into WordPress admin panel. 2. Navigate to Plugins > Installed Plugins. 3. Find 'Wishlist for WooCommerce' and click 'Update Now'. 4. If update not available, download version 2.1.3+ from WordPress.org and manually update.

🔧 Temporary Workarounds

Disable vulnerable plugin

all

Temporarily deactivate the Wishlist for WooCommerce plugin until patched

wp plugin deactivate wt-woocommerce-wishlist

Implement WAF rules

all

Configure web application firewall to block XSS payloads targeting wishlist functionality

🧯 If You Can't Patch

  • Disable the Wishlist for WooCommerce plugin completely
  • Implement Content Security Policy (CSP) headers to restrict script execution

🔍 How to Verify

Check if Vulnerable:

Check WordPress admin > Plugins > Installed Plugins for 'Wishlist for WooCommerce' version 2.1.2 or lower

Check Version:

wp plugin get wt-woocommerce-wishlist --field=version

Verify Fix Applied:

Verify plugin version is 2.1.3 or higher in WordPress admin panel

📡 Detection & Monitoring

Log Indicators:

  • Unusual POST requests to wishlist endpoints with script tags
  • Multiple failed XSS attempts in web server logs
  • Suspicious user agents containing script payloads

Network Indicators:

  • HTTP requests containing <script> tags to wishlist-related endpoints
  • Outbound connections to suspicious domains after wishlist page views

SIEM Query:

source="web_logs" AND (uri_path="*wishlist*" OR uri_path="*wt-woocommerce-wishlist*") AND (http_method="POST" OR http_method="PUT") AND (request_body="*<script>*" OR request_body="*javascript:*")

🔗 References

📤 Share & Export