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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2025-55182 — Исследование магистерской диссертации по CVE-2025-55182 (React2Shell). Модульная платформа эксплуатации с 6 сценариями атак (удалённое выполнение кода (RCE), эксфильтрация, дефейс), интерактивный обратный shell и полная уязвимая лаборатория для изучения Prototype Pollution и Insecure Deserialization в React Server Components. | Kitploit
Инструменты/GitHubGitHub/devianntsec/cve-2025-55182
Фреймворки для эксплойтовАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийПост-эксплуатацияТестирование на ПроникновениеСтатьи и ИсследованияОбучение и ОбразованиеИнструмент Удаленного Доступа
Разработка Полезной Нагрузки
Лаборатории и Практика
GitHubdevianntsec/cve-2025-55182

CVE-2025-55182

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

Популярное

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

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

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

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

Смотреть все инструменты →

Описание

Исследование магистерской диссертации по CVE-2025-55182 (React2Shell). Модульная платформа эксплуатации с 6 сценариями атак (удалённое выполнение кода (RCE), эксфильтрация, дефейс), интерактивный обратный shell и полная уязвимая лаборатория для изучения Prototype Pollution и Insecure Deserialization в React Server Components.

Поделиться

CVE-2025-55182 — React2Shell: продвинутый эксплойт и исследование магистерской диссертации

Platform Language License: MIT Research CVSS

Небезопасная десериализация + загрязнение прототипа в React Server Components
Неаутентифицированное удаленное выполнение кода через Server Actions Next.js
Затрагивает: React 19.0.0 - 19.2.0 · Исправление: React 19.0.1 / 19.1.2 / 19.2.1 (3 декабря 2025 года)


Демонстрация продвинутого эксплойта - базовые команды RCE, интерактивная оболочка и множественные векторы атак на уязвимое приложение Next.js

Описание

Этот репозиторий содержит моё исследование магистерской диссертации по CVE-2025-55182, критической (CVSS v3.1: 10.0) уязвимости удаленного выполнения кода в React Server Components.

Уязвимость возникает из-за небезопасного механизма десериализации в протоколе React Flight. При обработке серверных действий (Server Actions) Next.js десериализует входящие multipart-полезные нагрузки без надлежащей проверки. Злоумышленник может сформировать вредоносную нагрузку, которая загрязняет цепочку прототипов и внедряет произвольный JavaScript, выполняющийся на сервере через конструктор Function (и далее через child_process.execSync()).

Примечание о CVE-2025-66478: Компания Vercel выпустила параллельный CVE для отслеживания влияния этой же уязвимости на Next.js. Поскольку Next.js использует React в виде вендорной копии (vendored), многие сканеры зависимостей не обнаруживают его автоматически как уязвимый. Национальная база данных уязвимостей США (NVD) официально отклонила CVE-2025-66478 как дубликат CVE-2025-55182, хотя она продолжает упоминаться в информационном бюллетене безопасности самой Vercel.

Последующие уязвимости: Команда React впоследствии раскрыла две дополнительные проблемы, присутствовавшие в начальных версиях исправлений (19.0.1, 19.1.2, 19.2.1): CVE-2025-55184 (отказ в обслуживании, CVSS 7.5) и CVE-2025-55183 (раскрытие исходного кода, CVSS 5.3). Пользователям следует обновиться до версии 19.0.2, 19.1.3 или 19.2.2, чтобы устранить все три уязвимости.

Мой вклад

АспектОписание
Четыре модуля атакиУдаление проектов, дефейс веб-сайта, кража переменных окружения, отключение серверов
Интерактивная оболочкаПостоянная оболочка со специальными командами и возможностью восстановления
Стабильная эксфильтрацияПострочное чтение для обхода ограничений размера HTTP-заголовков
Скрипт восстановленияБезопасное восстановление лабораторной среды после атак
Академическая документацияАнализ первопричины, разбор полезной нагрузки и временная шкала уязвимости

Структура репозитория

root@kitploit:~
CVE-2025-55182/
├── README.md                        # Этот файл
├── LICENSE                          # Лицензия MIT
│
├── exploit/
│   ├── exploit-explanation.md       # Документация по использованию эксплойта
│   └── react2shell.py               # Основной эксплойт — 4 модуля атаки + интерактивная оболочка
│
├── vulnerable-app/                  # Уязвимое приложение Next.js
│   ├── README.md                    # Оригинальные сведения о vulnapp
│   ├── package.json                 # React 19.0.0 (уязвимая версия)
│   ├── app/                         # Исходный код приложения
│   ├── curl_id.sh                   # Оригинальный скрипт эксплойта (от zack0x01)
│   └── scripts/
│       └── restore.sh               # Скрипт восстановления (мой вклад)
│
└── docs/
    ├── screenshots/                 # Демонстрации эксплуатации
    │   ├── 01-app-initial.png
    │   ├── 02-rce-basic.png
    │   ├── 03-interactive-shell.png
    │   ├── 04-no-payload.png
    │   ├── 05-delete-result.png
    │   ├── 06-deface.png
    │   ├── 07-shutdown-servers.png
    │   ├── 08-restore-from-script.png
    │   └── 09-restore-from-interactive-shell.png
    │
    └── analysis/
        ├── 01-root-cause.md         # Анализ первопричины уязвимости
        ├── 02-payload-breakdown.md  # Структура полезной нагрузки и поток выполнения
        └── 03-timeline.md           # Временная шкала CVE

Быстрый старт

Предварительные требования

  • Node.js 18+ и npm
  • Python 3.9+
  • Уязвимое приложение Next.js (предоставлено в vulnerable-app/)
  • Рекомендуется изолированная ВМ для тестирования

Шаг 1 — Запуск уязвимого приложения

root@kitploit:~
cd vulnerable-app
npm install --legacy-peer-deps
npm run dev
# Приложение доступно по адресу http://localhost:3000

Шаг 2 — Запуск эксплойта

root@kitploit:~
cd ../exploit

# Проверить, уязвима ли цель
python3 react2shell.py -u http://localhost:3000 --check

# Выполнить одиночную команду
python3 react2shell.py -u http://localhost:3000 -c "whoami"

# Режим интерактивной оболочки
python3 react2shell.py -u http://localhost:3000 -i

Модули атаки

МодульКомандаОписаниеВоздействие
Удаление проектов--delete-projectsУдаляет все проекты с панели управленияУничтожение данных
Дефейс--deface "сообщение"Заменяет главную страницуДефейс
Кража окружения--steal-envПохищает переменные окруженияЭксфильтрация
Отключение серверов--shutdown-serversОтключает все серверыОтказ в обслуживании

Технический обзор

Первопричина уязвимости

React Server Components используют собственный механизм сериализации/десериализации (протокол "Flight") для передачи данных компонентов с сервера на клиент. При обработке серверных действий сервер десериализует входящие полезные нагрузки без надлежащей проверки.

Основной недостаток — доверие к поведению: десериализатор проверяет typeof obj.then === 'function' для идентификации Promise, не проверяя, принадлежит ли это свойство непосредственно объекту. Это позволяет злоумышленнику отравить Object.prototype.then, делая каждый обычный объект thenable.

Злоумышленник может сформировать вредоносную нагрузку, которая:

  1. Загрязняет цепочку прототипов с помощью __proto__:then
  2. Перенаправляет разрешение на конструктор Function через $1:constructor:constructor
  3. Выполняет произвольный JavaScript через new Function(_prefix)
  4. Запускает системные команды через process.mainModule.require('child_process').execSync()
  5. Эксфильтрует вывод через заголовок HTTP-ответа X-Action-Redirect
root@kitploit:~
Пользовательский режим (неаутентифицированный)
  │
  ├─ POST / (конечная точка Server Action Next.js)
  │    ├─ Заголовки: Next-Action: x
  │    └─ Тело multipart со вредоносным JSON
  │
  └─ Десериализатор React Flight обрабатывает нагрузку
       └─ Загрязнение прототипа через __proto__:then
            └─ Конструктор Function достигнут через $1:constructor:constructor
                 └─ new Function(_prefix) выполняет JavaScript злоумышленника
                      └─ execSync() запускает системную команду
                           └─ Вывод встраивается в ошибку NEXT_REDIRECT
                                └─ Next.js преобразует в заголовок X-Action-Redirect

Уточнение области действия

Уязвимость затрагивает любое приложение Next.js, использующее App Router с React Server Components — конфигурация по умолчанию, начиная с Next.js 14. Явно определённые Server Actions не обязательны; достаточно наличия затронутых пакетов RSC.

Почему это важно

Эта уязвимость позволяет неаутентифицированному злоумышленнику:

  • Выполнять произвольные команды на сервере
  • Похищать переменные окружения и учётные данные
  • Изменять или удалять данные приложения
  • Использовать сервер как точку перехода для дальнейших атак

Цепочка атак

root@kitploit:~
1. [АТАКУЮЩИЙ] Отправить сформированный multipart POST на любую конечную точку Server Action
2. [СЕРВЕР] Десериализатор React обрабатывает вредоносный JSON
3. [СЕРВЕР] Загрязнение прототипа отравляет Object.prototype.then
4. [СЕРВЕР] Обычный объект рассматривается как thenable; достигнут конструктор Function
5. [СЕРВЕР] new Function(_prefix) выполняет произвольный JavaScript злоумышленника
6. [СЕРВЕР] execSync() запускает системную команду; вывод захвачен
7. [СЕРВЕР] Вывод встраивается в дайджест ошибки NEXT_REDIRECT
8. [СЕРВЕР] Next.js возвращает заголовок X-Action-Redirect с URL-кодированным выводом
9. [АТАКУЮЩИЙ] Извлечение и URL-декодирование результата команды из заголовка

Эмпирическое тестирование

Все тесты проводились на изолированной ВМ VirtualBox с Kali Linux 2026.1, Next.js 15.0.0 и React 19.0.0, без сетевого доступа.

Модуль атакиРезультатПримечания
Выполнение команд✅ RCE подтвержденоwhoami, id, uname -a работают стабильно
Удаление проектов✅ Панель управления измененаПроекты удалены, структура React сохранена
Дефейс✅ Сайт обезображенОтображается пользовательское сообщение
Кража окружения✅ Переменные окружения извлеченыСохранены в stolen_env.txt
Отключение серверов✅ Все серверы показаны как остановленныеUI обновлён, React функционален
Интерактивная оболочка✅ Постоянная оболочкаДоступны специальные команды
Восстановление✅ Исходное состояние восстановленоЧерез скрипт restore.sh

Детерминированность: В отличие от вероятностных эксплойтов (например, heap spray), CVE-2025-55182 полностью детерминирована — любой корректно сформированный HTTP POST-запрос приводит к RCE с вероятностью 1 на любой незапатченной системе с React 19.0.0–19.2.0 и включёнными React Server Components.


Техническая документация

ДокументОписание
Анализ первопричиныОшибка десериализации и загрязнение прототипа в React Flight
Разбор полезной нагрузкиПострочный анализ структуры вредоносного JSON
Временная шкала CVEХронология обнаружения, раскрытия и исправления

Академический контекст

Это исследование является частью моей магистерской диссертации по кибербезопасности (UCAM — Campus Internacional de Ciberseguridad), посвящённой анализу N-Day уязвимостей в различных средах.

Данный CVE представляет вектор современных JavaScript-фреймворков в рамках диссертации, демонстрируя:

  • Уязвимости десериализации в React Server Components
  • Загрязнение прототипа как примитив для RCE
  • Эксплуатацию Server Actions Next.js
  • Методы пост-эксплуатации в средах Node.js
  • Методологии безопасного восстановления лабораторной среды

Ключевые слова: RCE · Загрязнение прототипа · Десериализация · React · Next.js · Server Actions · CVE-2025-55182


Автор

Annais Molina (devianntsec) — Исследователь безопасности | Магистр кибербезопасности (UCAM)

GitHub LinkedIn Blog Email


Благодарности

  • @zack0x01 — Оригинальное уязвимое приложение
  • Lachlan Davidson (Carapace) — Первоначальное обнаружение уязвимости и ответственное раскрытие
  • AssetNote — Инструмент обнаружения react2shell-scanner
  • Moritz Sanft — Первая работающая общедоступная PoC (~30 часов после раскрытия)
  • maple3142 — Общедоступная PoC первоначального репортёра (5 декабря 2025 года)

Лицензия

Лицензия MIT — см. LICENSE


Правовое предупреждение

Данный репозиторий предоставлен исключительно в образовательных целях и для исследований в области безопасности в рамках академической магистерской диссертации. Все тесты проводились на изолированных виртуальных машинах без сетевого доступа. Используйте только на системах, которыми вы владеете или на которые имеете явное письменное разрешение на тестирование. Несанкционированное использование против систем незаконно и может привести к уголовному преследованию.

© 2026 Annais Molina · Магистерская диссертация по кибербезопасности
UCAM Universidad Católica San Antonio de Murcia · Campus Internacional de Ciberseguridad
Скачать инструмент