
Сканер на Python, который обнаруживает экземпляры Next.js, уязвимые для CVE-2025-29927, определяет версии и тестирует обход аутентификации через заголовок x-middleware-subrequest с многопоточным параллельным сканированием.
Этот Python-скрипт определяет хосты, уязвимые к CVE-2025-29927 — ошибке авторизации в промежуточном ПО Next.js, которая может привести к обходу аутентификации. Скрипт проверяет использование Next.js, определяет версию, обнаруживает заголовок x-middleware-subrequest и тестирует возможные обходы аутентификации на указанных маршрутах.
ПРЕДУПРЕЖДЕНИЕ: Данный скрипт предназначен только для образовательных целей и авторизованных аудитов безопасности. Несанкционированное использование на системах без явного разрешения незаконно и неэтично.
Клонируйте или скачайте этот репозиторий: git clone <REPOSITORY_URL> cd cve-2025-29927-scanner
Создайте и активируйте виртуальное окружение (необязательно, но рекомендуется): python -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows
Установите зависимости: pip install -r requirements.txt
Подготовьте файл hosts.txt со списком хостов (по одному на строку). Пример: example.com subdomain.example.com another-site.com
(Необязательно) Подготовьте файл routes.txt с маршрутами для тестирования (по одному на строку). Пример: api/auth dashboard admin Если файл не предоставлен, скрипт автоматически создаст routes.txt со стандартными маршрутами.
Запустите скрипт:
Аргументы: -f, --file: Файл со списком хостов (обязательный). -r, --routes: Файл со списком маршрутов (необязательный; если не указан, используется routes.txt). -t, --threads: Максимальное количество потоков (по умолчанию: 10).
Проверьте результаты в выводе терминала.
Пример вывода
File routes.txt created with default routes.
Starting scan on 3 hosts with 3 routes...
Scan results:
------------------------------------------------------------
Host: https://example.com
Next.js detected: True
Version: 13.5.6
x-middleware-subrequest header: True
Vulnerable (version): True
Authentication bypass possible: True
Status: VULNERABLE
------------------------------------------------------------
Зависимости перечислены в requirements.txt:
Вклад приветствуется