Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2025-55182-React2Shell-Async-Scanner — Асинхронный RCE-сканер для CVE-2025-55182 / CVE-2025-66478 — prototype pollution → выполнение кода через React Server Actions. | Kitploit
Инструменты/GitHubGitHub/inferiorak/cve-2025-55182-react2shell-async-scanner
РазведкаСканеры уязвимостейДинамический анализ (песочница)Анализ КодаЭксплуатацияЭксплуатация веб-приложенийСбор информацииCTFТестирование на Проникновение

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Обучение и Образование
Разработка Полезной Нагрузки
GitHubinferiorak/cve-2025-55182-react2shell-async-scanner

CVE-2025-55182-React2Shell-Async-Scanner

Асинхронный RCE-сканер для CVE-2025-55182 / CVE-2025-66478 — prototype pollution → выполнение кода через React Server Actions.

Репозиторий
31156 месяцев назадЕщё не проверено
Поделиться

⚡ React2Shell

CVE-2025-55182 / CVE-2025-66478 - Async RCE Scanner

Python CVE CVE License Author Visitors

Prototype-pollution → Remote Code Execution via React Server Actions

Асинхронное обнаружение через канарейку (canary) с приоритетом версии — без слепого подбора


[!WARNING] Только для авторизованных исследований безопасности и пентеста. Сканирование систем без явного письменного разрешения противозаконно. Автор не несёт ответственности за неправомерное использование этого инструмента.


Содержание

  • Обзор уязвимости
  • Затронутые версии
  • Как работает обнаружение
  • Установка
  • Использование
  • Справочник опций
  • Вывод и вердикты
  • Режим браузера
  • Конвейер определения версии

Обзор уязвимости

React Server Actions передают данные действия как multipart form data напрямую в серверный контекст выполнения. Из-за недостаточной санитизации prototype pollution в затронутых версиях react-server-dom-webpack атакующий может:

  1. Внедрить специально сформированный multipart-пейлоад, который засоряет Object.prototype
  2. Переопределить _response._prefix во внутреннем объекте ответа
  3. Принудить сервер выполнить произвольные команды оболочки через:
    process.mainModule.require('child_process').execSync(cmd)
    

Это даёт неаутентифицированное удалённое выполнение кода (RCE) на любом публично доступном Next.js-приложении, использующем React Server Actions с затронутой версией React.

CVE-2025-55182 — Широкий охват: затрагивает пакеты React 19 (react-server-dom-webpack, react-server-dom-parcel, react-server-dom-turbopack)
CVE-2025-66478 — Строгий охват: путь эксплуатации, специфичный для Next.js, через Server Action endpoint /


Затронутые версии

КомпонентУязвимыеИсправленные
React react-server-dom-*19.0.0, 19.1.0, 19.1.1, 19.2.019.0.1, 19.1.2, 19.2.1+
Next.js 16.x16.0.0 – 16.0.616.0.7+
Next.js 15.x15.0.0-15.0.4, 15.1.0-15.1.8, 15.2.0-15.2.5, 15.3.0-15.3.5, 15.4.0-15.4.7, 15.5.0-15.5.615.0.5+, 15.1.9+, 15.2.6+, 15.3.6+, 15.4.8+, 15.5.7+
Next.js 14.xтолько canary-сборки 14.3.0-canary.77+Все стабильные 14.x — НЕ ЗАТРОНУТЫ
Next.js 13.x-НЕ ЗАТРОНУТЫ

Как работает обнаружение

Этот сканер использует проверку канарейки по выводу (output-based canary verification) — самый надёжный метод подтверждения реального выполнения кода с нулевым количеством ложных срабатываний:

1.  POST /  с заголовком Next-Action + multipart-пейлоад prototype pollution
2.  Пейлоад выполняет:  echo <random_canary>
3.  Уязвимый сервер выбрасывает NEXT_REDIRECT с base64(canary) в URL
4.  Заголовок ответа:   X-Action-Redirect: /login?a=<base64(canary)>
5.  Сканер декодирует base64 → совпадение с канарейкой → RCE подтверждён ✓

allow_redirects=False критически важно — подтверждение находится в заголовке, а не в месте перенаправления.


Установка

git clone https://github.com/InferiorAK/React2Shell
cd React2Shell

pip install -r requirements.txt

# Требуется только при использовании режима --browser для улучшенного определения версии:
playwright install chromium
playwright install-deps chromium

Требования: Python 3.10+


Использование

Сканер CVE-2025-55182 — Широкий охват (React + Next.js)

# Одиночная цель
python3 CVE-2025-55182_scanner.py -u https://target.com

# Сканирование списка URL
python3 CVE-2025-55182_scanner.py -f urls.txt

# Тихий режим — вывод только результатов RCE / Vulnerable
python3 CVE-2025-55182_scanner.py -f urls.txt -q

# Режим браузера — headless Chromium для точного определения версии
python3 CVE-2025-55182_scanner.py -f urls.txt -b

# Полный набор опций — рекомендуется для масштабного сканирования
python3 CVE-2025-55182_scanner.py -f urls.txt -b -q -c 3 -t 20

Справочник опций

Сканер CVE-2025-55182

ФлагДлинная формаПо умолчаниюОписание
-u--url-URL одиночной цели
-f--file-Файл с одним URL на строку
-o--outputoutputs/vuln.txtВыходной файл для уязвимых целей
-U--unknown-outputoutputs/unknown.txtВыходной файл для целей с неизвестной версией
-c--concurrency5Параллельные HTTP-соединения
-t--timeout15Таймаут на запрос (секунды)
-q--quietвыклВыводить только строки RCE / VULNERABLE
-b--browserвыклЗапасной вариант определения версии через Playwright headless Chromium

Вывод и вердикты

Каждой сканируемой цели присваивается один из следующих вердиктов:

ВердиктЦветЗначение
RCE🔴 КрасныйКанарейка подтверждена в X-Action-Redirect — доказанное удалённое выполнение кода
VULNERABLE🟠 ОранжевыйВерсия попадает в уязвимый диапазон; RCE-пейлоад не вернул эхо (WAF / пропатченная конфигурация / неверный endpoint)
Unknown🟡 ЖёлтыйNext.js подтверждён, но версию определить не удалось — RCE всё равно опробован; сохранено в outputs/unknown.txt для повтора в режиме браузера
Not Vulnerable🟢 ЗелёныйВерсия подтверждена как исправленная, либо RCE явно вернул безопасный результат
Skipped⚪ БелыйПодтверждённая пропатченная версия или сайт не на Next.js — PoC не выполнялся
Error⚪ БелыйХост недоступен или соединение не удалось

Выходные файлы (сохраняются в папку outputs/, создаётся автоматически):

  • outputs/vuln.txt — результаты RCE и VULNERABLE (дописываются при каждом запуске)
  • outputs/unknown.txt — цели с версией Unknown; повторите их с флагом -b для точного определения версии

Режим браузера

Почему версия отображается как unknown на 90%+ сайтов?

Современный Next.js 13+, использующий архитектуру App Router, никогда не встраивает версию фреймворка в статический HTML. Версия существует только в window.next.version после выполнения JavaScript в реальном браузерном контексте.

Без --browser:

  • Определение версии полагается на HTTP-заголовки, __NEXT_DATA__, инлайн-скрипты и хэшированные файлы чанков
  • Сайты на App Router почти всегда возвращают unknown — фильтрация по версии обходится

С --browser (-b):

  • Playwright запускает headless Chromium
  • JavaScript страницы выполняется полностью
  • Сканер читает window.next.version напрямую из живого DOM
  • Точность определения версии растёт с ~10% → почти до 100% на современных Next.js-сайтах
# Рекомендуется с режимом браузера — снизьте конкурентность (страницы браузера требовательны к ресурсам)
python3 CVE-2025-55182_scanner.py -f urls.txt -b -c 3
Скачать инструмент