
CVE-2025-55182 + CVE-2025-66478 - удаленное выполнение кода в Next.js/React Server Components
Этот репозиторий содержит Proof-of-Concept (PoC) эксплойт для CVE-2025-55182 — критической уязвимости удаленного выполнения кода (RCE), затрагивающей React Server Components в React версиях 19.x и Next.js версиях 15.x и 16.x при использовании App Router. Уязвимость имеет оценку CVSS 10.0, что представляет собой критический уровень риска.
Суть уязвимости заключается в некорректной обработке десериализации в React Server Components. В частности, эксплойт использует десериализацию через @ для управления объектом Chunk и перехвата его свойства then. Устанавливая status в RESOLVED_MODEL, функция initializeModelChunk вызывается с поддельным chunk, полностью контролируемым атакующим. Это позволяет манипулировать объектом _response, что в конечном итоге приводит к выполнению произвольного кода.
Эксплойт нацелен на процесс десериализации Blob, а именно на вызов response._formData.get, для внедрения контролируемого атакующим кода, который затем выполняется.
Скрипт exploit.py предоставляет PoC, демонстрирующий уязвимость. Он создает вредоносную полезную нагрузку, которая манипулирует процессом десериализации для выполнения команды на целевом сервере.
@: Эксплойт использует механизм десериализации @ для получения контроля над объектом Chunk.Chunk.prototype.then: Свойство then прототипа Chunk перезаписывается, поэтому когда chunk ожидается/разрешается, вызывается код, контролируемый атакующим.RESOLVED_MODEL: Установка status chunk в RESOLVED_MODEL запускает функцию initializeModelChunk, которая взаимодействует с контролируемым атакующим объектом _response._formData.get: Эксплойт манипулирует response._formData.get, чтобы вернуть функцию с кодом атакующего. Затем эта функция выполняется.pip install -r requirements.txt.Сохраните скрипт: Сохраните предоставленный код Python как exploit.py.
Запустите скрипт: Выполните скрипт из командной строки, указав целевой URL и команду для выполнения в качестве аргументов:
python exploit.py <target_url> <command_to_execute>
Например:
python exploit.py http://localhost:3000 "ls -l"

Этот PoC предоставляется «как есть», без каких-либо гарантий. Автор не несет ответственности за любое неправомерное использование или ущерб, причиненный этим скриптом. Используйте его на свой страх и риск.