
Механизм обнаружения высокой точности для RSC/Next.js RCE (CVE-2025-55182 & CVE-2025-66478)
Инструмент командной строки для обнаружения CVE-2025-55182 и CVE-2025-66478 в приложениях Next.js, использующих React Server Components.
Технические подробности об уязвимости и методологии обнаружения см. в нашем блоге: https://slcyber.io/research-center/high-fidelity-detection-mechanism-for-rsc-next-js-rce-cve-2025-55182-cve-2025-66478
По умолчанию сканер отправляет специально сформированный multipart POST-запрос, содержащий PoC-полезную нагрузку RCE, которая выполняет детерминированную математическую операцию (41*271 = 11111). Уязвимые хосты возвращают результат в заголовке ответа X-Action-Redirect в виде /login?a=11111.
Сканер по умолчанию тестирует корневой путь (/). Используйте --path или --path-file для тестирования произвольных путей. Если уязвимость не обнаружена, сканер следует за перенаправлениями на тот же хост (например, с / на /en/) и тестирует целевой путь перенаправления. Междоменные перенаправления не обрабатываются.
Флаг --safe-check использует альтернативный метод обнаружения, основанный на косвенных индикаторах (код состояния 500 с определённым digest ошибки), без выполнения кода на целевой системе. Используйте этот режим, когда выполнение RCE нежелательно.
Флаг --waf-bypass добавляет случайные «мусорные» данные в тело multipart-запроса. Это может помочь обойти проверку содержимого WAF, которая анализирует только первую часть тела запроса. Размер по умолчанию — 128 КБ, настраивается через --waf-bypass-size. При включении обхода WAF таймаут автоматически увеличивается до 20 секунд (если не задан явно).
Флаг --vercel-waf-bypass использует альтернативный вариант полезной нагрузки, специально разработанный для обхода защиты Vercel WAF. Он использует другую структуру multipart с дополнительным полем формы.
Флаг --windows переключает полезную нагрузку с Unix shell (echo $((41*271))) на PowerShell (powershell -c "41*271") для целей, работающих под Windows.
pip install -r requirements.txt
Сканирование одного хоста:
python3 scanner.py -u https://example.com
Сканирование списка хостов:
python3 scanner.py -l hosts.txt
Многопоточное сканирование с сохранением результатов:
python3 scanner.py -l hosts.txt -t 20 -o results.json
Сканирование с пользовательскими заголовками:
python3 scanner.py -u https://example.com -H "Authorization: Bearer token" -H "Cookie: session=abc"
Использование безопасного косвенного обнаружения:
python3 scanner.py -u https://example.com --safe-check
Сканирование целей под Windows:
python3 scanner.py -u https://example.com --windows
Сканирование с обходом WAF:
python3 scanner.py -u https://example.com --waf-bypass
Сканирование произвольных путей:
python3 scanner.py -u https://example.com --path /_next
python3 scanner.py -u https://example.com --path /_next --path /api
python3 scanner.py -u https://example.com --path-file paths.txt
-u, --url Один URL для проверки
-l, --list Файл со списком хостов (по одному на строку)
-t, --threads Количество параллельных потоков (по умолчанию: 10)
--timeout Таймаут запроса в секундах (по умолчанию: 10)
-o, --output Выходной файл для результатов (JSON)
--all-results Сохранять все результаты, а не только уязвимые хосты
-k, --insecure Отключить проверку SSL-сертификатов
-H, --header Пользовательский заголовок (можно использовать несколько раз)
-v, --verbose Показывать детали ответа для уязвимых хостов
-q, --quiet Выводить только уязвимые хосты
--no-color Отключить цветной вывод
--safe-check Использовать безопасное косвенное обнаружение вместо RCE PoC
--windows Использовать полезную нагрузку PowerShell вместо Unix shell
--waf-bypass Добавлять мусорные данные для обхода проверки содержимого WAF
--waf-bypass-size Размер мусорных данных в КБ (по умолчанию: 128)
--path Произвольный путь для тестирования (можно использовать несколько раз)
--path-file Файл со списком путей для тестирования (по одному на строку)
PoC RCE был изначально опубликован @maple3142 — мы невероятно благодарны за их работу по публикации рабочего PoC.
Этот инструмент изначально был создан как безопасный способ обнаружения RCE. Эта функциональность всё ещё доступна через --safe-check — режим «безопасного обнаружения».
Результаты выводятся в терминал. При использовании -o уязвимые хосты сохраняются в JSON-файл, содержащий полный HTTP-запрос и ответ для верификации.