☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 6.3 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:L 🐛 CWE-862
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-13534

CVE-2025-13534 Privilege Escalation in Elex
📅 PUBLISHED: 2025-12-02 08:24 UTC 🔄 UPDATED: 2026-08-12 14:52 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.09%
👁️
0.09% probability
2.1× above the median CVE
Tier: LOW
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1068
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 6.3
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: N User Interaction None
S: U Scope Unchanged
C: L Confidentiality Low
I: H Integrity High
A: L Availability Low
6.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-13534 is a privilege escalation vulnerability in the ELEX WordPress HelpDesk & Customer Ticketing System plugin (WSDesk), affecting all versions up to and including 3.3.2. The flaw resides in the eh_crm_edit_agent AJAX action, which lacks proper authorization checks. This allows an authenticated attacker with at least Contributor-level access to escalate their privileges from limited "Reply Tickets" permissions to full helpdesk administrator capabilities. Successful exploitation grants unauthorized access to ticket management, settings configuration, agent administration, and sensitive customer data. As a WordPress plugin vulnerability, this issue is specific to the WordPress ecosystem and does not involve the underlying web server software.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability affects a WordPress plugin distributed through the official WordPress plugin repository and third-party marketplaces. The plugin is not an NPM, PyPI, Go, or Ruby package, but its supply chain risk is significant due to the lack of a known patch. Administrators must manually monitor for updates or consider removing the plugin until a fix is released.

CVSS Breakdown & Threat Level

  • CVSS Score: 6.3 (Medium)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:L
  • Attack Vector: Network
  • Attack Complexity: Low
  • Privileges Required: Low (Contributor-level access)
  • User Interaction: None
  • Scope: Unchanged
  • Confidentiality Impact: Low (sensitive customer data exposure)
  • Integrity Impact: High (full helpdesk admin privileges)
  • Availability Impact: Low (potential disruption of ticket management)

The threat level is elevated due to the low complexity and low privileges required, combined with the high integrity impact. The EPSS score of 0.0% suggests low exploitation likelihood currently, but this may change as details become public.

Deep Dive & Mechanics

The vulnerability is a Missing Authorization (CWE-862) in the eh_crm_edit_agent AJAX action. The plugin uses AJAX handlers for administrative functions but fails to verify that the requesting user has the necessary capabilities (e.g., manage_options or edit_users). The eh_crm_edit_agent action is intended for helpdesk administrators to manage agent permissions, but it is accessible to any authenticated user with Contributor-level access or higher.

The core issue is in the function that registers the AJAX action. It likely uses wp_ajax_ hooks without a capability check, or the check is insufficient. An attacker can craft a POST request to /wp-admin/admin-ajax.php with action=eh_crm_edit_agent and parameters to modify their own role or permissions, escalating from a limited "Reply Tickets" role to a full helpdesk administrator.

Vulnerable vs. Patched Code

Since no patch is available, the vulnerable code is presumed to be in the plugin's main AJAX handler file (e.g., includes/class-ajax.php or similar). The vulnerable code likely resembles:

add_action('wp_ajax_eh_crm_edit_agent', 'eh_crm_edit_agent_callback');
function eh_crm_edit_agent_callback() {
    // Missing capability check
    $user_id = intval($_POST['user_id']);
    $role = sanitize_text_field($_POST['role']);
    // Update user role without verifying admin privileges
    $user = new WP_User($user_id);
    $user->set_role($role);
    wp_die();
}

A patched version would include a capability check:

add_action('wp_ajax_eh_crm_edit_agent', 'eh_crm_edit_agent_callback');
function eh_crm_edit_agent_callback() {
    if (!current_user_can('manage_options')) {
        wp_die('Unauthorized', 403);
    }
    // ... rest of the function
}

Exploitation & Lab Setup

Red Team

Prerequisites:

  • A WordPress site with the ELEX WSDesk plugin version <= 3.3.2.
  • An authenticated user account with Contributor-level access (or higher).

Exploitation Steps:

  1. Log in as the Contributor-level user.
  2. Obtain a valid WordPress nonce for the AJAX action (if required). This can be extracted from the plugin's JavaScript or by inspecting network requests.
  3. Send a crafted POST request to /wp-admin/admin-ajax.php:
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: target-wordpress-site.com
Content-Type: application/x-www-form-urlencoded
Cookie: [valid WordPress cookies]

action=eh_crm_edit_agent&user_id=[current_user_id]&role=administrator&_ajax_nonce=[nonce]
  1. The server responds with a success message, and the user's role is escalated to helpdesk administrator (or full WordPress administrator, depending on the plugin's implementation).
  2. Access the WSDesk admin panel to view all tickets, manage agents, and access sensitive customer data.

Note: No public exploit code is available, but the above steps demonstrate the attack vector.

Blue Team

Detection:

  • Monitor AJAX requests to admin-ajax.php with action=eh_crm_edit_agent from non-admin users.
  • Alert on role changes for users with Contributor-level access or higher.
  • Review logs for unusual privilege escalation patterns.

Hunting:

  • Search for users who have been assigned the wsdesk_admin or similar custom role without proper authorization.
  • Check for sudden changes in user capabilities or role assignments.

Lab Setup:

  • Install WordPress and the ELEX WSDesk plugin version 3.3.2.
  • Create a test user with Contributor role.
  • Use a tool like Burp Suite or cURL to replay the exploit steps.
  • Monitor logs and alerts to validate detection rules.

Indicators of Compromise (IOCs)

  • Network:
    • POST requests to /wp-admin/admin-ajax.php with action=eh_crm_edit_agent.
    • Unusual user agent strings or IP addresses making AJAX calls to admin endpoints.
  • Host:
    • User role changes in the WordPress database (wp_usermeta table) for non-admin users.
    • Presence of new users with wsdesk_admin or administrator roles created by low-privilege accounts.
    • Modified plugin files (if attacker uploads a backdoor).
  • Logs:
    • WordPress debug log entries showing AJAX errors or unauthorized access attempts.
    • Web server access logs with repeated admin-ajax.php requests from the same user.

Detection Engineering

YARA Rule

rule CVE_2025_13534_WSDesk_PrivEsc {
    meta:
        description = "Detects exploitation attempts of CVE-2025-13534 in ELEX WSDesk plugin"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2025-13534"
    strings:
        $ajax_action = "eh_crm_edit_agent"
        $admin_ajax = "admin-ajax.php"
        $role_param = "role=administrator"
        $user_id_param = "user_id="
    condition:
        all of them
}

Sigma Rule

title: CVE-2025-13534 - ELEX WSDesk Privilege Escalation via AJAX
id: 8a4b3c2d-1e5f-6a7b-8c9d-0e1f2a3b4c5d
status: experimental
description: Detects AJAX requests to eh_crm_edit_agent action indicating privilege escalation attempt
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
    service: access
detection:
    selection:
        cs-method: 'POST'
        c-uri|contains: '/wp-admin/admin-ajax.php'
        cs-uri-query|contains: 'action=eh_crm_edit_agent'
    condition: selection
falsepositives:
    - Legitimate admin actions (rare)
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (
    msg:"CVE-2025-13534 - ELEX WSDesk Privilege Escalation Attempt";
    flow:to_server,established;
    content:"POST"; http_method;
    content:"/wp-admin/admin-ajax.php"; http_uri;
    content:"action=eh_crm_edit_agent"; http_client_body;
    classtype:attempted-admin;
    sid:10000001;
    rev:1;
    reference:cve,2025-13534;
)

Remediation & Mitigation

Immediate Actions:

  1. Disable the plugin if not critical to operations, until a patch is released.
  2. Restrict access to the admin-ajax.php endpoint for low-privilege users using a Web Application Firewall (WAF) or server-level rules.
  3. Monitor user role changes and audit logs for suspicious activity.

Long-term Fix:

  • Apply the official patch from the vendor when released.
  • Implement a custom capability check in the plugin's AJAX handler (if you have development resources):
    add_action('wp_ajax_eh_crm_edit_agent', 'patched_eh_crm_edit_agent');
    function patched_eh_crm_edit_agent() {
        if (!current_user_can('manage_options')) {
            wp_die('Unauthorized', 403);
        }
        // Original function code
    }
    
  • Consider replacing the plugin with an alternative that has a better security track record.

Workarounds:

  • Use a WordPress security plugin (e.g., Wordfence) to block AJAX requests to sensitive actions from non-admin users.
  • Implement a custom .htaccess rule to restrict access to admin-ajax.php based on user roles (advanced).

Valters IT
Securing Digital Frontiers

👁️ SHODAN DORKS (THREAT HUNTING)

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.

http.title:"WSDesk"
http.html:"wp-content/plugins/wsdesk"

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-13534/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.