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é.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2021-21239 — Exploit pour CVE-2021-21239 : contournement de la validation de signature SAML dans pysaml2/Redash. Forge des réponses SAML avec des clés publiques intégrées pour usurper des utilisateurs et élever les privilèges via l'approvisionnement JIT. | Kitploit
Outils/GitHubGitHub/illera88/cve-2021-21239
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionAuthentificationApprentissage et Éducation
GitHubillera88/cve-2021-21239

CVE-2021-21239

Exploit pour CVE-2021-21239 : contournement de la validation de signature SAML dans pysaml2/Redash. Forge des réponses SAML avec des clés publiques intégrées pour usurper des utilisateurs et élever les privilèges via l'approvisionnement JIT.

Voir le dépôt
5il y a 1 anPas 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

Rapport technique sur CVE-2021-21239 : Vulnérabilité d'authentification SAML de Redash

Introduction à SAML

Le Security Assertion Markup Language (SAML) est un standard ouvert permettant d'échanger des données d'authentification et d'autorisation entre parties dans un système d'identité fédérée. Il permet l'authentification unique (SSO) entre domaines. Les composants clés sont :

  • Fournisseur d'identité (IdP) : Le service qui authentifie l'utilisateur et émet une assertion SAML (par exemple, l'IdP SAML de Google). Il signe l'assertion avec sa clé privée pour garantir l'intégrité et l'authenticité.
  • Fournisseur de services (SP) : L'application qui s'appuie sur l'IdP pour l'authentification (par exemple, Redash). Le SP vérifie la signature à l'aide de la clé publique ou du certificat de l'IdP pour faire confiance à l'assertion.

Dans un flux SAML typique, le SP redirige l'utilisateur vers l'IdP pour l'authentification. L'IdP renvoie une réponse SAML signée contenant des assertions sur l'utilisateur (par exemple, e-mail, nom). Le SP valide la signature et provisionne ou connecte l'utilisateur.

Explication de la vulnérabilité

CVE-2021-21239 est une vulnérabilité de contournement de la validation de signature dans la bibliothèque pysaml2 (versions <6.5.0), utilisée par Redash <=10.1.0 pour le SSO SAML. À un niveau élevé, elle permet à un attaquant de falsifier une réponse SAML avec une clé publique intégrée arbitraire, permettant l'usurpation d'identité d'un utilisateur et l'élévation de privilèges via le provisionnement juste-à-temps (JIT).

La vulnérabilité provient de la façon dont pysaml2 invoque xmlsec1 pour vérifier les signatures SAML. Par défaut, Xmlsec1 privilégie les clés publiques intégrées dans <ds:KeyInfo> de la réponse SAML plutôt que le certificat IdP configuré. Un attaquant peut élaborer une réponse SAML avec une paire de clés RSA auto-générée, intégrer la clé publique dans <ds:RSAKeyValue> et signer l'assertion avec la clé privée. Étant donné que pysaml2 ne restreint pas xmlsec1 à n'utiliser que le certificat IdP de confiance, la signature falsifiée est considérée comme valide, ce qui permet à l'attaquant de se connecter en tant que n'importe quel utilisateur (par exemple, admin) et d'obtenir les plus hauts privilèges.

Au niveau du code, la vulnérabilité se trouve dans sigver.py de pysaml2 (fonction check_signature). La liste de commandes xmlsec1 ne contient pas l'option --enabled-key-data raw-x509-cert, ce qui permet à xmlsec1 d'utiliser des clés intégrées non fiables :

com_list = [
    self.xmlsec, '--verify', '--enabled-reference-uris', 'empty,same-doc',
    '--pubkey-cert-pem', cert_file_name,
    '--id-attr:%s' % id_attr, node_name,
    '--node-id', nodeid, '--output', output_file_name, xml_file_name
]

Cela permet des attaques où l'attaquant modifie l'e-mail dans <saml:NameID> pour usurper l'identité de n'importe quel utilisateur, en tirant parti du provisionnement JIT.

Configuration pour tester l'exploit

Pour tester l'exploit, une instance Redash locale (v10.1.0 ou antérieure) est déployée à l'aide de Docker Compose. La configuration implique la mise en place du SSO SAML avec l'IdP de Google :

  • Installer Redash via Docker Compose : Cloner le dépôt Redash, vérifier le tag vulnérable (par exemple, v10.1.0) et exécuter docker-compose up.
  • Configurer SAML dans les variables d'environnement de Redash (par exemple, REDASH_SAML_LOGIN_ENABLED=true, REDASH_SAML_METADATA_URL=... depuis l'IdP de Google).
  • Utiliser l'IdP SAML de Google pour les tests : Configurer une application SAML Google Workspace avec l'URL de callback de Redash.
  • Exposer l'instance Redash locale à l'IdP de Google à l'aide de Ngrok.

Cette configuration permet de tester la réponse SAML falsifiée envoyée via un script Python ou Burp Suite, en vérifiant l'élévation de privilèges.

Explication technique et correctif

La vulnérabilité découle du fait que l'invocation de xmlsec1 par pysaml2 permet d'utiliser des clés intégrées pour la vérification, contournant ainsi le certificat IdP de confiance. Un attaquant génère une paire de clés RSA, élabore une réponse SAML avec la clé publique dans <ds:RSAKeyValue>, modifie les attributs (par exemple, l'e-mail pour celui de l'admin) et signe l'assertion. Xmlsec1 vérifie à l'aide de la clé intégrée et la considère comme valide. Le correctif a été implémenté dans pysaml2 v6.5.0 (commit initial le 17 janvier 2021) dans src/saml2/sigver.py. La liste de commandes xmlsec1 a été mise à jour pour inclure --enabled-key-data raw-x509-cert, limitant la vérification au certificat IdP configuré :

com_list = [
    self.xmlsec, '--verify', '--enabled-reference-uris', 'empty,same-doc',
    '--pubkey-cert-pem', cert_file_name,
    '--enabled-key-data', 'raw-x509-cert',
    '--id-attr:%s' % id_attr, node_name,
    '--node-id', nodeid, '--output', output_file_name, xml_file_name
]

Cela impose la validation de la chaîne de confiance, empêchant l'utilisation de clés intégrées. Redash a corrigé ce problème en mettant à niveau pysaml2 dans les versions ultérieures (par exemple, v11+). Les versions vulnérables n'utilisaient pas --insecure ; le bug était l'absence de l'option de restriction.

Code de l'exploit

Le code de l'exploit est implémenté dans cve-2021-21239.py. Ce script Python automatise le processus de falsification d'une réponse SAML pour exploiter CVE-2021-21239 dans Redash <=10.1.0, permettant l'usurpation d'identité d'un utilisateur et l'élévation de privilèges via le provisionnement JIT. L'exploit cible l'IdP SAML de Google Workspace, mais l'attaque a été testée avec d'autres IdP (keycloak). Le script effectue les étapes suivantes :

  1. Analyse les arguments de la ligne de commande : Accepte les entrées pour le fichier modèle SAML, l'URL de Redash, l'ID IdP, l'ID d'assertion, l'e-mail, le prénom et le nom, avec des valeurs par défaut pour les tests (par exemple, email="[email protected]").
  2. Résout l'ID IdP : Récupère le idpid à partir du point de terminaison de connexion SAML de Redash s'il n'est pas fourni, garantissant la compatibilité avec la configuration de la cible.
  3. Remplit le modèle XML : Utilise un modèle (SAMLResponseTempalte.xml) avec des espaces réservés pour l'e-mail, les noms, les horodatages et l'ID d'assertion. Des horodatages UTC dynamiques sont générés avec une fenêtre de validité de 5 minutes pour passer la validation de Redash.
  4. Génère une paire de clés RSA : Crée une clé privée RSA de 2048 bits pour signer l'assertion SAML.
  5. Signe le XML : Utilise la bibliothèque Python xmlsec pour signer l'élément <saml:Assertion> avec RSA-SHA256, en intégrant la clé publique dans <ds:RSAKeyValue> pour exploiter la vulnérabilité.
  6. Vérifie la signature : Valide la signature, garantissant que la réponse SAML falsifiée est structurellement valide.
  7. Envoie la SAMLResponse : Encode en Base64 et en URL le XML signé, puis l'envoie au point de terminaison de callback SAML de Redash (/saml/callback?org_slug=default).
  8. Extrait le cookie de session : Récupère le cookie de session de la réponse, permettant à l'attaquant d'usurper l'identité de l'utilisateur ciblé.
  9. Liste les utilisateurs : Récupère la liste des utilisateurs de Redash avec les appartenances aux groupes de l'utilisateur. Cela permet d'identifier et de cibler les utilisateurs admin.

Difficultés d'exploitation et contournements

L'exploitation de CVE-2021-21239 a nécessité l'élaboration d'une réponse SAML falsifiée que Redash accepte via le provisionnement JIT. Difficultés clés et contournements :

Télécharger l’outil