Si bien las inyecciones LDAP no son muy comunes, pueden ser una de las más peligrosas vulnerabilidades en la web. Para empezar necesitamos aclarar para aquellos que no entienden el término que significa el acrónimo LDAP. Lightweight Directory Access Protocol o traducido al español Protoloco Ligero de Acceso a Directorio es el que se encarga del control de las listas de control de acceso de un dominio o red determinado. Para los amantes de Windows, quizás hayan escuchado hablar más de Active Directory que no es sino la versión de LDAP del entorno de Windows. Otros sitemas operativos utilizan versiones de OpenLDAP, Novell Directory Services, Apache Directory Service y otros.
Por tanto una vez dicho lo anterior explicamos la forma en que se puede realizar una inyección LDAP. Aunque como dijimos al principio el ataque de inyección LDAP no es muy común, se parece de alguna forma a un ataque de inyección SQL, ya que para los efectos de una aplicación web, el acceso a LDAP es muy parecido al acceso a una base de datos, la diferencia estriba en que con los conocimientos necesarios, en vez de atacar a un servidor SQL el hacker ataca al sistema de validación de usuarios, para intentar así cambiar la permisología de estos y hasta crear usuarios con los cuales acceder luego a otros equipos o a zonas más sensibles del dominio.
Uno de los preferidos vectores de acceso son los formularios de búsqueda de usuarios. Imaginesmos un simple formulario que solicite el "login" o identificador de usuario para mostrar algún dato de este.
<input type="text" size=20 name="nombre">Introduzca el nombre de usuario a buscar</input>
Al igual que en el caso del SQL injection, el programador toma el contenido del campo nombre sin desinfectarlo y lo introduce en una consulta como:
string nombre = Request.Querystring("nombre")
String ldapSearchQuery = "(cn=" + nombre +")";
Si el usuario coloca el nombre "alberto" esto produciría la cadena de consulta "(cn = alberto)". Pero que sucedería si el usuario insertara en el campo nombre la cadena "alberto)(|(password=*)" .En este caso se produciría la cadena resultante "(cn=alberto)(|(password=*))" que devolvería el password del usuario alberto.
Como podrá intuir, otro de los "dulces" preferidos de los hackers son los formularios de entrada que validan a sus usuarios mediante LDAP. La que acabamos de mostrar no es más que una simple técnica de ejemplo. El atacante experimentado suele introducir rutinas completas en una vulnerabilidad como la que acabamos de mostrar.
¿Cuál es el remedio? Validación estricta de los datos de entrada o lo que conocemos como desinfección de parámetros del lado del servidor. De nada sirve validar los datos con Javascript en estos casos, el atacante utiliza formularios forjados o simplemente deshabilita el javascript en su navegador.
Pareciera repetitivo, pero existen muy buenas librerías de desinfección de parámetros para cada uno de los lenguajes de uso común actualmente. Usted también puede verificar las soluciones que ofrecen las extensiones PHPFilter para PHP, Microsoft Web Protection Library y los Proyectos AntiSami de OWASP entre muchas otras.
Este blog está dirigido a todos los programadores y desarrolladores en general, en él encontrarán consejos útiles en las respectivas áreas del desarrollo de aplicaciones, especialmente de Aplicaciones y Soluciones Web sobre diferentes entornos y plataformas móviles como Windows Phone y Android.
Suscribirse a:
Comentarios de la entrada (Atom)
Entradas populares
-
Si el video de OWASP del anterior post sobre HSTS (HTTP Strict Transport Security) los dejó con algo de espectativas acerca de la implementa...
-
Es importante cuando se habla de amenazas en aplicaciones web y otras, establecer un sistema de cálculo estándar que permita a los interesad...
-
¿Que te parecería cargar solamente código javascript en una página para aquellas funciones que un usuario decida realizar y no para todas la...
-
Un "Keylogger" es una herramienta de seguridad que se utiliza para controlar las pulsaciones de teclado en un equipo determinado. ...
-
Es una indudable ventaja el hecho de poder obtener el número IMEI de un dispositivo móvil desde una aplicación para cualquiera de las plataf...
-
Tal como su traducción simple al castellano indica los UGLY URLs son Enlaces (URLs) feos. Indudablemente esto no ayuda mucho pero nos da una...
-
El Scareware es un nuevo término acuñado recientemente, es lo que se conoce como "software de seguridad falso". Normanlmente este...
-
Denunciar una página fraudulenta o de phishing es un proceso mucho más simple de lo que pudiera parece, a tal punto que en los primeros ataq...
-
Un "error" muy común de los programadores web en cuanto a la seguridad de sus aplicaciones, es acceder directamente a las variable...
-
Si usted está de alguna manera involucrado con cualquiera de las áreas de las tecnologías de información y no sabe lo que significa " P...
1 comentario:
Intereante Articulo!
Publicar un comentario