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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://wiki.securiters.com/securiters-wiki/web/6.-autenticacion-y-autorizacion.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
