CVE-2026-93399 — Bookly WordPress IDOR (Order Token Leak & Booking Rollback)
September 25, 2026 · 1,465 views
Bookly ≤ 28.2: unauthenticated IDOR on booking AJAX — bookly_get_form_id + bookly_render_complete leak any order’s bookly_order token; calendar export and rollback cancel non-completed bookings. CVSS 3.1 9.1 Critical (CWE-639).
Description
Overview
CVE-2026-93399 is an Insecure Direct Object Reference (IDOR) in the WordPress plugin Bookly (Bookly Responsive Appointment Booking Tool, slug bookly-responsive-appointment-booking-tool).
Public booking AJAX handlers allow an unauthenticated attacker to associate an arbitrary order_id with a form session and retrieve that order’s secret bookly_order token without proving ownership. From there, related actions can expose appointment data and cancel or delete non-completed bookings.
Affected versions
| | | |---|---| | Plugin | Bookly on WordPress.org | | Affected | ≤ 28.2 | | Fixed in | > 28.2 (upgrade to latest stable) | | CVSS 3.1 | 9.1 Critical (C:N/I:H/A:H) | | CWE | CWE-639 (Authorization Bypass Through User-Controlled Key) | | Auth | Unauthenticated (public booking AJAX) |
Technical summary
Reported chain:
bookly_get_form_id— Attacker-controlledorder_idis stored in the form session.bookly_render_complete— Returns the target order’sbookly_ordertoken without verifying the session created that order.bookly_add_to_calendar— Can expose appointment details when a valid order token is known.bookly_rollback_order— Can cancel/delete non-completed bookings when invoked with a leaked token.
Attackers may enumerate order IDs on vulnerable sites to harvest tokens at scale.
Bundled PoC (PoCbit download)
Python 3 tool with check and exploit modes:
- check — Detect Bookly, plugin version ≤ 28.2, optional
--order-idor--order-start/--order-endenumeration for token leakage signals. - exploit — Uses a known
order-id; optional--calendar(appointment data) and--rollback --confirm-delete(destructive — authorized labs only).
Mass scan: --list targets.txt --mode check -j 10 with bounded order ID ranges. Use only on systems you own or have written permission to test.
Impact
- Confidentiality: Appointment and customer booking metadata exposure.
- Integrity / availability: Unauthorized cancellation or removal of active bookings (business disruption, SLA impact on clinics/salons using Bookly).
Remediation
- Upgrade Bookly to > 28.2 immediately.
- Review recent booking cancellations and order/token usage in logs.
- Rate-limit
admin-ajax.phpBookly actions at the WAF where possible. - Monitor for sequential
order_idprobing against public booking forms.
Legal and ethical use
--rollback --confirm-delete permanently affects real bookings. Never run exploit or rollback modes against production tenants without explicit authorization.
References
- GitHub PoC (source): https://github.com/murrez/CVE-2026-93399
- NVD — CVE-2026-93399
- CVE Program
Related PoCs
Same platform, vendor, or tags — explore more write-ups on Pocbit.
- WordPressCVE-2026-18143critical
CVE-2026-18143 — Addify Request a Quote for WooCommerce Unauthenticated File Upload
Unauthenticated arbitrary file upload (CWE-434, CVSS 9.8 Critical) in Request a Quote for WooCommerce ≤ 2.9.2 via public AJAX afrfq_submit_quote_via_popup — unsafe move_uploaded_file() with attacker-controlled .php names into web-accessible RFQ temp storage. Requires popup quote rule on the storefront.
- WordPressCVE-2026-19660critical
CVE-2026-19660 — Divi Membership (DiviEngine) ≤2.3.0 paypal_param Authentication Bypass
DiviEngine Divi Membership ≤2.3.0: process_paypal_callback on init trusts base64 paypal_param GET without PayPal/IPN validation → wp_set_current_user + wp_set_auth_cookie as arbitrary user ID (incl. admin). PayPal gateway class loads even when disabled. CVSS 9.8 Critical (CWE-287). Python PoC: check/exploit, cookie export, mass scan.
- WordPressCVE-2026-82901critical
CVE-2026-82901 — Ultra Addons for Contact Form 7 Unauthenticated File Upload
Unauthenticated arbitrary file upload (CWE-434, CVSS 3.1 9.8 Critical) in Ultra Addons for Contact Form 7 (Themefic) ≤ 3.5.50 via uacf7_wpcf7_mail_components in the PDF Generator addon — signature field copies files to wp-content/uploads/uacf7-uploads/ with weak validation. Requires PDF Generator enabled on a form with uacf7_signature. Fixed in 3.5.51+.
- WordPressCVE-2026-87902critical
CVE-2026-87902 — WordPress Core get_page_template() Unauthenticated LFI → RCE (PEAR chain)
WordPress core 4.7.0–7.1.1: pagename from POST used in get_page_template() without validate_file(); page-templates/ traversal + PEAR gadget → RCE. GHSA-7hp8-65ch-5whp, CVSS 4.0 9.8, CWE-22. Fixed 7.1.2+ (backports 6.8.10, 7.0.6). Python mass scanner: --check, --rce, --shell. Upstream: MRdark-ops/CVE-2026-87902 (HackfutSecRoot).