
Сканирует WordPress Forminator на наличие CVE-2026-15748 — неавторизованного RCE. Обнаруживает уязвимые сайты, обходит формы, извлекает nonces, выполняет безопасные тесты загрузки.
Сканер для исследования безопасности и оценки уязвимостей на Python, предназначенный для выявления установок WordPress, использующих плагин Forminator, и оценки подверженности рискам, связанным с версией.
Только для образовательных целей и авторизованного тестирования
Запускайте этот проект только в отношении систем, которыми вы владеете или на оценку которых у вас есть явное разрешение.
CVE-2026-15748 — это уязвимость, связанная с плагином Forminator для WordPress.
Этот проект предоставляет сканер для исследования безопасности и авторизованного тестирования. Он выполняет последовательность пассивных проверок и проверок на уровне приложения для выявления WordPress, обнаружения Forminator, определения установленной версии, когда это возможно, проверки соответствующих страниц и форм и формирования итоговой оценки.
Сканер предназначен для того, чтобы помочь исследователям безопасности понять подверженность авторизованных сред WordPress рискам, не рассматривая результат сканирования как абсолютное доказательство возможности эксплуатации.
Сканер следует следующему общему порядку работы:
Target
|
v
Normalize URL
|
v
Detect WordPress
|
+---- not detected ----> NOT WORDPRESS
|
v
Crawl relevant pages
|
v
Detect Forminator
|
v
Detect Forminator version
|
v
Compare version
|
v
Inspect forms
|
v
Generate result
| Возможность | Описание |
|---|---|
| Обнаружение WordPress | Определяет, использует ли целевой сайт WordPress. |
| Обнаружение Forminator | Ищет признаки наличия плагина Forminator. |
| Определение версии | Пытается определить установленную версию Forminator из доступных источников. |
| Проверка версии | Сравнивает обнаруженную версию с настроенным значением VULN_MAX. |
| Обход сайта | Собирает соответствующие страницы и внутренние ссылки для дальнейшей проверки. |
| Обнаружение карты сайта | Проверяет стандартные расположения карты сайта WordPress. |
| Обнаружение форм | Ищет соответствующие формы Forminator и элементы форм. |
| Обнаружение nonce | Пытается определить nonce Forminator в обнаруженных данных формы. |
| Многопоточность | Поддерживает одновременную обработку нескольких целей. |
| Обработка повторов | Повторяет неудачные запросы в соответствии с настроенным лимитом. |
| Задержка запросов | Добавляет настраиваемую случайную задержку между запросами. |
| Подробные результаты | Записывает собранные результаты оценки в подробный файл результатов. |
requestspackagingurllib3Установите необходимые пакеты:
pip install requests packaging urllib3
Или:
python -m pip install requests packaging urllib3
Клонируйте репозиторий:
git clone https://github.com/yora1928/cve-2026-15748.git
Перейдите в каталог проекта:
cd cve-2026-15748
Установите зависимости:
pip install requests packaging urllib3
Проверьте установку Python:
python --version
Конфигурация сканера определяется непосредственно в исходном коде:
TIMEOUT = 15
THREADS = 8
VULN_MAX = "1.56.1"
MAX_RETRIES = 3
DELAY_MIN = 1.0
DELAY_MAX = 2.5
CRAWL_DEPTH = 2
| Переменная | По умолчанию | Описание |
|---|---|---|
TIMEOUT | 15 | Тайм-аут HTTP-запроса. |
THREADS | 8 | Количество рабочих потоков, используемых для сканирования. |
VULN_MAX | 1.56.1 | Максимальная версия, считающаяся уязвимой при оценке версии сканером. |
MAX_RETRIES | 3 | Максимальное количество повторных попыток для неудачных запросов. |
DELAY_MIN | 1.0 | Минимальная задержка между запросами. |
DELAY_MAX | 2.5 | Максимальная задержка между запросами. |
CRAWL_DEPTH | 2 | Максимальная глубина обхода. |
Приведённые выше значения описывают текущую конфигурацию сканера в исходном коде.
Сканер принимает либо один целевой URL, либо текстовый файл, содержащий несколько целевых URL.
python cve-2026-15748.py -u https://target.com
-u и --url задают один целевой URL.
Используйте этот режим при проведении оценки одного авторизованного окружения.
Создайте файл, например targets.txt:
https://target1.example
https://target2.example
https://target3.example
Затем выполните:
python cve-2026-15748.py -f targets.txt
-f и --file задают список целей.
Каждая непустая строка рассматривается как цель.
Конфигурация по умолчанию использует 8 потоков.
Например:
python cve-2026-15748.py -f targets.txt -t 10
Или:
python cve-2026-15748.py -f targets.txt -t 5
-t изменяет количество рабочих потоков, используемых сканером.
Сканер также предоставляет необязательный режим --upload:
python cve-2026-15748.py -u https://lab.example.com --upload
Для нескольких авторизованных целей:
python cve-2026-15748.py -f authorized-targets.txt -t 5 --upload
Этот режим может выполнять POST/upload-запрос к эндпоинту Forminator при выполнении соответствующих условий.
Используйте --upload только в системах, где такое тестирование явно разрешено.
| Команда | Назначение |
|---|---|
-u, --url | Сканировать один целевой URL. |
-f, --file | Читать несколько целей из файла. |
-t | Задать количество потоков сканирования. |
--upload | Включить режим тестирования загрузки для авторизованной цели. |
Одна цель:
python cve-2026-15748.py -u https://target.com
Несколько целей:
python cve-2026-15748.py -f targets.txt
Несколько целей с настраиваемой конкурентностью:
python cve-2026-15748.py -f targets.txt -t 10
Тест загрузки в авторизованной лаборатории:
python cve-2026-15748.py -u https://lab.example.com --upload
Сканер выполняет несколько этапов во время оценки.
Целевой URL нормализуется перед выполнением запросов, чтобы последующие проверки использовали единый формат URL.
Сканер проверяет распространённые индикаторы и эндпоинты WordPress, включая:
/wp-login.php
/wp-json
/xmlrpc.php
/wp-content
Он также ищет в ответах такие индикаторы, как:
wp-content
wp-includes
Если WordPress не удаётся идентифицировать, сканер сообщает:
[NOT WORDPRESS]
Сканер формирует список страниц на основе распространённых путей, расположений sitemap и внутренних ссылок, обнаруженных на целевом ресурсе.
Примеры проверяемых путей включают:
/contact
/kontak
/hubungi-kami
/form
/forms
/formulir
/upload
/unggah
/submit
/kirim
/gallery
/kontribusi
/daftar
/pendaftaran
/registration
/register
/file-upload
/submit-document
/unggah-berkas
/upload-file
К распространённым местам расположения sitemap относятся:
/sitemap.xml
/sitemap_index.xml
/wp-sitemap.xml
Сканер ограничен параметром CRAWL_DEPTH.
Сканер ищет идентификаторы Forminator, такие как:
forminator-form-<ID>
Для обнаруженных форм он проверяет соответствующие элементы, такие как:
type="file"
и:
<select>
Он также пытается получить:
form_id
nonce
из HTML-формы.
Сканер пытается определить версию Forminator по информации, раскрываемой целевым сайтом.
Один из источников — путь к ресурсу, похожий на:
/wp-content/plugins/forminator/...
с параметром версии:
?ver=X.X.X
Сканер также имеет резервный механизм, который ищет:
Stable tag:
в HTML или readme.txt.
Сообщаемый метод обнаружения может включать: