Articulo de referencia

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 usua...

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 la 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 manipulando los parámetros de entrada que se pasan a las funciones internas de búsqueda, adición o modificación. Cuando una aplicación no sanitiza correctamente la entrada del usuario, es posible que un atacante modifique una instrucción LDAP.

Implementación técnica

La inyección LDAP se produce cuando la entrada del usuario no se sanitiza correctamente y luego se utiliza como parte de un filtro LDAP generado dinámicamente. Esto da lugar a una posible manipulación de las sentencias LDAP ejecutadas en el servidor LDAP para ver, modificar o eludir las credenciales de autenticación. [ 1 ]

Prevención

La inyección LDAP es un ataque conocido que puede prevenirse con medidas sencillas. Toda la información proporcionada por el cliente debe revisarse y desinfectarse para eliminar cualquier carácter que pueda provocar un comportamiento malicioso. La validación de la entrada debe comprobar la presencia de caracteres especiales propios del lenguaje de consulta LDAP, tipos de datos conocidos, valores válidos, etc. [ 2 ] También se puede utilizar la validación de entrada mediante lista blanca para detectar entradas no autorizadas antes de que se envíen a la consulta LDAP.

Ejemplo

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

String filter = "(&(USER = " + user_name + ") (PASSWORD = " + user_password + "))";

En un caso de uso típico, un usuario proporcionaría sus credenciales y este filtro se usaría para validarlas. Sin embargo, un atacante puede introducir datos manipulados para la variable, user_namecomo johnDoe)(&)y cualquier valor para la contraseña. La consulta final se convertirá entonces en (&(USER = johnDoe)(&))(PASSWORD = pass)). Solo la primera parte de esta consulta es procesada por el servidor LDAP (&(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.

Véase también

Referencias

  1. 1 2 Alonso, JM; Bordon, R.; Beltran, M.; Guzman, A. (1 de noviembre de 2008). "Técnicas de inyección LDAP". 11.ª Conferencia Internacional IEEE de Singapur sobre Sistemas de Comunicación de 2008. pp. 980–986 . doi : 10.1109/ICCS.2008.4737330 . ISBN  978-1-4244-2423-8.
  2. 1 2 "The Web Application Security Consortium / LDAP Injection" . projects.webappsec.org . Consultado el 9 de diciembre de 2016 .
  3. Varanasi, Balaji (26 de noviembre de 2013). LDAP práctico con Spring: Desarrollo sencillo de LDAP empresarial con Java . Apress. pág. 97. ISBN  978-1-4302-6398-2Consultado el 9 de diciembre de 2016 .