
Эксплойт доказательства концепции для CVE-2025-29927, уязвимости обхода промежуточного ПО Next.js. Включает определение версии, настраиваемую манипуляцию заголовками и эвристику обнаружения успеха для тестирования обхода аутентификации.
Этот репозиторий содержит доказательство концепции (PoC) для CVE-2025-29927 — уязвимости в middleware Next.js, которая позволяет обходить проверки аутентификации и авторизации с помощью манипуляции заголовками.
Затронутые версии: >= 11.1.4, <= 1 3.5.6, > 14.0.0, < 14.2.25, > 15.0.0, < 15.2.3
CVE ID: CVE-2025-29927
Серьёзность: Высокая (CVSS: 9.1)
Уязвимость существует в цепочке выполнения middleware в Next.js, где злоумышленник может манипулировать заголовком x-middleware-subrequest, чтобы обойти средства безопасности middleware. Создавая определённое значение заголовка, middleware можно обманом заставить его считать, что запрос уже был обработан, что фактически обходит проверки аутентификации.
Этот инструмент протестирован на: Next.js 15.0.0 – 15.2.2; другие версии могут потребовать модификаций.
Установите зависимости с помощью:
pip install -r requirements.txt
python poc-cve-2025-29927.py http://example.com/protected-route
usage: poc-cve-2025-29927.py [-h] [-r REPEAT] [-o OUTPUT] [--no-browser] [-f] url
PoC for CVE-2025-29927 - Next.js Middleware Bypass
positional arguments:
url Target URL to test (e.g., http://localhost:3000/admin/dashboard)
options:
-h, --help show this help message and exit
-r REPEAT, --repeat REPEAT
Number of middleware repeats in header (default: 5)
-o OUTPUT, --output OUTPUT
Output file name (default: response.html)
--no-browser Do not open result in browser
-f, --force Skip version check and force exploit attempt
python poc-cve-2025-29927.py http://localhost:3000/admin/dashboard
python poc-cve-2025-29927.py http://target-site.com/admin/dashboard -f
python poc-cve-2025-29927.py http://vulnerable-app.com/protected-page -r 10 -o result.html --no-browser
Сначала скрипт пытается определить версию Next.js целевого приложения с помощью различных методов обнаружения.
Если обнаружена уязвимая версия (15.0.0–15.2.2), он переходит к эксплуатации.
Отправляется запрос со специально сформированным заголовком x-middleware-subrequest.
Ответ сохраняется в файл и анализируется на наличие признаков успеха.
В случае успеха защищённый контент становится доступным без аутентификации.
Если вы используете уязвимую версию Next.js, обновитесь до версии 15.2.3 или более поздней, чтобы исправить эту уязвимость.
Этот инструмент предоставляется только для образовательных целей и исследований в области безопасности. Используйте его только против приложений, которыми вы владеете или на тестирование которых имеете явное разрешение. Несанкционированное тестирование может нарушать действующее законодательство.
Этот проект лицензирован на условиях лицензии MIT — подробности см. в файле LICENSE.
Heimd411
Исследователь безопасности
GitHub Profile
This Repository