¿Es malo permitir que los administradores cambien el correo electrónico de un usuario al restablecer las contraseñas?

2

Estoy confundido acerca de cómo implementar la funcionalidad de restablecimiento de contraseña. Estoy probando una aplicación web con dos roles: administrador y usuario normal. Solo los administradores pueden usar la funcionalidad de restablecimiento de contraseña (no tiene MFLAC).

Esta función encuentra un usuario y carga una vista con datos básicos, por ejemplo "TEST_USER" con correo electrónico "[email protected]". Los campos no tienen el atributo "solo lectura", por lo que pueden ser modificados por el administrador. Cuando el usuario hace clic en el botón "Restablecer", la aplicación envía un correo electrónico a "TEST_USER" con una URL ( https://host.com/resetPassword.aspx?token=TOKEN ).

El enlace carga una página con dos campos, "nueva contraseña" y "verificar nueva contraseña". Aquí cambié exitosamente la contraseña y completé el proceso.

Si un atacante cambia el valor en el campo "correo electrónico" y ingresa "[email protected]", la aplicación enviará el enlace al atacante, lo que permitirá al atacante cambiar la contraseña. Es importante mencionar que esta función es susceptible a CSRF porque no tiene un token .

Así que creo que esto es una vulnerabilidad porque un atacante o administrador puede cambiar el correo electrónico y restablecer la contraseña para cualquier usuario sin que ellos lo sepan. Al usar CSRF, un atacante puede enviar una URL maliciosa que restablece la contraseña a un administrador.

Entonces, creo que esta no es una forma correcta de implementar esta funcionalidad porque he escuchado que una buena práctica es enviar solo un token a la dirección de correo electrónico.

Creo que la forma correcta de hacerlo sería:

  1. Asegúrese de que la dirección de correo electrónico pertenezca al usuario cuya contraseña se está restableciendo.
  2. Debes enviar solo un token en lugar de una URL.
  3. En la página ResetPassword.aspx pega el token.
  4. Verifique al usuario con preguntas de seguridad.
  5. Permita que el usuario complete "nueva contraseña" y "verifique la nueva contraseña"

¿Esto es una vulnerabilidad? ¿Es esta la forma correcta de implementar esta funcionalidad?

    
pregunta Jorge 09.01.2018 - 21:04
fuente

2 respuestas

1

Sí, esto es definitivamente una vulnerabilidad. Dos en realidad:

  1. La protección CSRF faltante para una acción sensible
  2. No requiere una contraseña al cambiar una dirección de correo electrónico

Lo primero es obvio, y ya explicaste por qué es malo. El segundo es malo porque esencialmente es lo mismo que no requiere una contraseña al cambiar una contraseña (que es mal ), y, obviamente, le permite a un administrador hacerse cargo de las cuentas. Combinando estos dos problemas, un atacante no autenticado podría hacerse cargo de cuentas arbitrarias.

Si el segundo problema es algo que debe abordarse depende de la aplicación. Es posible que se desee que un administrador tenga permisos de gran alcance, incluido el control de las cuentas de otros usuarios. Si esto no se desea, un administrador no debería tener la opción de cambiar las direcciones de correo electrónico, solo los propios usuarios deberían poder hacer esto.

    
respondido por el tim 11.01.2018 - 11:13
fuente
0

Sólo un comentario:

  

Verifique al usuario con preguntas de seguridad.

Esta es una idea aparentemente buena, que se ha utilizado muchas veces 1 para hackear correos electrónicos. Las buenas contraseñas son difíciles de establecer, pero siempre he encontrado buenas preguntas de seguridad que solo los usuarios pueden conocer y recordar fácilmente. El solo hecho de leer una página pública de Facebook puede dar pistas para obtener respuestas a la mayoría de las preguntas de seguridad ...

Y no lo olvide, tal vez pueda proteger su privacidad de otro usuario que solo tenga un rol de administrador llamado . Pero un administrador del sistema puede acceder a los datos almacenados en bruto y puede cambiar cualquier contraseña en cualquier momento. Simplemente, normalmente no tienen interés en hacer eso ...

1 Al menos la cuenta de correo electrónico de Sarah Palin fue pirateada de esa manera durante la campaña en Estados Unidos para las elecciones presidenciales

    
respondido por el Serge Ballesta 10.01.2018 - 17:47
fuente

Lea otras preguntas en las etiquetas