
Эксплойт PoC для Next.js CVE-2025-66478, демонстрирующий RCE через небезопасную десериализацию и загрязнение прототипа в Server Actions. Включает уязвимое приложение и скрипт эксплойта на Python для исследований в области безопасности.
Этот репозиторий содержит доказательство концепции (PoC) для воспроизведения и исследования уязвимости Next.js CVE-2025-66478. Он состоит из уязвимого приложения Next.js и скрипта эксплойта на Python для тестирования уязвимости.
Это уязвимость удаленного выполнения кода (RCE), возникающая при обработке Server Actions в Next.js.
Ключевые моменты:
__proto__.| Элемент | Описание |
|---|
| CVE ID | CVE-2025-66478 |
| Тип | Удаленное выполнение кода (RCE) |
| Основная причина | Небезопасная десериализация в протоколе RSC Flight |
| Серьезность (CVSS) | 10.0 (Критическая) |
| Воздействие | Выполнение произвольных системных команд на сервере |
__proto__.Object.prototype.then во все объекты. Логика Next.js ошибочно идентифицирует эти объекты как Промисы (Thenables).await для этого "фальшивого промиса", выполняется вредоносный JavaScript-код, внедренный в метод then (например, child_process.execSync).sequenceDiagram
participant Attacker
participant Server as Next.js Server
Attacker->>Server: POST / (JSON with "__proto__": {"then": ...})
Note right of Server: JSON Parsing Pollutes Object.prototype
Server->>Server: Application Logic encounters an Object
rect rgb(200, 150, 150)
Note right of Server: "Thenable" Check Gadget
Server->>Server: Checks: typeof obj.then === 'function'?
Server-->>Server: YES (due to pollution)
end
Server->>Server: Await/Execute malicious .then()
Note right of Server: Malicious JS Code Runs (RCE)
Server-->>Attacker: Response (Action Redirect / Error info)В результате, когда сервер обрабатывает этот манипулируемый промис, выполняется внедренный атакующим JavaScript-код, что может привести к выполнению системных команд. Включенный файл main.py является примером кода, воспроизводящего этот сценарий атаки.
Эта уязвимость затрагивает приложения Next.js, использующие App Router.
Исправленные версии:
next.js/: Пример кода уязвимого веб-приложения Next.js.exploit/: Скрипт выполнения эксплойта на Python (main.py).Сначала необходимо запустить целевой сервер Next.js.
Перейдите в каталог next.js:
cd next.js
Установите зависимости:
npm install
# Также можно использовать yarn или pnpm.
Запустите сервер разработки:
npm run dev
Убедитесь, что вы можете открыть http://localhost:3000 в браузере.
Теперь вы можете протестировать уязвимость с помощью скрипта на Python.
Перейдите в каталог exploit из корня проекта:
cd exploit
(Опционально) Рекомендуется использовать виртуальное окружение:
python3 -m venv venv
source venv/bin/activate # Для Windows: venv\Scripts\activate
Установите необходимые библиотеки:
Требуется модуль requests.
pip install requests
Запустите скрипт:
python main.py
По умолчанию он нацелен на локальный адрес (http://localhost:3000). Для тестирования другого адреса используйте опцию --url:
python main.py --url http://target-ip:3000
Этот код предоставлен только для целей исследования безопасности и обучения. Использование данного инструмента против систем или сетей без предварительного разрешения незаконно, и пользователь несет полную ответственность за любые проблемы, возникшие в результате такого использования.