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
Project-CVE-2026-33017 — CVE-2026-33017 - Exploit RCE non authentifié de Langflow | Kitploit
Outils/GitHubGitHub/e4zyy/project-cve-2026-33017
ReconnaissanceMécanismes de PersistanceAnalyse des VulnérabilitésExploitationExploitation d'Applications WebPost-ExploitationCommandement et ContrôleOutil d'Accès à DistanceDéveloppement de Charges Utiles
GitHube4zyy/project-cve-2026-33017

Project-CVE-2026-33017

CVE-2026-33017 - Exploit RCE non authentifié de Langflow

il y a 9h 34mPas 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 →
Voir le dépôt
Partager

Script Langflow CVE-2026-33017 — Explication du code

codé par : Xer0TLabs x Persephrak Decentralized Syndicate

Objet de ce document

Ce document est une explication de haut niveau du programme Python fourni, destinée à la revue, à la réponse aux incidents et à l'analyse défensive. Il n'inclut volontairement pas d'instructions d'utilisation, de conseils de sélection de cibles, d'exemples de payloads ou de procédures pour obtenir un accès à un système.

Le script se présente comme un exploit pour une prétendue vulnérabilité d'exécution de code à distance non authentifiée dans Langflow. Ce README décrit ce que le code tente de faire ; il ne valide pas de manière indépendante l'identifiant CVE, les versions concernées, le comportement des endpoints, les avis des fournisseurs ou l'efficacité du script.

Comportement général

Le programme est structuré comme un outil d'automatisation en ligne de commande qui tente d'envoyer des données JSON spécialement construites à un endpoint HTTP Langflow. Son principe supposé est que du code Python contrôlé par l'utilisateur, intégré dans une définition de flux, sera traité par l'application distante.

Si ce principe s'avère vrai sur une cible, le script est conçu pour le transformer en exécution arbitraire de commandes du système d'exploitation. Au-delà d'un simple contrôle d'exécution, il contient des routines destinées à établir une persistance, créer une session interactive à distance, exécuter des commandes de reconnaissance et générer une paire de clés SSH localement.

Étant donné que ces capacités pourraient compromettre des systèmes sans autorisation, le code doit être traité comme un outil potentiellement malveillant ou à double usage. Il ne doit pas être exécuté contre des systèmes, sauf si l'activité est explicitement autorisée et régie par un périmètre de test défini.

Composants principaux

Imports et comportement TLS

Le programme importe des modules Python standard pour l'analyse des arguments, la gestion JSON, les requêtes HTTP, les sockets, les threads, l'exécution de sous-processus et l'accès aux fichiers.

Il désactive la vérification normale des certificats TLS à l'échelle globale via ssl._create_unverified_context. Cela fait accepter aux requêtes HTTPS des certificats invalides ou non fiables. Bien que parfois observé dans du code de test, c'est dangereux en production car cela affaiblit la protection contre l'interception et l'usurpation d'identité.

Classes Colors et Logger

Colors définit des séquences d'échappement ANSI de terminal utilisées pour afficher une sortie colorée.

Logger est une petite classe utilitaire qui affiche des messages d'information, de succès, d'avertissement et d'erreur. Sa méthode banner() affiche le titre du script, la vulnérabilité revendiquée, la gamme de produits concernés revendiquée, la sévérité et le statut CISA KEV. Ces affirmations sont du texte de présentation dans le programme et ne prouvent pas que ces affirmations sont exactes.

Classe CVE202633017Exploit

C'est la classe principale. Lors de son initialisation, elle :

  • Stocke l'URL cible fournie et supprime une barre oblique finale.
  • Ajoute un préfixe http:// s'il manque.
  • Définit un identifiant de flux par défaut.
  • Construit un chemin de requête pour un endpoint public de construction de flux.
  • Utilise un délai d'expiration HTTP de 30 secondes.

L'identifiant de flux par défaut est une valeur fixe de type UUID. Le programme permet de le remplacer via une option de ligne de commande.

Construction du payload

_build_malicious_payload(command) crée un objet JSON ressemblant à un graphe de flux avec un nœud. Le nœud est marqué comme CustomComponent et inclut du code source Python dans un champ code.

Le code source inséré tente d'invoquer une commande du système d'exploitation. Il essaie d'abord une API Python et se rabat sur un appel de sous-processus si une erreur se produit. La structure JSON est ensuite renvoyée au code d'envoi de requêtes.

C'est la logique d'exploitation principale : elle suppose que le service récepteur exécutera le code soumis lors du traitement du graphe.

Routine de requête HTTP

_send_exploit_request(payload_data) sérialise le payload en JSON et effectue une requête HTTP POST vers l'endpoint construit. Elle inclut des en-têtes conventionnels de type navigateur et renvoie à la fois le texte du corps de la réponse et le statut HTTP.

Les erreurs HTTP sont capturées et renvoyées plutôt que de terminer le programme. D'autres exceptions, telles que les échecs de connexion ou les délais d'expiration, sont converties en chaînes et renvoyées avec le statut 0.

Vérification de vulnérabilité

check_vulnerability() envoie un payload contenant une commande marqueur, puis considère soit une réponse HTTP réussie, soit toute réponse contenant le mot error, comme une preuve que la cible « semble vulnérable ».

Ce n'est pas une méthode de vérification fiable. Une réponse 200, une réponse 500 ou une erreur d'application peuvent survenir pour de nombreuses raisons sans lien avec l'exécution de code. Le script n'observe pas indépendamment la sortie du marqueur, il peut donc produire des faux positifs.

Exécution de commande unique

execute_command(command) enveloppe la commande fournie dans le payload de flux malveillant et l'envoie. Il interprète les codes HTTP 200 ou 500 comme un résultat potentiellement réussi.

Encore une fois, les codes de statut seuls ne démontrent pas l'exécution de commande à distance. D'un point de vue de revue de code défensive, cette méthode tente de rendre l'outil flexible en permettant à un opérateur de fournir des commandes OS arbitraires.

Routine de persistance par clé SSH

_build_ssh_payload() et inject_ssh_key() sont conçues pour modifier la configuration SSH distante et les fichiers de clés autorisées. Les actions tentées incluent la création de répertoires SSH, l'ajout d'une clé publique SSH, la modification des permissions, la modification des paramètres du démon SSH, le redémarrage du service SSH, la création d'un mécanisme de persistance basé sur cron et la suppression des artefacts d'historique du shell.

Ce sont des comportements de persistance et d'évasion défensive, pas une vérification bénigne de vulnérabilité. Le programme peut revendiquer un succès simplement sur la base d'un statut HTTP, sans confirmer qu'un fichier ou un service a réellement été modifié.

Routine de shell inversé

_build_reverse_shell_payload() assemble plusieurs mécanismes de repli destinés à amener la cible à initier une connexion réseau sortante vers un hôte et un port contrôlés par l'opérateur.

spawn_reverse_shell() démarre un écouteur TCP local dans un thread d'arrière-plan, attend brièvement, envoie le payload distant, puis attend une connexion.

_start_listener() accepte une connexion et fournit une simple boucle de commandes interactive. C'est une capacité d'accès à distance. Elle dispose d'une gestion d'erreurs limitée, n'authentifie pas la connexion entrante et ne convient pas à une administration sûre ou à une infrastructure de test légitime.

Routine de chaîne complète

full_exploit_chain() combine plusieurs comportements :

  • Tente la vérification de vulnérabilité faible.
  • Envoie des commandes de reconnaissance du système d'exploitation.
  • Tente éventuellement la persistance par clé SSH.
  • Démarre éventuellement le flux de travail de shell inversé.

La liste de reconnaissance est destinée à révéler l'identité, les privilèges, les informations sur le système d'exploitation, les fichiers, les processus, les services en écoute, les comptes et les tâches planifiées. C'est caractéristique d'une énumération post-compromission.

Génération locale de clés SSH

generate_ssh_key_pair(key_path) invoque le programme local ssh-keygen pour créer une paire de clés RSA de 4096 bits si les fichiers demandés n'existent pas déjà.

Elle crée un commentaire de clé faisant référence au CVE revendiqué et est destinée à soutenir la fonction de persistance SSH. Cela affecte la machine sur laquelle le script lui-même est exécuté, pas la cible distante.

Interface en ligne de commande

main() définit les options de ligne de commande pour la sélection de la cible, un identifiant de flux, l'exécution de commande unique, la gestion des clés SSH, les paramètres de shell inversé, l'exécution de chaîne complète, la génération automatique de clés et la sortie verbeuse.

Le code n'effectue qu'une validation limitée. Par exemple, les modes shell inversé et chaîne complète nécessitent un hôte et un port locaux. Il ne valide pas l'autorisation, le périmètre, la propriété de la cible, la sécurité de l'URL ou si la cible est réellement une instance Langflow.

Problèmes de fiabilité et de qualité du code

  • La vérification de vulnérabilité ne prouve pas l'exécution de code et peut étiqueter à tort une cible comme vulnérable.
  • Le script désactive la vérification des certificats, exposant ses propres requêtes à l'interception.
  • Il traite les erreurs serveur comme un succès possible, rendant les résultats ambigus.
  • Plusieurs modules et variables importés sont inutilisés ou partiellement utilisés.
  • La variable encoded_key est calculée mais jamais utilisée.
  • La logique de persistance SSH suppose des chemins, des gestionnaires de services, des permissions et des configurations qui peuvent ne pas exister.
  • La construction des commandes et le quoting sont fragiles et peuvent échouer avec des caractères spéciaux.
  • L'écouteur de shell inversé est simpliste, manque d'authentification et n'est pas fiable pour les E/S interactives.
  • Le flux de travail de chaîne complète envoie des actions potentiellement destructrices ou très intrusives sans confirmation robuste ni rollback.
  • Le script ne contient aucune journalisation d'audit, application du périmètre, limitation de débit ou garde-fous appropriés pour un outil de test autorisé.

Pertinence défensive

Les équipes de sécurité qui examinent ce code doivent traiter les éléments suivants comme des indicateurs de tentative d'exploitation ou d'activité post-compromission :

  • Activité HTTP POST dirigée vers un endpoint public de construction de flux.
  • Définitions de flux contenant du code source de composants personnalisés inattendu.
  • Processus enfants lancés par le compte de service Langflow.
  • Modifications inattendues des fichiers de clés autorisées SSH, de la configuration du démon SSH, des entrées cron ou des fichiers d'historique du shell.
  • Connexions TCP sortantes inhabituelles provenant de l'hôte Langflow.
  • Exécution de commandes de découverte du système par le processus ou le compte de service Langflow.

Pour les décisions de remédiation, fiez-vous aux avis de sécurité officiels de Langflow, aux notes de version et au processus de gestion des vulnérabilités de votre organisation plutôt qu'aux déclarations de version et de sévérité intégrées dans ce script.

Manipulation responsable

N'exécutez pas et ne redistribuez pas ce programme comme outil de déploiement ou d'accès. S'il a été trouvé sur un système, conservez-le comme preuve, enregistrez les hachages et les horodatages, restreignez l'accès à la copie, inspectez les journaux de services et de réseau pertinents et suivez le processus de réponse aux incidents de l'organisation.

Pour une évaluation autorisée légitime, utilisez un périmètre écrit, un plan de validation non destructif, une condition d'arrêt documentée et un rapport axé sur la remédiation. Évitez la persistance, les shells inversés, les modifications d'identifiants, la suppression d'historique ou toute action pouvant perturber les systèmes ou laisser un accès non autorisé derrière.

Télécharger l’outil