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

CVE-2025-22720

CVE-2025-22720 Missing Authorization in Magepeopleteam
📅 PUBLISHED: 2025-01-31 09:15 UTC 🔄 UPDATED: 2026-08-12 14:53 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.0× 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.8
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: L Integrity Low
A: N Availability None
5.8
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-22720 is a Missing Authorization vulnerability in the Booking and Rental Manager for WooCommerce WordPress plugin by magepeopleteam. This flaw allows unauthenticated attackers to exploit incorrectly configured access control security levels, potentially leading to unauthorized data access or manipulation of booking and rental records. The vulnerability affects all versions up to and including 2.2.1. With a CVSS score of 5.8 (Medium), the risk is elevated due to the lack of required authentication and the plugin's widespread use in e-commerce environments. No public proof-of-concept (PoC) or exploit code is currently available, but the absence of a patch from the vendor increases the urgency for defensive measures.

⚡ 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

WordPress Ecosystem Context

This vulnerability is specific to the WordPress plugin ecosystem. It does not affect Apache, Nginx, or other web server software. The flaw resides in the plugin's REST API endpoints or AJAX handlers that fail to properly verify user capabilities before processing requests.

CVSS Breakdown & Threat Level

  • CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N
  • Base Score: 5.8 (Medium)
  • Attack Vector: Network (AV:N) – Exploitable remotely.
  • Attack Complexity: Low (AC:L) – No special conditions required.
  • Privileges Required: None (PR:N) – No authentication needed.
  • User Interaction: None (UI:N) – No victim action required.
  • Scope: Unchanged (S:U) – Impact confined to the vulnerable component.
  • Confidentiality Impact: Low (C:L) – Limited data exposure.
  • Integrity Impact: Low (I:L) – Limited data modification.
  • Availability Impact: None (A:N) – No denial of service.

Threat Level: Medium. While the CVSS score is moderate, the lack of authentication and the potential for data leakage or manipulation in a WooCommerce environment (e.g., booking details, customer info) makes this a priority for patching or mitigation.

Deep Dive & Mechanics

The vulnerability stems from missing authorization checks in the plugin's REST API or AJAX endpoints. The plugin likely exposes functions for creating, reading, updating, or deleting bookings and rentals without verifying that the requesting user has the appropriate WordPress capabilities (e.g., manage_options, edit_posts). Attackers can send crafted HTTP requests to these endpoints to:

  • View all bookings and rental records (confidentiality breach).
  • Modify booking statuses, dates, or customer details (integrity breach).
  • Delete bookings or rental items (potential data loss).

The plugin uses wp_ajax_ and wp_ajax_nopriv_ hooks, but the latter (for unauthenticated users) may incorrectly grant access to privileged actions. Alternatively, the plugin may rely on client-side checks that can be bypassed.

Attack Flow:

  1. Identify the vulnerable endpoint (e.g., /wp-json/booking/v1/bookings or admin-ajax.php?action=booking_action).
  2. Send a GET or POST request without any authentication token or nonce.
  3. The server processes the request due to missing current_user_can() checks.
  4. The attacker receives or modifies sensitive data.

Vulnerable vs. Patched Code

Since no patch is available, the following is a hypothetical comparison based on common WordPress authorization patterns.

Vulnerable Code (PHP):

add_action('wp_ajax_nopriv_get_all_bookings', 'get_all_bookings');
function get_all_bookings() {
    global $wpdb;
    $results = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}booking_rental_bookings");
    wp_send_json_success($results);
}

Patched Code (PHP):

add_action('wp_ajax_get_all_bookings', 'get_all_bookings');
add_action('wp_ajax_nopriv_get_all_bookings', 'get_all_bookings');
function get_all_bookings() {
    if (!current_user_can('manage_options')) {
        wp_die('Unauthorized', 403);
    }
    global $wpdb;
    $results = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}booking_rental_bookings");
    wp_send_json_success($results);
}

The patched version removes the nopriv hook for privileged actions and adds a capability check.

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • A WordPress site with Booking and Rental Manager <= 2.2.1 installed and active.
  • Network access to the target.

Steps:

  1. Enumerate Endpoints: Use a tool like Burp Suite or curl to discover AJAX actions. Common patterns include booking_action, rental_action, or REST routes under /wp-json/booking/v1/.
  2. Craft Exploit Request: Send an unauthenticated GET request to a vulnerable endpoint.
curl -X GET "http://target.com/wp-admin/admin-ajax.php?action=booking_get_all" -H "User-Agent: Mozilla/5.0"
  1. Verify Response: If the response contains JSON data (e.g., booking records), the vulnerability is confirmed.

Example Exploit (Python):

import requests

target = "http://target.com/wp-admin/admin-ajax.php"
params = {"action": "booking_get_all"}
response = requests.get(target, params=params)
if response.status_code == 200 and "data" in response.json():
    print("Vulnerable! Data:", response.json())

Blue Team (Defense & Detection)

Detection:

  • Monitor for unusual AJAX requests to admin-ajax.php with actions related to booking/rental from unauthenticated users.
  • Look for spikes in 200 responses to endpoints that should require authentication.

Mitigation:

  • Implement a Web Application Firewall (WAF) rule to block requests to admin-ajax.php with suspicious action parameters from unauthenticated IPs.
  • Disable the plugin until a patch is available.
  • Use a WordPress security plugin (e.g., Wordfence) to add virtual patching.

Indicators of Compromise (IOCs)

  • Network IOCs:
    • HTTP requests to /wp-admin/admin-ajax.php with action parameters containing booking, rental, or booking_rental.
    • Unauthenticated GET/POST requests to /wp-json/booking/v1/ endpoints.
  • File IOCs:
    • Modified plugin files (e.g., booking-and-rental-manager-for-woocommerce/ directory) with unauthorized changes.
  • Log IOCs:
    • WordPress debug log entries showing wp_ajax_nopriv_ hooks being triggered for privileged actions.
    • Web server access logs with 200 responses to admin-ajax.php from IPs not associated with admin users.

Detection Engineering

YARA Rule

rule CVE_2025_22720_Booking_Rental_Manager {
    meta:
        description = "Detects vulnerable Booking and Rental Manager plugin files"
        author = "Valters IT"
        date = "2025-04-10"
        cve = "CVE-2025-22720"
    strings:
        $vuln_func = "wp_ajax_nopriv_" nocase
        $vuln_action = "booking" nocase
        $vuln_action2 = "rental" nocase
    condition:
        $vuln_func and ($vuln_action or $vuln_action2)
}

Sigma Rule

title: CVE-2025-22720 - Unauthenticated AJAX Access to Booking and Rental Manager
id: 8a4b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects unauthenticated requests to vulnerable AJAX actions in Booking and Rental Manager plugin
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
    service: access
detection:
    selection:
        cs-method: 'GET'
        cs-uri-query|contains: 'admin-ajax.php'
        cs-uri-query|contains|all:
            - 'action=booking'
            - 'action=rental'
    condition: selection
falsepositives:
    - Legitimate admin actions (rare)
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-22720 - Unauthenticated AJAX Access to Booking and Rental Manager"; flow:to_server; content:"GET"; http_method; content:"admin-ajax.php"; http_uri; content:"action=booking"; http_uri; nocase; content:"action=rental"; http_uri; nocase; classtype:attempted-recon; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable the Plugin: Deactivate and delete the Booking and Rental Manager plugin until a patch is released.
  2. Virtual Patching: Use a WAF to block requests to admin-ajax.php with action parameters containing booking or rental from unauthenticated users.
  3. Monitor Logs: Review web server and WordPress logs for signs of exploitation.

Long-Term Actions:

  1. Vendor Contact: Reach out to magepeopleteam for a security update. If unresponsive, consider forking the plugin or switching to an alternative.
  2. Code Audit: If you must continue using the plugin, manually add current_user_can() checks to all AJAX and REST endpoints.
  3. Update Policy: Implement a policy to only use plugins with active security support.

Workaround (Code-Level): Add the following to your theme's functions.php to block unauthenticated access to vulnerable actions:

add_action('init', function() {
    if (defined('DOING_AJAX') && DOING_AJAX && !is_user_logged_in()) {
        $blocked_actions = array('booking_get_all', 'booking_update', 'rental_delete');
        if (isset($_REQUEST['action']) && in_array($_REQUEST['action'], $blocked_actions)) {
            wp_die('Unauthorized', 403);
        }
    }
});

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:"Booking and Rental Manager"
http.html:"booking-and-rental-manager-for-woocommerce"

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