Enumerar Usuarios Existentes en una Aplicación Web mediante Mensajes de Error

  • Posted on: 15 April 2015
  • By: ReYDeS

La mayoría de formularios para registrar el ingreso o hacer "login" hacia una aplicación web requieren dos ítemes de información, un nombre de usuario y una contraseña. Otras requerirán otro dato como un PIN por ejemplo.

Cuando un intento es fallido podría ser factible inferir cual de los datos ingresados es erróneo, esto depende del mensaje de error devuelto por la aplicación web, el cual debe proporcionar detalles sobre si fue erróneo el nombre de usuario o contraseña ingresados.

Para la siguiente demostración se utilizará Google Gruyere. Utilizar un navegador web para ingresar al formulario de autenticación de la Aplicación Web.

Escribir un nombre de usuario y contraseña.

El mensaje devuelto por la aplicación web no indica con precisión cual de los datos ingresados es incorrecto. Por lo tanto se debe buscar otro método para realizar la enumeración de usuarios.

Adicionalmente a utilizar el formulario de autenticación o login, es factible intentar enumerar los nombres de usuarios válidos en la aplicación web utilizando un formulario de registro para nuevos usuarios. Si la aplicación permite especificar los nombres de usuario, la enumeración es casi imposible de prevenir, pues no se permitirá la coexistencia de dos nombres de usuario iguales.

Para realizar esta prueba se utiliza el formulario de registro de usuarios de la aplicación web.

Se ingresa el nombre de usuario y la contraseña del usuario a crear o registrar en la aplicación web.

El mensaje de error devuelto informa la existencia del usuario “admin”. Para el caso de un usuario inexistente la aplicación web procede a crear la nueva cuenta.

En base a este criterio si es factible realizar la enumeración de nombres de usuario.

Es factible intentar automatizar este procedimiento con la herramienta “Fuzzer” de Zed Attack Proxy, pero en el caso de la aplicación web utilizada en la presente demostración, no solo se identificarían los nombres de usuario existentes, también se crearían o registrarían nuevas cuentas con los nombres de usuario inexistentes en la aplicación web.

El poder identificar o enumerar una lista de nombres de usuarios incrementa las probabilidades de comprometer la aplicación web, pues esta información puede ser utilizada para ataques posteriores como tratar de adivinar sus contraseñas, o realizar ataques de ingeniería social.

Fuentes:

https://google-gruyere.appspot.com/
https://code.google.com/p/zaproxy/

Sobre el Autor


Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor Independiente en Ciberseguridad
Correo Electrónico: ReYDeS@gmail.com
Twitter: https://twitter.com/Alonso_ReYDeS
LinkedIn: https://pe.linkedin.com/in/alonsocaballeroquezada/
Facebook: https://www.facebook.com/alonsoreydes
Youtube: https://www.youtube.com/c/AlonsoCaballero


Curso de Informática Forense