
Преднамеренно уязвимое приложение Next.js для исследования безопасности CVE-2025-55182 и задач CTF
⚠️ ТОЛЬКО В ОБРАЗОВАТЕЛЬНЫХ ЦЕЛЯХ: Это намеренно уязвимое приложение, предназначенное для авторизованных исследований безопасности и CTF-задач. НЕ используйте эти методы на неавторизованных системах.
Намеренно уязвимое приложение Next.js 15.1.6, демонстрирующее CVE-2025-55182 (React2Shell) — критическую уязвимость удаленного выполнения кода в React Server Components. Создано для исследователей безопасности, пентестеров и студентов, чтобы практиковать техники эксплуатации в безопасной изолированной среде.
CVE-2025-55182, также известная как React2Shell, — это критическая уязвимость удаленного выполнения кода (RCE), затрагивающая React Server Components в Next.js.
Уязвимость возникает из-за неправильной обработки сериализованных данных в React Server Actions. Злоумышленники могут создавать вредоносные полезные нагрузки, которые обходят проверку и выполняют произвольный код на сервере через:
Перед началом убедитесь, что у вас установлено следующее:
docker --version
docker-compose --version
git --version
# 1. Клонируйте репозиторий
git clone https://github.com/Machine-farmer/PunchingBag-for-React2Shell.git
cd PunchingBag-for-React2Shell
# 2. Соберите и запустите с помощью Docker
docker-compose up --build
# 3. Откройте приложение
# Откройте браузер по адресу: http://localhost:3000
# 1. Клонируйте репозиторий
git clone https://github.com/Machine-farmer/punchingbag-cve-2025-55182.git
cd punchingbag-cve-2025-55182
# 2. Установите зависимости
npm install
# 3. Запустите сервер разработки
npm run dev
# 4. Откройте по адресу http://localhost:3000
⚠️ Предупреждение: Ручная настройка без Docker НЕ рекомендуется для исследований безопасности. Всегда используйте Docker для изоляции.
# Запустите уязвимое приложение
docker-compose up
# Запустите в фоновом режиме (detached)
docker-compose up -d
# Просмотр логов
docker-compose logs -f
# Остановите контейнеры
docker-compose down
# Остановите и удалите тома
docker-compose down -v
# Полная очистка (удаляет образы)
docker-compose down -v --rmi all
После запуска перейдите по адресу:
PunchingBag содержит 5 скрытых флагов, которые проверяют различные техники эксплуатации:
Все флаги имеют формат: CTF{description_here}
# Изучите приложение
curl http://localhost:3000
# Проверьте доступные конечные точки
curl http://localhost:3000/dashboard
curl http://localhost:3000/admin
Перехватывайте отправку форм и изменяйте полезную нагрузку:
// Пример вредоносной полезной нагрузки
{
"name": "attacker",
"email": "[email protected]",
"message": "__proto__: { isAdmin: true }"
}
# Инъекция вредоносных заголовков
curl -X POST http://localhost:3000/api/data \
-H "Content-Type: application/json" \
-H "x-user-data: {\"role\":\"admin\"}" \
-d '{"exploit": true}'
Проверьте .env.local на наличие учетных данных или эксплуатируйте аутентификацию:
# Токен администратора по умолчанию (намеренно слабый)
Username: admin
Token: super_secret_admin_key_12345
В уязвимом компоненте используйте функцию выполнения команд:
# Симуляция RCE
Command: cat /flag.txt
__proto__punchingbag-cve-2025-55182/
├── app/
│ ├── actions.js # Уязвимые Server Actions
│ ├── layout.js # Макет приложения
│ ├── page.js # Главная страница с информацией о CTF
│ ├── globals.css # Глобальные стили
│ ├── admin/
│ │ └── page.js # Панель администратора (Флаг 3, 4)
│ ├── dashboard/
│ │ └── page.js # Панель пользователя (Флаг 1, 2)
│ └── api/
│ ├── data/
│ │ └── route.js # Конечная точка API
│ └── submit/
│ └── route.js # Конечная точка отправки формы
├── components/
│ ├── Logo.js # Логотип приложения
│ ├── VulnerableForm.js # Эксплуатируемый компонент формы
│ └── UserDisplay.js # Отображение профиля пользователя
├── lib/
│ └── flags.js # Управление флагами
├── public/
│ └── boxing-bag.png # Иконка приложения
├── .env.local # Переменные окружения (Флаг 5)
├── docker-compose.yml # Конфигурация Docker
├── Dockerfile # Определение контейнера
├── next.config.js # Конфигурация Next.js
├── package.json # Зависимости
└── README.md # Этот файл
Это приложение НАМЕРЕННО УЯЗВИМО и предназначено для:
✅ Разрешенное использование:
❌ Запрещенное использование:
# Правильная очистка после использования
docker-compose down -v --rmi all
Вклад приветствуется! Пожалуйста, следуйте этим рекомендациям:
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)Этот проект лицензирован под лицензией MIT — подробности см. в файле LICENSE.
Если этот проект помог вам узнать о веб-безопасности, пожалуйста, поставьте звезду! ⭐
Сделано с 🥊 для исследований безопасности
Помните: С большой силой приходит большая ответственность. Используйте свои навыки этично или неэтично, шучу😁, никогда не используйте неэтично.
| Флаг | Задача | Сложность | Баллы |
|---|
| 🚩 Флаг 1 | Базовая разведка | Легкая | 100 |
| 🚩 Флаг 2 | Эксплуатация Server Action | Средняя | 200 |
| 🚩 Флаг 3 | Обход доступа администратора | Средняя | 300 |
| 🚩 Флаг 4 | Удаленное выполнение кода | Сложная | 400 |
| 🚩 Флаг 5 | Секреты окружения | Средняя | 250 |