Преднамеренно уязвимое приложение 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 скрытых флагов, которые проверяют различные техники эксплуатации:
| Флаг | Задача | Сложность | Баллы |
|---|---|---|---|
| 🚩 Флаг 1 | Базовая разведка | Легкая | 100 |
| 🚩 Флаг 2 | Эксплуатация Server Action | Средняя | 200 |
| 🚩 Флаг 3 | Обход доступа администратора | Средняя | 300 |
| 🚩 Флаг 4 | Удаленное выполнение кода | Сложная | 400 |
| 🚩 Флаг 5 | Секреты окружения | Средняя | 250 |
Все флаги имеют формат: 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__