CVE-2025-5692
Executive Summary
CVE-2025-5692 is a Missing Authorization vulnerability in the Lead Form Data Collection to CRM WordPress plugin (versions up to and including 3.1). The flaw resides in the ~/includes/LB_admin_ajax.php file, where several AJAX handler functions lack proper capability checks. This allows authenticated attackers with Subscriber-level access or higher to perform unauthorized actions, such as updating plugin settings. The vulnerability is distinct from CVE-2025-47690, which specifically targets the doFieldAjaxAction() function for arbitrary options updates.
This is a WordPress ecosystem issue; the plugin’s AJAX endpoints fail to enforce current_user_can() checks, enabling privilege escalation from subscriber to administrator-level actions. The CVSS v3.1 score is 6.3 (Medium), with a low attack complexity and no user interaction required beyond authentication.
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 Directory. No NPM, PyPI, Go, or Ruby packages are involved. The plugin is not open-source on GitHub, and no OSV patch data is available. Users must rely on the plugin vendor for updates.
CVSS Breakdown & Threat Level
| Metric | Value |
|---|---|
| Attack Vector (AV) | Network (N) |
| Attack Complexity (AC) | Low (L) |
| Privileges Required (PR) | Low (L) – Subscriber |
| User Interaction (UI) | None (N) |
| Scope (S) | Unchanged (U) |
| Confidentiality (C) | Low (L) |
| Integrity (I) | Low (L) |
| Availability (A) | Low (L) |
| Base Score | 6.3 (Medium) |
Threat Level: Medium. The vulnerability is exploitable by any authenticated user, but the impact is limited to low-level integrity and confidentiality breaches (e.g., modifying plugin settings, not full site takeover).
Deep Dive & Mechanics
The plugin’s LB_admin_ajax.php file registers multiple AJAX actions for administrative tasks. In versions <= 3.1, these actions are hooked without verifying the user’s capabilities. For example:
lb_admin_save_settings: Saves plugin configuration.lb_admin_export_data: Exports lead data.lb_admin_delete_data: Deletes lead records.
Each function executes wp_ajax_* hooks but omits current_user_can('manage_options') or similar checks. An attacker with a subscriber account can craft a POST request to /wp-admin/admin-ajax.php with the appropriate action parameter and payload, triggering these functions.
The doFieldAjaxAction() function (covered by CVE-2025-47690) allows arbitrary option updates, but CVE-2025-5692 covers all other AJAX actions lacking capability checks.
Vulnerable vs. Patched Code
Vulnerable Code (<= 3.1):
// In LB_admin_ajax.php
add_action('wp_ajax_lb_admin_save_settings', 'lb_admin_save_settings');
function lb_admin_save_settings() {
// No capability check
update_option('lb_settings', $_POST['settings']);
wp_die();
}
Patched Code (Hypothetical):
add_action('wp_ajax_lb_admin_save_settings', 'lb_admin_save_settings');
function lb_admin_save_settings() {
if (!current_user_can('manage_options')) {
wp_die('Unauthorized', 403);
}
update_option('lb_settings', $_POST['settings']);
wp_die();
}
The patch adds current_user_can('manage_options') before executing sensitive operations.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- WordPress site with plugin version <= 3.1.
- Valid subscriber account credentials.
Exploit Steps:
- Log in as a subscriber.
- Obtain a valid WordPress nonce (if required) by inspecting the plugin’s admin page.
- Send a crafted POST request to
/wp-admin/admin-ajax.php:
curl -X POST https://target.com/wp-admin/admin-ajax.php \
-d "action=lb_admin_save_settings&settings[some_option]=malicious_value" \
--cookie "wordpress_logged_in_xxx=..."
Expected Outcome: The plugin settings are updated without authorization.
Blue Team (Detection & Hardening)
Detection:
- Monitor AJAX requests to
admin-ajax.phpwithactionparameters starting withlb_admin_from non-admin users. - Alert on any
lb_admin_*action triggered by a user with rolesubscriberorcontributor.
Hardening:
- Apply the principle of least privilege: ensure only administrators can access plugin settings.
- Use a Web Application Firewall (WAF) to block AJAX requests to
lb_admin_*actions from low-privilege users. - Update the plugin to a patched version (when available).
Indicators of Compromise (IOCs)
- Network: POST requests to
/wp-admin/admin-ajax.phpwithaction=lb_admin_*parameters from non-admin IPs. - Logs: WordPress debug log entries showing
wp_ajax_lb_admin_*hooks triggered by subscriber users. - File: Modified plugin settings in
wp_optionstable (e.g.,lb_settingsoption changed unexpectedly).
Detection Engineering
YARA Rule
rule CVE_2025_5692_WordPress_Plugin_Missing_Auth {
meta:
description = "Detects exploitation attempts of CVE-2025-5692 in Lead Form Data Collection to CRM plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2025-5692"
strings:
$ajax_action = "lb_admin_" nocase
$admin_ajax = "admin-ajax.php" nocase
condition:
$ajax_action and $admin_ajax
}
Sigma Rule
title: CVE-2025-5692 - WordPress Plugin AJAX Missing Authorization
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects unauthorized AJAX requests to the Lead Form Data Collection to CRM plugin
author: Valters IT
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains: 'admin-ajax.php'
cs-uri-query|contains|all:
- 'action=lb_admin_'
condition: selection
falsepositives:
- Legitimate admin actions
level: medium
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (
msg:"CVE-2025-5692 - WordPress Plugin AJAX Missing Authorization";
flow:to_server,established;
content:"POST"; http_method;
content:"admin-ajax.php"; http_uri;
content:"action=lb_admin_"; http_client_body;
classtype:attempted-admin;
sid:1000001;
rev:1;
)
Remediation & Mitigation
- Immediate: Disable the plugin until a patch is available.
- Short-term: Implement a WAF rule to block
lb_admin_*AJAX actions from non-admin users. - Long-term: Apply the vendor’s patch (when released) or manually add
current_user_can('manage_options')checks to all AJAX handlers inLB_admin_ajax.php. - Monitor: Review WordPress user roles and remove unnecessary subscriber accounts.
Valters IT
Securing WordPress 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.