> For the complete documentation index, see [llms.txt](https://wiki.securiters.com/securiters-wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.securiters.com/securiters-wiki/web/6.-autenticacion-y-autorizacion.md).

# 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:&#x20;
  * 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.

{% hint style="info" %}
Recursos:

[https://lab.wallarm.com/blind-ssrf-exploitation/ ](<https://lab.wallarm.com/blind-ssrf-exploitation/ >)

[https://blog.tneitzel.eu/posts/01-attacking-java-rmi-via-ssrf/ ](<https://blog.tneitzel.eu/posts/01-attacking-java-rmi-via-ssrf/ >)
{% endhint %}

### 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.

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

{% hint style="info" %}
Recurso:\
<https://sh3llcon.org/jwt-for-beginners/>
{% endhint %}

{% hint style="info" %}
Herramientas:

<https://jwt.io/>

<https://token.dev/>
{% endhint %}

## 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

{% hint style="info" %}
Recursos:\
<https://blog.detectify.com/2018/04/26/cors-misconfigurations-explained/>
{% endhint %}
