
Python-доказательство концепции для CVE-2026-93300 — неаутентифицированной SQL-инъекции в WordPress-плагине EventON Subscriber; выполняет фингерпринтинг AJAX-обработчика и извлекает данные базы данных через временные оракулы.
Python proof-of-concept для CVE-2026-93300: неаутентифицированная SQL-инъекция через параметр email в WordPress-плагине EventON - Subscriber (Wordfence, CVSS 7.5 High).
| CVE | CVE-2026-93300 |
| Плагин | EventON - Subscriber (eventon-subscriber) |
| Затронуты | все версии ≤ 1.4.5 |
| Исправленная версия | не опубликована (по состоянию на 2026-10) |
| Вектор | POST /wp-admin/admin-ajax.php, action=evosub_new_subscriber, параметр email |
| Аутентификация | отсутствует (неаутентифицированный) |
| CWE | CWE-89 SQL Injection |
AJAX-обработчик формы подписки (evosub_new_subscriber, зарегистрированный через wp_ajax_nopriv_, доступный из публичной формы на фронтенде в assets/evosub_script.js) формирует существующий SQL-запрос, используя предоставленное пользователем значение email, без $wpdb->prepare() / надлежащего экранирования. Значение попадает в запрос без экранирования, поэтому злоумышленник может выйти за пределы строкового литерала и добавить/изменить запрос, чтобы прочитать произвольные данные из базы данных.
Клиентское регулярное выражение для email в evosub_script.js — единственная проверка формата в браузере; она не обеспечивает никакой серверной защиты.
# 1. Detect only (fingerprint handler, find working injection oracle)
python3 cve_2026_93300.py --url https://target.example --mode check
# 2. Dump wp_users (login / email / password hash)
python3 cve_2026_93300.py --url https://target.example --mode users --prefix wp_
# 3. Extract any scalar query result
python3 cve_2026_93300.py --url https://target.example --mode sql \
--sql "SELECT option_value FROM wp_options WHERE option_name='admin_email'"
| Параметр | По умолчанию | Описание |
|---|---|---|
--mode | check | check / users / sql |
--action | evosub_new_subscriber | AJAX-действие для проверки |
--param | email | внедряемый параметр |
--prefix | wp_ | префикс таблиц WordPress |
--sql | — | скалярный SELECT для --mode sql |
--delay | 2.0 | секунды SLEEP() для временного оракула |
--timeout | 25 | таймаут HTTP |
--max-id | 15 | максимальный ID пользователя для сканирования |
--proxy / --insecure / --ua | — | HTTP-прокси / пропуск проверки TLS / пользовательский UA |
action=evosub_new_subscriber с незарегистрированным действием (0 / HTTP 400), чтобы подтвердить наличие и работоспособность обработчика.', ", \) → если SQL-ошибки отражаются (WP_DEBUG), используется оракул на основе ошибок (самый быстрый, один запрос на бит);SLEEP() → оракул union-time (одна оценка на пробу, без замедления на каждую строку);;SELECT SLEEP(...)) → оракул stacked-time, если драйвер допускает множественные операторы;OR/AND/paren/concat SLEEP) → резервный оракул template-time.1=1 → истина и 1=0 → ложь (повторно) до начала извлечения, что отсеивает ложные срабатывания на медленных/нестабильных целях.LENGTH() и ASCII(SUBSTRING(...)) (7 запросов на символ).--mode check завершается контрольным извлечением user_login@USER() для подтверждения доступа к данным.
poc*@example.invalid в типе записей evo-subscriber; они видны в разделе Events → All Subscribers и могут быть перемещены в корзину.email на стороне сервера строгим фильтром, все пробы ведут себя одинаково, и инструмент сообщает не уязвим / входные данные валидируются.admin-ajax.php (фатальная ошибка на базовой линии) помечаются как неработоспособные, и работа прерывается.SELECT (контекст INSERT/UPDATE), обнаруживаются, но могут не иметь рабочего временного оракула.--delay ≥ 1.0 на реальных целях; очень малые задержки дают ложноотрицательные результаты на каналах с высокой задержкой.email (и все входные данные запроса) через $wpdb->prepare() / esc_sql(); валидируйте с помощью is_email() на стороне сервера.admin-ajax.php, значение email в которых содержит SQL-метасимволы (', ", \, --, ;, UNION).Только для авторизованного тестирования безопасности и образовательных целей. Несанкционированный доступ к компьютерным системам незаконен. Вы несёте ответственность за соблюдение всех применимых законов.