TGViewer
AD_POHEQUE AD_POHEQUE @ad_poheque · 2.46K subscribers
Post #119 5.37K
React RCE: пруф с нуля, без «заведомо уязвимых серверов»

какой-то ясновидящий в комментах заявил, что poc крутится «на специально дырявом сервере» и вообще «это не по-настоящему».
я пошёл, потратил два часа, собрал всё с чистого react — и вот результат:

rce воспроизводится на react 19.2.0, без патчей и плясок с бубном.
ниже полностью воспроизводимый сценарий.

1) клонируем и фиксируемся на уязвимой версии

git clone https://github.com/facebook/react.git
cd react
git checkout v19.2.0


2) ставим зависимости и собираем react-server-dom-webpack

yarn install
yarn build react-server-dom-webpack


уязвимый бандл после сборки:

build/oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js


3) минимальный уязвимый сервер poc-server.js

кладём файл CVE-2025-55182_vuln_server.js в корень репо react:

https://gist.github.com/ghe770mvp/ebd40f33ec4ed080e603fda3ec20734e

4) стартуем уязвимый сервер

в коде я использую упрощённый сервер: напрямую подключаю react-server-dom-webpack, руками собираю serverManifest с нужным гаджетом (vm.runInThisContext) и показываю, что одним HTTP-запросом через decodeAction можно выполнить произвольный код.
это минимальный пример на уровне библиотеки. в реальных фреймворках манифест генерируется автоматически и содержит ваши use server функции, там надо дальше искать реальные гаджеты и смотреть, что именно доступно через manifest.

node --conditions react-server --conditions webpack CVE-2025-55182_vuln_server.js


видим:

vuln server on http://localhost:3002

5) стреляем уже готовым эксплойтом

🔫🤬🔫

node exploit-rce-v4.js


ожидаемый вывод (пример для windows):

Test 2: vm.runInThisContext with require
RCE attempt: {"success":true,"result":"<computer_name>\\<user>\r\n"}


это прямой результат child_process.execSync("whoami"), выполненный через decodeAction из уязвимого бандла 19.2.0.

почему это НЕ «заведомо дырявый сервер»

- версия: четкий git checkout v19.2.0, без правок исходников и без патчей;

- бандл: берём как есть из build/oss-stable/...react-server-dom-webpack-server.node.development.js, собранный yarn build react-server-dom-webpack;

- манифест: даём vm.runInThisContext, и при отсутствии hasOwnProperty-проверки payload через $ACTION_* проламывает код.


итог простой:
react rsc rce — это не теоретическая страшилка, а реальный шелл на хосте из POST запроса.


хочешь спорить — сначала повтори шаги, потом уже пиши свое «экспертное» мнение. будет мне уроком тоже :)

👾
  • 👾 4
More from @ad_poheque
  1. Sep 25, 2026https://youtu.be/sKCvgi1zXmA в докладе рассматриваются десктопные приложения как векторы а…
  2. Sep 25, 2026за оффтоп пардон
  3. Sep 22, 2026две критические уязвимости в VMware vCenter (8.0.3.00900 и ранее) исследователь обнаружил…
  4. Sep 22, 2026обход проверки SafeControls в SharePoint через внедрение в RegisterDirective.GetHtml(), ко…
  5. Sep 19, 2026Гипотеза про CVE-2026-49179: роль ldifde в цепочке (домен lol.ru, атакующий eve@lol.ru)
  6. Sep 17, 2026https://www.youtube.com/watch?v=BtC0LGa3Oxs в докладе Вячеслав Цепенников представляет кон…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →