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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2025-55182 | Kitploit
Инструменты/GitHubGitHub/tinashelorenzi/cve-2025-55182
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбнаружение ВторженийОбучение и ОбразованиеRed TeamingРазработка Полезной НагрузкиЛаборатории и Практика
GitHubtinashelorenzi/cve-2025-55182

CVE-2025-55182

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

Популярное

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

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

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

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

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

React2Shell (CVE-2025-55182) - Доказательство концепции

Полноценный proof-of-concept эксплойт и образовательный ресурс для CVE-2025-55182, критической уязвимости удалённого выполнения кода, затрагивающей React Server Components, с оценкой CVSS 10.0.

Python Version License CVSS

Правовой дисклеймер

ТОЛЬКО ДЛЯ ОБРАЗОВАТЕЛЬНЫХ ЦЕЛЕЙ И АВТОРИЗОВАННОГО ТЕСТИРОВАНИЯ

Этот инструмент предоставляется исключительно для образовательных целей и авторизованного тестирования безопасности. Неавторизованный доступ к компьютерным системам является незаконным согласно различным законам, включая Закон о компьютерном мошенничестве и злоупотреблениях (CFAA) в США и аналогичное законодательство по всему миру.

Вы обязаны:

  • Использовать этот инструмент только на системах, которыми вы владеете или на тестирование которых имеете явное письменное разрешение
  • Соблюдать все применимые местные, государственные и федеральные законы
  • Использовать этот инструмент ответственно и этично

Автор и участники:

  • Не несут ответственности за любое неправомерное использование или ущерб, причинённый этим инструментом
  • Не одобряют и не поощряют неавторизованный доступ к компьютерным системам
  • Предоставляют этот инструмент строго для образовательных целей и задач защиты

Используя этот инструмент, вы подтверждаете, что понимаете и соглашаетесь с этими условиями.

📋 Содержание

  • Обзор
  • Детали уязвимости
  • Затронутые версии
  • Технический анализ
  • Установка
  • Использование
  • Обнаружение
  • Устранение
  • Настройка лабораторной среды
  • Ссылки
  • Вклад в проект
  • Автор

🎯 Обзор

React2Shell — это критическая уязвимость, обнаруженная в декабре 2025 года, которая затрагивает React Server Components (RSC) и фреймворки, реализующие их, особенно Next.js. Уязвимость позволяет неаутентифицированное удалённое выполнение кода с помощью одного специально сформированного HTTP-запроса.

Этот репозиторий содержит:

  • ✅ Автоматизированный Python-эксплойт
  • ✅ Детальный технический анализ
  • ✅ Правила обнаружения (Snort, OSQuery)
  • ✅ Руководство по настройке лабораторной среды
  • ✅ Исчерпывающую документацию

🔍 Детали уязвимости

Почему это критично?

  1. Не требуется аутентификация — доступно любому неаутентифицированному атакующему
  2. Уязвимы конфигурации по умолчанию — стандартные приложения Next.js, созданные с помощью create-next-app, эксплуатируемы
  3. Высокая надёжность — успешность эксплуатации близка к 100%
  4. Широкая поверхность атаки — более 571 000 публичных серверов с React-компонентами (данные Shodan)
  5. Критическое воздействие — полное удалённое выполнение кода с привилегиями процесса Node.js

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

React Server Components

Уязвимые версии:

  • react-server-dom-webpack: 19.0.0, 19.1.0, 19.1.1, 19.2.0
  • react-server-dom-parcel: 19.0.0, 19.1.0, 19.1.1, 19.2.0
  • react-server-dom-turbopack: 19.0.0, 19.1.0, 19.1.1, 19.2.0

Исправленные версии:

  • React 19.0.1
  • React 19.1.2
  • React 19.2.1

Next.js

Уязвимые версии:

  • Все версии ≥14.3.0-canary.77
  • Все выпуски 15.x (до исправления)
  • Все выпуски 16.x (до исправления)

Исправленные версии:

  • Проверьте выпуски Next.js на наличие обновлённых версий, включающих исправления React

Другие затронутые фреймворки

  • React Router (при использовании режима RSC)
  • Waku
  • Redwood SDK
  • Различные фреймворки с поддержкой RSC

🔬 Технический анализ

Основная причина

Уязвимость находится в функции requireModule в логике десериализации React Server Components:

root@kitploit:~
function requireModule(metadata) {  
  var moduleExports = __webpack_require__(metadata[0]);  
  return moduleExports[metadata[2]];  // VULNERABLE LINE - Prototype chain traversal
}

Уязвимость позволяет атакующим обходить прототипную цепочку JavaScript через протокол React Flight, получая доступ к конструктору Function через свойства вида constructor.constructor, что приводит к выполнению произвольного кода.

Цепочка эксплуатации

  1. Создание поддельного чанка — атакующий отправляет multipart-данные формы с поддельным объектом chunk
  2. Загрязнение прототипа — используется __proto__ для создания самореферентной структуры
  3. Злоупотребление обработчиком Blob — активирует внутренний обработчик десериализации Blob в React
  4. Доступ к конструктору функции — обходит constructor.constructor, чтобы добраться до Function()
  5. Выполнение кода — внедряет произвольный JavaScript через child_process.execSync()

Схема потока атаки

root@kitploit:~
┌─────────────────────────────────────────────────────────────┐
│  Attacker sends multipart/form-data with Next-Action header │
└──────────────────────┬──────────────────────────────────────┘
                       │
                       ▼
┌─────────────────────────────────────────────────────────────┐
│  Server deserializes payload via React Flight protocol      │
└──────────────────────┬──────────────────────────────────────┘
                       │
                       ▼
┌─────────────────────────────────────────────────────────────┐
│  Fake chunk object with __proto__ pollution processed       │
└──────────────────────┬──────────────────────────────────────┘
                       │
                       ▼
┌─────────────────────────────────────────────────────────────┐
│  Blob handler invokes _formData.get(_prefix + id)           │
└──────────────────────┬──────────────────────────────────────┘
                       │
                       ▼
┌─────────────────────────────────────────────────────────────┐
│  Resolves to Function("malicious_code")                     │
└──────────────────────┬──────────────────────────────────────┘
                       │
                       ▼
┌─────────────────────────────────────────────────────────────┐
│  Arbitrary code executed with Node.js process privileges    │
└─────────────────────────────────────────────────────────────┘

🚀 Установка

Требования

  • Python 3.7 или выше
  • библиотека requests

Настройка

root@kitploit:~
# Clone the repository
git clone https://github.com/yourusername/react2shell-poc.git
cd react2shell-poc

# Install dependencies
pip install -r requirements.txt

# Make script executable (Linux/macOS)
chmod +x react2shell.py

Requirements.txt

root@kitploit:~
requests>=2.31.0
urllib3>=2.0.0

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

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

root@kitploit:~
python3 react2shell.py

Интерактивный сеанс

root@kitploit:~
╔═══════════════════════════════════════════════════════════╗
║           React2Shell (CVE-2025-55182) PoC                ║
║                 CVSS 10.0 - Critical RCE                  ║
║                                                           ║
║  Affected: React 19.0.0, 19.1.0, 19.1.1, 19.2.0          ║
║           Next.js ≥14.3.0-canary.77, 15.x, 16.x          ║
║                                                           ║
║  Cerberus Secure - Lab Use Only                          ║
╚═══════════════════════════════════════════════════════════╝

[?] Enter target information:
    Host (e.g., localhost or 192.168.1.100): localhost
    Port (e.g., 3000): 3000

[React2Shell]> id
[*] Target: http://localhost:3000/
[*] Command: id
[*] Building exploit payload...
[*] Sending exploit request...
[+] Response Status Code: 200
[*] Parsing response...

╔═══════════════════════════════════════════════════════════╗
║                    COMMAND OUTPUT                         ║
╚═══════════════════════════════════════════════════════════╝
uid=1000(node) gid=1000(node) groups=1000(node)

[React2Shell]> whoami
[React2Shell]> pwd
[React2Shell]> ls -la
[React2Shell]> exit

Примеры команд

root@kitploit:~
# System reconnaissance
[React2Shell]> id
[React2Shell]> whoami
[React2Shell]> uname -a
[React2Shell]> cat /etc/os-release

# File system exploration
[React2Shell]> pwd
[React2Shell]> ls -la
[React2Shell]> cat package.json

# Environment variables (often contain secrets)
[React2Shell]> printenv
[React2Shell]> echo $PATH

# Network information
[React2Shell]> ifconfig
[React2Shell]> netstat -tulpn

Доступные команды

КомандаОписание
<any shell command>Выполнить команду на целевой системе
helpПоказать справочное сообщение
exit / /

🛡️ Обнаружение

Обнаружение на сетевом уровне (Snort v3)

Разверните это правило Snort для обнаружения попыток эксплуатации:

root@kitploit:~
alert http any any -> $LAN_NETWORK any (
    msg:"Potential Next.js React2Shell / CVE-2025-55182 attempt";
    flow:to_server,established;
    content:"Next-Action"; http_header; nocase;
    content:"multipart/form-data"; http_header; nocase;
    pcre:"/Content-Disposition:\s*form-data;\s*name=\"0\"/s";
    pcre:"/\"status\"\s*:\s*\"resolved_model\"/s";
    pcre:"/\"then\"\s*:\s*\"\$1:__proto__:then\"/s";
    classtype:web-application-attack;
    sid:6655001;
    rev:1;
)

Логика обнаружения:

  • Отслеживает заголовок Next-Action (специфичен для RSC)
  • Обнаруживает полезные нагрузки multipart/form-data
  • Идентифицирует специфические для эксплойта паттерны: name="0", status: "resolved_model", then: "$1:__proto__:then"

Обнаружение на конечных точках (OSQuery)

Используйте это правило OSQuery для поиска уязвимых версий пакетов:

root@kitploit:~
{
  "queries": {
    "detect_react2shell_vulnerable_packages": {
      "query": "SELECT name, version, path FROM npm_packages WHERE (name='react-server-dom-parcel' AND (version='19.0.0' OR (version >= '19.1.0' AND version < '19.1.2') OR version='19.2.0')) OR (name='react-server-dom-turbopack' AND (version='19.0.0' OR (version >= '19.1.0' AND version < '19.1.2') OR version='19.2.0')) OR (name='react-server-dom-webpack' AND (version='19.0.0' OR (version >= '19.1.0' AND version < '19.1.2') OR version='19.2.0'));",
      "interval": 3600,
      "description": "Detects vulnerable versions of React Server Components packages affected by CVE-2025-55182",
      "platform": "linux,windows,macos",
      "version": "1.0"
    }
  }
}

Преимущества:

  • Проверяет конечные точки на наличие уязвимых пакетов
  • Работает в средах разработки, стейджинга и продакшена
  • Может быть интегрирован в конвейеры CI/CD
  • Обеспечивает раннее предупреждение перед развёртыванием

Индикаторы анализа журналов

Ищите эти паттерны в журналах вашего приложения:

root@kitploit:~
- HTTP POST requests with "Next-Action" header
- Unusual multipart/form-data requests to application root
- Error messages containing "NEXT_REDIRECT" with unexpected digest values
- Spike in 500 errors with React-related stack traces
- Child process spawning from Node.js (execSync, spawn, exec)

🔧 Устранение

Немедленные действия

1. Обновите уязвимые пакеты

root@kitploit:~
# Check current versions
npm list react-server-dom-webpack react-server-dom-parcel react-server-dom-turbopack

# Update React to patched version
npm install [email protected] [email protected]

# Update Next.js to latest patched version
npm install next@latest

# Verify updates
npm list react react-dom next

2. Проверьте пересборку приложения

root@kitploit:~
# Clear cache and rebuild
rm -rf .next node_modules package-lock.json
npm install
npm run build

3. Разверните обновлённые приложения

  • Разработка: Тщательно протестируйте в стейджинг-окружении
  • Стейдж: Проверьте весь функционал перед продакшеном
  • Продакшен: Разверните с соответствующим планом отката

Долгосрочные меры безопасности

1. Внедрите правила межсетевого экрана для веб-приложений (WAF)

Блокируйте подозрительные паттерны:

root@kitploit:~
- Requests with "Next-Action" header from untrusted sources
- Multipart form data with suspicious JSON structures
- Requests matching exploit signature patterns

2. Сегментация сети

  • Изолируйте React-приложения в отдельных сетевых зонах
  • Внедрите строгую фильтрацию исходящего трафика
  • Отслеживайте и оповещайте о необычных исходящих соединениях

3. Самозащита приложений во время выполнения (RASP)

  • Разверните RASP-решения для обнаружения и блокировки попыток эксплуатации
  • Отслеживайте подозрительный запуск дочерних процессов
  • Оповещайте о неожиданных паттернах выполнения кода

4. Сканирование безопасности в CI/CD

root@kitploit:~
# Example GitHub Actions workflow
name: Security Scan
on: [push, pull_request]

jobs:
  dependency-check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Check for vulnerable React packages
        run: |
          npm audit --audit-level=critical
          npm list react-server-dom-webpack react-server-dom-parcel react-server-dom-turbopack

5. Мониторинг и оповещение

Настройте оповещения для:

  • Развёртывания уязвимых версий пакетов
  • Паттернов попыток эксплуатации в журналах
  • Неожиданного создания дочерних процессов
  • Сетевых подключений к подозрительным назначениям

🧪 Настройка лабораторной среды

Вариант 1: Уязвимое приложение Next.js

root@kitploit:~
# Create a new Next.js app with vulnerable version
npx [email protected] vulnerable-app
cd vulnerable-app

# Install vulnerable React version
npm install [email protected] [email protected]

# Start the development server
npm run dev

Вариант 2: Окружение Docker

Создайте Dockerfile:

root@kitploit:~
FROM node:18-alpine

WORKDIR /app

# Create a basic Next.js app
RUN npx [email protected] vulnerable-app --typescript --tailwind --app --no-src-dir

WORKDIR /app/vulnerable-app

# Install vulnerable React versions
RUN npm install [email protected] [email protected]

EXPOSE 3000

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

Сборка и запуск:

root@kitploit:~
docker build -t react2shell-lab .
docker run -p 3000:3000 react2shell-lab

Вариант 3: Docker Compose

Создайте docker-compose.yml:

root@kitploit:~
version: '3.8'
services:
  vulnerable-app:
    build: .
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=development
    volumes:
      - ./app:/app/vulnerable-app

Запуск:

root@kitploit:~
docker-compose up -d

Проверка уязвимости

Проверьте с помощью curl:

root@kitploit:~
curl -X POST http://localhost:3000/ \
  -H "Next-Action: x" \
  -H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad" \
  --data-binary @exploit_payload.txt

📚 Ссылки

Официальные охранные уведомления

  • Охранное уведомление React - CVE-2025-55182
  • Охранное уведомление Next.js
  • NVD - CVE-2025-55182

Исследования и анализ

  • Оригинальный PoC от maple3142
  • Исследование Wiz Security - анализ React2Shell
  • Исследование Assetnote Security

Обнаружение и смягчение последствий

  • Документация Snort
  • Документация OSQuery
  • Документация React Server Components

Связанные уязвимости

  • Log4Shell (CVE-2021-44228) — аналогичная RCE через десериализацию
  • Spring4Shell (CVE-2022-22965) — RCE на уровне фреймворка

🤝 Вклад в проект

Вклад приветствуется! Пожалуйста, следуйте этим рекомендациям:

  1. Сделайте форк репозитория
  2. Создайте ветку функции (git checkout -b feature/improvement)
  3. Зафиксируйте изменения (git commit -am 'Add new detection method')
  4. Отправьте изменения в ветку (git push origin feature/improvement)
  5. Создайте Pull Request

Направления для вклада

  • Дополнительные правила обнаружения (Suricata, Zeek и т. д.)
  • Интеграция с security-фреймворками (MISP, TheHive и т. д.)
  • Улучшенные вариации полезных нагрузок
  • Улучшенный разбор вывода
  • Дополнительная документация и переводы

📝 Лицензия

Этот проект распространяется под лицензией MIT — подробнее см. в файле LICENSE.

👤 Автор

Tinashe

  • Должность: Архитектор решений в области кибербезопасности
  • Организация: Cerberus Secure / iConnect SA
  • Местоположение: Йоханнесбург, ЮАР
  • LinkedIn: https://www.linkedin.com/in/tinashe-matanda/
  • GitHub: @tinashelorenzi

О Cerberus Secure

Cerberus Secure — подразделение кибербезопасности iConnect SA, специализирующееся на:

  • Защите от DDoS и сетевой безопасности
  • Соответствии требованиям GRC (POPIA, ECT, PCI-DSS, HPCSA)
  • Архитектуре безопасности и проектировании решений
  • Реагировании на инциденты и Threat Intelligence
  • Разработке заказных SIEM-решений (платформа Olympus)

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

  • maple3142 — оригинальное исследование proof-of-concept
  • Wiz Security Research — всесторонний анализ уязвимости
  • Assetnote — улучшенные методы эксплуатации
  • Команда React — быстрое реагирование и разработка исправлений
  • Команда Next.js — реализация смягчающих мер на уровне фреймворка

⚖️ Ответственное раскрытие информации

Эта уязвимость была ответственно раскрыта исследователями безопасности команде React. Данный PoC публикуется после:

  • официальные исправления стали доступны
  • организации получили достаточно времени для обновления
  • публичного раскрытия командой безопасности React

Хронология:

  • Декабрь 2025 г.: уязвимость обнаружена
  • Декабрь 2025 г.: скоординированное раскрытие команде React
  • Декабрь 2025 г.: выпущены исправления (19.0.1, 19.1.2, 19.2.1)
  • Декабрь 2025 г.: публичное раскрытие и выпуск PoC

Помните: используйте этот инструмент ответственно и только на системах, которые вам разрешено тестировать.

По вопросам, проблемам или замечаниям по безопасности этого репозитория, пожалуйста, создайте issue или свяжитесь с мейнтейнером напрямую.

Скачать инструмент
ПолеДетали
Идентификатор CVECVE-2025-55182
Оценка CVSS10.0 (критическая)
Вектор атакиСетевой
Сложность атакиНизкая
Требуемые привилегииОтсутствуют
Взаимодействие с пользователемНе требуется
ВоздействиеПолная компрометация системы (RCE)
Дата раскрытияДекабрь 2025 г.
quit
q
Выйти из инструмента