6. Autenticación y autorización

1. Sesiones

Si la aplicación tiene parte privada (formulario de login), se debe revisar cómo gestiona a las sesiones de los usuarios. Comprobar:

  • ¿Cambia la cookie de sesión cuando inicio sesión? --> Session fixation

  • ¿La cookie se da de baja en el servidor cuando cierro sesión?

  • ¿Puedo hacer peticiones válidas al servidor con cookies que deberían estar invalidadas?

  • Atributos de la cookie de sesión:

    • HttpOnly

    • Secure

    • Samesite

1.1. CSRF (Cross-Site Request Forgery)

Busca ejecutar funcionalidades de usuarios autenticados, de forma que:

  • Es necesario que la víctima esté autenticada en la aplicación vulnerable.

  • A través de ingeniería social, el atacante engaña a la víctima para que, por ejemplo, haga click en un enlace que ejecuta una petición en la aplicación, con su sesión (de la víctima).

  • El usuario no es consciente de la ejecución de la petición.

  • Se abusa de la confianza que la aplicación tiene en sus usuario.

1.2. SSRF (Server-side Request Forgery)

El Server-side Request Forgery (SSRF) pretende realizar peticiones al servidor solicitando que recursos del backend ejecuten funciones maliciosas.

1.3. JWT (JSON Web Tokens)

Es un estándar de autenticación para transmitir de forma segura la información formateada como un objeto JSON.

⚠️ Para identificarlos, podemos fijarnos en los primeros caracteres del string que empiezan por "ey".

2. Roles

En el caso de haber diferentes roles de usuarios, se debe revisar los permisos de cada uno en la aplicación y si se gestiona correctamente la autorización, de forma que cada usuario sólo tiene permiso a las acciones que necesita y no puede ejecutar otras acciones de otros roles:

  • Analizar los permisos (accesos y funcionalidades) de cada tipo de rol.

  • ¿puedo acceder a recursos (rutas/funcionalidades) de otro rol?

3. CORS

Last updated