
Python proof-of-concept для CVE-2026-15667 — аутентифицированное локальное включение файлов в плагине WordPress Eventin через REST-поле event_layout.
CVE-2026-15667 WordPress Event Solution LFI POC
Eventin (WordPress-плагин wp-event-solution) ≤ 4.1.22 — аутентифицированное (Contributor+) локальное включение файлов через REST-поле event_layout.
Только для авторизованного тестирования. Не запускайте это против систем, которыми вы не владеете или на тестирование которых у вас нет разрешения.
Требуется: Python 3, только стандартная библиотека.
python3 cve-2026-15667-eventin-lfi.py -u http://TARGET --test
python3 cve-2026-15667-eventin-lfi.py -u http://TARGET --test --uname USER --password PASS
python3 cve-2026-15667-eventin-lfi.py -u http://TARGET --file /etc/passwd --uname USER --password PASS
python3 cve-2026-15667-eventin-lfi.py -u http://TARGET --file /etc/passwd --session 'wordpress_logged_in_HASH=...'
| Флаг | Что делает |
|---|
-u / --url | Корень сайта WordPress (обязательно). http:// или https://; имя хоста сначала пробуется как HTTPS, затем HTTP. Самоподписанный TLS повторяется автоматически. |
--test | Гость: версия плагина + REST-маршрут. С аутентификацией: POST traversal и отчёт, сохранился ли он |
--file PATH | Включить PATH через LFI и вывести результат. Требуется аутентификация |
--uname | Имя пользователя WordPress (Contributor+) |
--password | Пароль WordPress |
--session | Заголовок Cookie браузера (или wordpress_logged_in_*=...). Пропускает /wp-login.php |
--uname/--password и --session взаимозаменяемы. Вам нужна одна пара или cookie для --file и для аутентифицированной части --test.
--test без учётных данных неаутентифицирован (readme + /wp-json/eventin/v2/events). Само включение — нет.
Плагин включает {layout}.php, поэтому --file /etc/passwd запрашивает /etc/passwd.php. Передайте путь с .php или путь, который существует после добавления .php.
Stdout: VERSION, ROUTE, PRESENT, NEED_AUTH, VULNERABLE, NOT_VULNERABLE, AUTH_FAILED, содержимое файла.
CVE: CVE-2026-15667. Сообщено Wordfence PRISM.