
Сканер для обнаружения наличия CVE-2025-55182 & CVE-2025-66478 на целевых веб-сервисах.
Безопасный, неинвазивный сканер для обнаружения уязвимостей React Server Components (RSC) и удаленного выполнения кода в Next.js (CVE-2025-55182 и CVE-2025-66478).
Этот сканер помогает организациям определить, уязвимы ли их веб-сервисы для уязвимости React2Shell, которая затрагивает приложения, использующие React Server Components и Next.js. Уязвимость позволяет злоумышленникам выполнять удаленный код через специально сформированные multipart/form-data данные.
Важно: Этот сканер использует только безопасные методы обнаружения по побочным каналам и не выполняет код на целевых системах.
Безопасный метод обнаружения
Гибкие возможности сканирования
/_next, /api)Параметры вывода
pip install -r requirements.txt
Или установите вручную:
pip install requests tqdm urllib3
Сканирование одного URL:
python scanner.py -u https://example.com
Сканирование нескольких хостов из файла:
python scanner.py -l hosts.txt
Сканирование с пользовательскими путями:
python scanner.py -u https://example.com --path /_next --path /api
Сканирование с путями из файла:
python scanner.py -u https://example.com --path-file paths.txt
Пользовательские заголовки:
python scanner.py -u https://example.com -H "Authorization: Bearer token" -H "X-Custom: value"
Многопоточное сканирование:
python scanner.py -l hosts.txt -t 20
Экспорт результатов в JSON:
python scanner.py -l hosts.txt -o results.json
Экспорт всех результатов (включая не уязвимые):
python scanner.py -l hosts.txt -o results.json --all-results
Подробный режим (показывать детали для всех хостов):
python scanner.py -l hosts.txt -v
Тихий режим (показывать только уязвимые хосты):
python scanner.py -l hosts.txt -q
Отключить цвета:
python scanner.py -l hosts.txt --no-color
Один хост на строку. Строки, начинающиеся с #, игнорируются.
https://example.com
http://test.example.org
another-site.com
# This is a comment
Один путь на строку. Пути будут автоматически дополнены префиксом /, если он отсутствует.
/_next
/api
/actions
# Comment lines are ignored
| Опция | Описание |
|---|---|
-u, --url URL | Одиночный URL для сканирования |
-l, --list FILE | Файл со списком хостов для сканирования |
-t, --threads N | Количество параллельных потоков (по умолчанию: 10) |
--timeout N | Тайм-аут запроса в секундах (по умолчанию: 10) |
-o, --output FILE | Выходной файл для результатов (формат JSON) |
--all-results | Сохранять все результаты, а не только уязвимые хосты |
-k, --insecure | Отключить проверку SSL-сертификатов |
-H, --header HEADER | Пользовательский заголовок (можно использовать несколько раз) |
-v, --verbose | Подробный вывод (показывать детали для всех хостов) |
-q, --quiet | Тихий режим (показывать только уязвимые хосты) |
--no-color | Отключить цветной вывод |
--path PATH | Пользовательский путь для тестирования (можно использовать несколько раз) |
--path-file FILE | Файл со списком путей для тестирования |
Сканер использует неинвазивный метод обнаружения, который:
Сообщения об ошибках JavaScript
SyntaxError — Указывает на неправильный парсинг JSON данных формыUnexpected token — Указывает на уязвимую десериализацию RSCReferenceError / TypeError — Раскрывает небезопасный доступ к свойствам объектаСпецифичные для RSC ответы с ошибками
text/x-componentVary: RSC, Next-Router-State-Tree){"digest":"..."})$@, объекты ошибок)Сканер обнаруживает как подробные сообщения об ошибках (старые версии), так и структурированные ответы с ошибками RSC (новые версии), обеспечивая всестороннее покрытие различных реализаций Next.js.
Важно: Этот метод НЕ выполняет код на целевой системе. Он только определяет, уязвима ли система, путем наблюдения за ответами с ошибками.
python scanner.py -u https://myapp.com
# Create hosts file with all your domains
python scanner.py -l organization-hosts.txt -t 20 -o scan-results.json
# Create paths.txt with common Next.js endpoints
python scanner.py -l hosts.txt --path-file paths.txt -o results.json
python scanner.py -u https://myapp.com -H "Cookie: session=abc123" -H "Authorization: Bearer token"
Сканер пометит хост как УЯЗВИМЫЙ, если обнаружит:
Когда сканер обнаруживает уязвимость, это означает:
0: Уязвимостей не найдено1: Обнаружена одна или несколько уязвимостей-t), чтобы избежать перегрузки целейЕсли ваше приложение признано уязвимым:
Немедленные действия:
Долгосрочная безопасность:
Ссылки:
Этот инструмент предназначен только для авторизованного тестирования безопасности. Несанкционированный доступ к компьютерным системам является незаконным. Авторы не несут ответственности за неправильное использование или ущерб, причиненный этой программой.