Sploitus

Exploit for react-server-cve-lab

kitploit · 2026-09-05

Exploit Code

MARKDOWN507 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-STEALTHMOUD-REACT-SERVER-CVE-LAB
# Лаборатория безопасности React Server Components (CVE-2025-55183 и CVE-2025-55184)

![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg) ![React Version](https://img.shields.io/badge/React-19.0.0-blue.svg) ![CVE-2025-55183](https://img.shields.io/badge/CVE--2025--55183-Medium-orange.svg) ![CVE-2025-55184](https://img.shields.io/badge/CVE--2025--55184-High-red.svg)

Комплексная среда тестирования безопасности для уязвимостей **CVE-2025-55183** (раскрытие исходного кода) и **CVE-2025-55184** (отказ в обслуживании) в React Server Components.

## ⚠️ Отказ от ответственности

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

Этот репозиторий содержит намеренно уязвимые приложения и инструменты эксплуатации. **Тестируйте только на системах, которые вам принадлежат или на которые вы получили явное письменное разрешение.** Несанкционированное тестирование незаконно и неэтично.

## 📋 Содержание

  * Об уязвимостях
  * Быстрый старт
  * Структура репозитория
  * Уязвимое приложение
  * Использование сканера
  * Подробная документация
  * Устранение уязвимостей
  * Лицензия



## 🔍 Об уязвимостях

Обе уязвимости затрагивают React Server Components версий с 19.0.0 по 19.2.2, раскрыты 11 декабря 2025 года.

### CVE-2025-55183: Раскрытие исходного кода (средняя степень опасности)

Свойство| Значение  
---|---  
**Степень опасности**|  Средняя (CVSS 5.3)  
**Тип**|  Раскрытие информации  
**Воздействие**|  Раскрытие исходного кода сервера  
**Аутентификация**|  Не требуется  
  
Злоумышленники могут принудительно вызвать раскрытие серверного исходного кода, передавая аргументы серверным действиям и вызывая `.toString()` на объектах серверных функций. Это раскрывает:

  * Бизнес-логику и алгоритмы
  * Жестко закодированные ключи API или секреты
  * Внутренние детали реализации
  * Запросы к базе данных и информацию о схеме



### CVE-2025-55184: Отказ в обслуживании (высокая степень опасности)

Свойство| Значение  
---|---  
**Степень опасности**|  Высокая (CVSS 7.5)  
**Тип**|  Отказ в обслуживании  
**Воздействие**|  Полный простой сервиса  
**Аутентификация**|  Не требуется  
  
Специально созданные полезные нагрузки создают бесконечную рекурсию promise, что приводит к зависанию сервера Node.js на неопределенный срок. Результаты:

  * Полная недоступность сервиса
  * Истощение CPU
  * Блокировка цикла событий
  * Требуется ручная перезагрузка



### Сравнение

Аспект| CVE-2025-55183| CVE-2025-55184  
---|---|---  
**Степень опасности**|  Средняя| Высокая  
**Тип**|  Раскрытие информации| Отказ в обслуживании  
**Воздействие**|  Утечка исходного кода| Сбой сервера  
**Обнаружение**|  Ответ содержит код| Тайм-аут/зависание сервера  
**Восстановление**|  Немедленное| Требуется перезагрузка  
  
## ⚠️ Важно: О CVE-2025-55184 (DoS) в этой демонстрации

### Почему DoS может не привести к сбою демо-приложения

**TL;DR** : Приложение УЯЗВИМО (React 19.0.0), но современные механизмы защиты могут предотвратить реальный сбой в этой демо-среде.

### Реальность

CVE-2025-55184 — это **РЕАЛЬНАЯ, КРИТИЧЕСКАЯ уязвимость** , затрагивающая React 19.0.0-19.2.2 в производственных средах. Однако успешная демонстрация DoS-сбоя в локальной демонстрации может быть затруднена из-за:

#### 1\. **Встроенная защита Next.js**

  * Next.js 15.x включает границы ошибок, которые перехватывают и восстанавливаются после многих сбоев
  * Автоматические механизмы восстановления предотвращают бесконечную рекурсию
  * Производственный режим имеет другую обработку ошибок, чем уязвимый путь кода



#### 2\. **Изоляция Docker**

  * Контейнеризация добавляет изоляцию процессов
  * Ограничения ресурсов предотвращают полное зависание системы
  * Система инициализации Docker может обнаружить и перезапустить зависшие процессы



#### 3\. **Разработка vs Производство**

  * Точный уязвимый путь кода требует определенных производственных конфигураций
  * Среды разработки/демонстрации имеют дополнительные механизмы безопасности
  * Состояния гонки и тайминги отличаются в контейнерах



### Как проверить, что уязвимость присутствует

Даже если эксплойт не вызывает сбой демонстрации, вы можете проверить уязвимость с помощью:

#### Метод 1: Проверка версии (самый надежный)

root@kitploit:~
    
    
    cd vulnerable-app
    npm list react react-dom
    
    # Вывод показывает:
    some-email@example.com        ← УЯЗВИМАЯ ВЕРСИЯ
    some-email@example.com    ← УЯЗВИМАЯ ВЕРСИЯ
    

**Если вы видите 19.0.0 - 19.2.2, приложение УЯЗВИМО.**

#### Метод 2: Обнаружение с помощью сканера

root@kitploit:~
    
    
    cd scanner
    python scan.py http://localhost:3000
    

Сканер проверяет:

  * ✅ Версию React в уязвимом диапазоне
  * ✅ Включены ли Server Actions
  * ✅ Правильные заголовки ответа сервера
  * ✅ Шаблоны уязвимых конечных точек



## 🚀 Быстрый старт

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

  * Docker и Docker Compose
  * Python 3.7+
  * Git



### 1\. Клонирование репозитория

root@kitploit:~
    
    
    git clone https://github.com/StealthMoud/react-server-cve-lab.git
    cd react-server-cve-lab
    

### 2\. Запуск уязвимого приложения

root@kitploit:~
    
    
    # Запуск приложения (уязвимого к обоим CVE)
    docker-compose up --build -d
    
    # Приложение доступно по адресу: http://localhost:3000
    

### 3\. Запуск сканера

root@kitploit:~
    
    
    cd scanner
    
    # Установка зависимостей
    pip install -r requirements.txt
    
    # Сканирование на обе уязвимости
    python scan.py http://localhost:3000
    
    # Сканирование только CVE-2025-55183
    python scan.py --cve 55183 http://localhost:3000
    
    # Сканирование только CVE-2025-55184
    python scan.py --cve 55184 http://localhost:3000
    
    # Сканирование нескольких целей
    python scan.py --file targets.txt
    

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

root@kitploit:~
    
    
    react-server-cve-lab/
    ├── README.md                          # Этот файл
    ├── DOCUMENTATION.md                   # Полная техническая документация
    ├── LICENSE
    ├── .gitignore
    ├── docker-compose.yml
    │
    ├── vulnerable-app/                    # Уязвимо к ОБОИМ CVE
    │   ├── Dockerfile
    │   ├── package.json
    │   ├── next.config.js
    │   └── app/
    │       ├── layout.js
    │       ├── page.js
    │       └── actions.js                 # Уязвимые серверные действия
    │
    ├── scanner/
    │   ├── requirements.txt
    │   ├── scan.py                        # Сканер для обоих CVE
    │   └── README.md
    │
    └── exploits/
        ├── exploit-55183.py               # PoC для CVE-2025-55183
        ├── exploit-55184.py               # PoC для CVE-2025-55184
        └── README.md
    

## 🎯 Уязвимое приложение

Приложение представляет собой Next.js приложение, работающее на React 19.0.0 с Server Actions, уязвимое к **обоим CVE**.

### Возможности

  * **Server Actions** : Несколько конечных точек, демонстрирующих обе уязвимости
  * **Реалистичный код** : Имитирует реальные шаблоны с секретами
  * **Простое тестирование** : Простой UI для ручного тестирования
  * **На основе Docker** : Изолированная, воспроизводимая среда



### Запуск приложения

root@kitploit:~
    
    
    # Использование Docker Compose (рекомендуется)
    docker-compose up --build -d
    
    # Проверка, запущено ли
    curl http://localhost:3000
    
    # Просмотр логов
    docker-compose logs -f
    
    # Остановка приложения
    docker-compose down
    

### Ручная настройка (без Docker)

root@kitploit:~
    
    
    cd vulnerable-app
    npm install
    npm run build
    npm start
    

## 🔎 Использование сканера

Единый сканер обнаруживает как CVE-2025-55183, так и CVE-2025-55184.

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

root@kitploit:~
    
    
    cd scanner
    
    # Сканирование на оба CVE
    python scan.py http://localhost:3000
    
    # Сканирование только конкретного CVE
    python scan.py --cve 55183 http://localhost:3000
    python scan.py --cve 55184 http://localhost:3000
    

### Расширенные опции

root@kitploit:~
    
    
    # Подробный вывод
    python scan.py --verbose http://localhost:3000
    
    # Пользовательский тайм-аут
    python scan.py --timeout 10 http://example.com
    
    # Сканирование нескольких URL из файла
    python scan.py --file targets.txt
    
    # Сохранение результатов в JSON
    python scan.py --output results.json http://localhost:3000
    
    # Отключение проверки SSL
    python scan.py --no-verify https://self-signed.example.com
    
    # Сканирование всех CVE с подробным выводом и сохранением результатов
    python scan.py --verbose --output scan-results.json http://localhost:3000
    

### Пример вывода

root@kitploit:~
    
    
    ╔═══════════════════════════════════════════════════════════╗
    ║     Сканер уязвимостей React Server Components           ║
    ║         CVE-2025-55183 и CVE-2025-55184                  ║
    ╚═══════════════════════════════════════════════════════════╝
    
    [*] Тестирование http://localhost:3000
    
    [CVE-2025-55183] Раскрытие исходного кода
    [!] УЯЗВИМО: Исходный код раскрыт
        Раскрытые функции: 3
        Длина кода: 1247 символов
        Содержит секреты: ✓ (найдены ключи API)
    
    [CVE-2025-55184] Отказ в обслуживании
    [!] УЯЗВИМО: DoS-атака успешна
        Код статуса: 404
        Content-Type: text/plain
        Найдены маркеры: ✓
    
    ============================================================
    СВОДКА
    ============================================================
    Всего протестировано: 1
    CVE-2025-55183 уязвимо: 1
    CVE-2025-55184 уязвимо: 1
    Оба CVE уязвимы: 1
    Не уязвимо: 0
    

## 📚 Подробная документация

Для всестороннего технического анализа обеих уязвимостей:

**DOCUMENTATION.md** \- Полная техническая документация, охватывающая:

  * Детальный анализ уязвимостей для обоих CVE
  * Объяснение первопричин
  * Методы эксплуатации с примерами
  * Оценка воздействия
  * Стратегии обнаружения
  * Пошаговое устранение
  * Лучшие практики предотвращения
  * Примеры кода и PoC



## 🛡️ Устранение уязвимостей

### Необходимые немедленные действия

**Обе уязвимости исправлены в одних и тех же версиях патчей:**

  1. **Обновите React** до исправленной версии:

root@kitploit:~
         
         npm install some-email@example.com some-email@example.com
         # или
         npm install react@latest react-dom@latest
         

  2. **Обновите Next.js** (если применимо):

root@kitploit:~
         
         npm install next@latest
         

  3. **Проверьте исправление** :

root@kitploit:~
         
         npm list react react-dom next
         python scanner/scan.py http://localhost:3000
         




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

Пакет| Уязвимые версии| Исправленные версии  
---|---|---  
React| 19.0.0 - 19.2.2| 19.0.3+, 19.1.4+, 19.2.3+  
Next.js 15.1.x| < 15.1.4| 15.1.4+  
Next.js 15.0.x| < 15.0.4| 15.0.4+  
Next.js 14.x| < 14.2.24| 14.2.24+  
  
### Проверка после установки патча

root@kitploit:~
    
    
    # Запустите сканер для подтверждения исправлений
    cd scanner
    python scan.py http://your-patched-app.com
    
    # Ожидаемый вывод:
    # [+] CVE-2025-55183: НЕ УЯЗВИМО
    # [+] CVE-2025-55184: НЕ УЯЗВИМО
    

## 🔒 Лучшие практики безопасности

### Предотвращение CVE-2025-55183 (Раскрытие исходного кода)

  1. **Проверка входных данных** : Всегда проверяйте входные данные Server Actions
  2. **Никогда не храните секреты в коде** : Используйте переменные окружения
  3. **Обфускация кода** : Рассмотрите обфускацию на этапе сборки для чувствительной логики
  4. **Регулярные аудиты** : Проверяйте Server Actions на наличие чувствительных данных



### Предотвращение CVE-2025-55184 (DoS)

  1. **Ограничение скорости** : Внедрите лимиты запросов
  2. **Тайм-ауты** : Установите соответствующие тайм-ауты для всех асинхронных операций
  3. **Проверки работоспособности** : Внедрите надежный мониторинг состояния
  4. **Предохранители (Circuit Breakers)** : Предотвращайте каскадные сбои



### Общие рекомендации

  * Держите React и Next.js обновленными
  * Подпишитесь на уведомления безопасности
  * Внедрите Web Application Firewall (WAF)
  * Регулярное сканирование безопасности в CI/CD
  * План реагирования на инциденты как для раскрытия, так и для DoS



## 🤝 Вклад

Вклад приветствуется! Области для улучшения:

  * Дополнительные тестовые сценарии
  * Улучшенные методы обнаружения
  * Лучшие примеры эксплуатации
  * Расширенная документация



Пожалуйста, не стесняйтесь отправлять Pull Request.

## 📄 Лицензия

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

## 🔗 Ссылки

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

  * Блог безопасности React
  * Бюллетень безопасности Vercel



### Детали CVE

  * CVE-2025-55183 (NVD)
  * CVE-2025-55184 (NVD)



### Дополнительные ресурсы

  * CWE-502: Десериализация недоверенных данных
  * CWE-200: Раскрытие информации
  * Документация React Server Components



## ⭐ Поддержка

Если вы нашли этот репозиторий полезным для ваших исследований в области безопасности, пожалуйста, поставьте ему звезду!

## 📧 Контакты

  * **Проблемы** : GitHub Issues
  * **Безопасность** : Пожалуйста, сообщайте об уязвимостях ответственно



* * *