inyección LDAP


En seguridad informática , la inyección LDAP es una técnica de inyección de código utilizada para explotar aplicaciones web que podrían revelar información confidencial del usuario o modificar información representada en los almacenes de datos LDAP (Protocolo ligero de acceso a directorios). [1] [2] [3] La inyección LDAP explota una vulnerabilidad de seguridad en una aplicación mediante la manipulación de los parámetros de entrada pasados ​​a las funciones internas de búsqueda, adición o modificación. Cuando una aplicación no desinfecta adecuadamente la entrada del usuario, es posible que un atacante modifique una declaración LDAP.

La inyección de LDAP ocurre cuando la entrada del usuario no se desinfecta adecuadamente y luego se usa como parte de un filtro LDAP generado dinámicamente. Esto da como resultado una posible manipulación de las declaraciones LDAP realizadas en el servidor LDAP para ver, modificar u omitir las credenciales de autenticación. [1]

La inyección de LDAP es un ataque conocido y se puede prevenir con medidas sencillas. Toda la entrada proporcionada por el cliente debe verificarse/desinfectarse de cualquier carácter que pueda resultar en un comportamiento malicioso. La validación de entrada debe verificar la entrada comprobando la presencia de caracteres especiales que forman parte del lenguaje de consulta LDAP, tipos de datos conocidos, valores legales, etc. [2] La validación de entrada de la lista blanca también se puede utilizar para detectar entradas no autorizadas antes . se pasa a la consulta LDAP.

En el siguiente ejemplo, se construye una consulta para validar las credenciales de un usuario con el fin de iniciar sesión.

En un caso de uso típico, un usuario proporcionaría sus credenciales de usuario y este filtro se usaría para validar estas credenciales. Sin embargo, un atacante puede ingresar una entrada manipulada para la variable user_namecomo johnDoe)(&)y cualquier valor para la contraseña en la que se convertirá la consulta finalizada (&(USER = johnDoe)(&))(PASSWORD = pass)). El servidor LDAP procesa solo la primera parte de esta consulta (&(USER = johnDoe)(&), que siempre se evalúa como verdadero, lo que permite al atacante obtener acceso al sistema sin necesidad de proporcionar credenciales de usuario válidas.