
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-запрос, содержащий RCE PoC-полезную нагрузку, которая выполняет детерминированную математическую операцию (41*271 = 11111). Уязвимые хосты возвращают результат в заголовке ответа X-Action-Redirect как /login?a=11111.
По умолчанию сканер проверяет корневой путь (/). Используйте --path или --path-file для проверки пользовательских путей. Если уязвимость не обнаружена, он переходит по редиректам на том же хосте (например, с на ) и проверяет конечный адрес редиректа. Редиректы на другие источники (cross-origin) не отслеживаются.
//en/Флаг --safe-check использует альтернативный метод обнаружения, основанный на побочных индикаторах (код состояния 500 с определённым дайджестом ошибки) без выполнения кода на цели. Используйте этот режим, когда выполнение RCE нежелательно.
Флаг --waf-bypass добавляет случайные мусорные данные в начало тела multipart-запроса. Это помогает обойти проверку содержимого WAF, которая анализирует только первую часть тела запроса. Размер по умолчанию — 128 КБ, настраивается через --waf-bypass-size. Если обход WAF включён, тайм-аут автоматически увеличивается до 20 секунд (если не задан явно).
Флаг --vercel-waf-bypass использует альтернативный вариант полезной нагрузки, специально разработанный для обхода защиты WAF Vercel. Он использует другую структуру 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 Single URL to check
-l, --list File containing hosts (one per line)
-t, --threads Number of concurrent threads (default: 10)
--timeout Request timeout in seconds (default: 10)
-o, --output Output file for results (JSON)
--all-results Save all results, not just vulnerable hosts
-k, --insecure Disable SSL certificate verification
-H, --header Custom header (can be used multiple times)
-v, --verbose Show response details for vulnerable hosts
-q, --quiet Only output vulnerable hosts
--no-color Disable colored output
--safe-check Use safe side-channel detection instead of RCE PoC
--windows Use Windows PowerShell payload instead of Unix shell
--waf-bypass Add junk data to bypass WAF content inspection
--waf-bypass-size Size of junk data in KB (default: 128)
--path Custom path to test (can be used multiple times)
--path-file File containing paths to test (one per line)
RCE PoC изначально был раскрыт @maple3142 — мы невероятно благодарны за их работу по публикации рабочего PoC.
Этот инструмент изначально создавался как безопасный способ обнаружения RCE. Эта функциональность по-прежнему доступна через --safe-check — режим «безопасного обнаружения».
Результаты выводятся в терминал. При использовании -o уязвимые хосты сохраняются в JSON-файл, содержащий полный HTTP-запрос и ответ для проверки.