Transmisión Vulnerable de Credenciales en una Aplicación Web
Si una aplicación web utiliza una conexión HTTP sin cifrar para transmitir credenciales de “login” o registro de ingreso, un atacante posicionado en la red puede de hecho interceptar estas credenciales. Esta interceptación puede suscitarse en diversos escenarios.
Aunque el “login” o registro de ingreso se suscite utilizando HTTPS, aún existe la posibilidad de exponer las credenciales si la aplicación no las gestiona adecuadamente, como transmitir las credenciales en una cadena de consulta, lo cual deja rastros en el navegador web o servidor web. Adicionalmente algunas aplicaciones web almacenan las credenciales de usuario en cookies, lo cual es un diseño inadecuado, pues estas pueden ser también comprometidas.
En algunas aplicaciones web se utiliza HTTP para áreas sin autenticación y se cambia hacia HTTPS al momento del login. Aunque el escenario ideal debería ser cambiar a HTTPS cuando se carga la página de login en el navegador, lo cual permite al usuario verificar la autenticidad de la página antes de ingresar sus credenciales.
Para la siguiente demostración se utilizará Google Gruyere como aplicación web vulnerable.
Utilizar Firefox configurando previamente a Zed Attack Proxy como proxy de interceptación. De esta manera se vigilará el tráfico en ambas direcciones entre el cliente y el servidor.
El propósito es identificar los casos donde las credenciales son enviadas en una cadena de consulta URL, como una cookie, o son transmitidas de retorno desde el servidor hacia el cliente. Esto permitirá indentificar los medios por el cual un atacante podría interferir con la lógica de la aplicación para comprometer otras credenciales de usuario.
En primera instancia se identifica el envío de las credenciales en texto plano.
También se identifica la creación de una cookie conteniendo el nombre de usuario utilizado, un probable nivel de privilegio, y un código numérico.
Otra área donde se realiza el intercambio de credenciales en texto plano es en el perfil del usuario, donde es factible cambiar la contraseña entre otros datos más.
Si cualquier información sensible es transmitido sobre un canal sin cifrar es vulnerable a interceptación. En caso no se transfieran de manera insegura analizar lo que pareciese ser una codificación u ofuscación de datos, pues podría se posible identificar y revertir estos algoritmos. Adicionalmente si las credenciales son enviadas utilizando HTTPS pero el formulario de registro de ingreso o login utiliza HTTP, la aplicación es vulnerable a un ataque de hombre en el medio, lo cual puede ser utilizado para capturar credenciales.
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
WhatsApp: https://wa.me/51949304030
Correo Electrónico: ReYDeS@gmail.com
Twitter: https://twitter.com/Alonso_ReYDeS
Youtube: https://www.youtube.com/c/AlonsoCaballero
LinkedIn: https://pe.linkedin.com/in/alonsocaballeroquezada/