* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
Encuentra las vulnerabilidades que más importan para que puedas solucionarlas más rápido. Intruder rastrea tu superficie de ataque, realiza escaneos proactivos de amenazas, encuentra problemas en toda tu pila tecnológica, desde APIs hasta aplicaciones web y sistemas en la nube. [**Pruébalo gratis**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoy.
El atributo `Domain` especifica **qué hosts pueden recibir una cookie**. Si no se especifica, el atributo **se establece por defecto** en el **mismo host** que estableció la cookie, _**excluyendo subdominios**_. Si se especifica `Domain`, entonces **siempre se incluyen los subdominios**. Por lo tanto, especificar `Domain` es menos restrictivo que omitirlo. Sin embargo, puede ser útil cuando los subdominios necesitan compartir información sobre un usuario.
Por ejemplo, si estableces `Domain=mozilla.org`, las cookies están disponibles en subdominios como `developer.mozilla.org`. Pero si no lo haces, la cookie no se enviará a los subdominios.
Si un **subdominio**`sub.example.com`**establece una cookie** con el atributo _domain_ de **`.example.com`**, se enviará en las solicitudes al **dominio padre**.
El atributo `Path` indica una **ruta URL que debe existir en la URL solicitada para enviar la cabecera `Cookie`**. El carácter `%x2F` ("/") se considera un separador de directorios, y también se consideran las subcarpetas.
Tabla de [Invicti](https://www.netsparker.com/blog/web-security/same-site-cookie-attribute-prevent-cross-site-request-forgery/) y ligeramente modificada.\
**\*Ten en cuenta que a partir de Chrome80 (feb/2019), el comportamiento predeterminado de una cookie sin un atributo samesite será laxo** ([https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/](https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/)).\
Ten en cuenta que temporalmente, después de aplicar este cambio, las **cookies sin una política SameSite** en Chrome se tratarán como **None** durante los **primeros 2 minutos y luego como Lax para las solicitudes POST de nivel superior entre sitios**.
* Si la página está **enviando las cookies como respuesta** de una solicitud (por ejemplo, en una página de **PHPinfo**), es posible abusar de XSS para enviar una solicitud a esta página y **robar las cookies** de la respuesta (ver un ejemplo en [https://hackcommander.github.io/pentesting-article-1/)](https://hackcommander.github.io/pentesting-article-1/)
* Esto se puede evitar con solicitudes **TRACE****HTTP** como respuesta del servidor (si este método HTTP está disponible), se reflejarán las cookies enviadas. Esta técnica se llama **Cross-Site Tracking**.
* Los navegadores modernos evitan esta técnica al no permitir el envío de una solicitud TRACE desde JS. Sin embargo, se han encontrado algunas formas de evadir esto en software específico, como enviar `\r\nTRACE` en lugar de `TRACE` a IE6.0 SP2.
* Otra forma es la explotación de vulnerabilidades de día cero de los navegadores.
* Es posible **sobrescribir cookies HttpOnly** realizando un ataque de desbordamiento de Cookie Jar:
{% content-ref url="cookie-jar-overflow.md" %}
[cookie-jar-overflow.md](cookie-jar-overflow.md)
{% endcontent-ref %}
* Es posible utilizar un ataque de [**Cookie Smuggling**](./#cookie-smuggling) para extraer estas cookies.
### Secure
La solicitud solo enviará la cookie en una solicitud HTTP si la solicitud se transmite a través de un canal seguro (normalmente **HTTPS**).
## Prefijos de las Cookies
Prefijo **`__Secure-`**: debe establecerse con la bandera `secure` desde una página segura (HTTPS).
Prefijo **`__Host-`**: debe establecerse con la bandera `secure`, debe ser desde una página segura (HTTPS), no debe tener un dominio especificado (y por lo tanto, no se envían a subdominios) y la ruta debe ser `/`.
Las cookies con prefijo `__Host-` no se pueden enviar a superdominios (cookies de subdominios a dominios) o subdominios (cookies de dominios a subdominios), por lo que si desea aislar las cookies de su aplicación, no es mala idea agregar el prefijo `__Host-` a todo.
## Ataques a las Cookies
Si encuentra algún tipo de cookie personalizada que contiene datos sensibles (ID de sesión, nombre de usuario, correos electrónicos, etc.), definitivamente debería intentar explotarla.
### Decodificación de la cookie
Si la **cookie** utiliza alguna **codificación base** (como Base64) o similar, es posible que pueda **decodificarla**, **cambiar** el **contenido** e **usurpar** usuarios arbitrarios.
### Secuestro de sesión
Robar una cookie y usarla para hacerse pasar por el usuario dentro de una aplicación.
### Fijación de sesión
El atacante obtiene una cookie de una página web y envía un enlace a la víctima para que **inicie sesión utilizando la misma cookie**. Si la cookie no cambia cuando un usuario inicia sesión, esto podría ser útil porque el atacante podría hacerse pasar por el usuario a través de una cookie.
Si encuentra un **XSS en un subdominio** o **controla un subdominio**, lea:
{% content-ref url="cookie-tossing.md" %}
[cookie-tossing.md](cookie-tossing.md)
{% endcontent-ref %}
### Donación de sesión
El atacante envía su propia sesión a la víctima. La víctima verá que ya ha iniciado sesión y supondrá que está dentro de su cuenta, pero **las acciones se realizarán dentro de la cuenta del atacante**.
Si encuentra un **XSS en un subdominio** o **controla un subdominio**, lea:
Si hay un punto de código de sustituto Unicode en una cookie establecida, `document.cookie` se corromperá permanentemente y devolverá una cadena vacía.
Varios servidores web, incluyendo los servidores Java Jetty, TomCat, Undertow y el framework web Python Zope, así como los servidores/frameworks web Python cherrypy, web.py, aiohttp server, bottle y webob, se encontraron **analizando incorrectamente las cadenas de cookies** debido al soporte residual para RFC2965, un mecanismo de citas de cookies desactualizado que utiliza RFC2616 para la definición de una cadena entre comillas.
Específicamente, **estos servidores continúan leyendo una cadena de cookies cuando encuentran un valor de cookie entre comillas dobles (dquoted), incluso si se encuentra un punto y coma**. Esto es problemático porque **los puntos y comas deben separar los pares clave-valor** en la cadena de cookies.
Por ejemplo, si un **navegador envía tres cookies, RENDER\_TEXT, JSESSIONID,** y **ASDF:**
Esto conlleva un riesgo de seguridad: si un atacante obtiene acceso de scripting entre sitios (XSS), puede utilizar este error para **filtrar cookies sensibles como las cookies HttpOnly**.
Se ha descubierto que muchos servidores web, incluyendo Undertow de Java, Zope de Python y aquellos que utilizan http.cookie.SimpleCookie y http.cookie.BaseCookie de la biblioteca estándar de Python, **analizan incorrectamente las cookies, utilizando delimitadores incorrectos para comenzar el siguiente par de nombre/valor de la cookie**. Esto permite a un atacante **falsificar múltiples cookies mientras solo controla un valor de cookie**.
En el caso de **Undertow**, comienza a analizar la siguiente cookie inmediatamente después del **final de un valor de cookie entre comillas**, sin esperar un punto y coma:
```bash
LANGUAGE="en-us" CSRF_TOKEN="SPOOFED_VALUE"
```
**Zope** comienza a analizar la siguiente cookie en una **coma**:
Como resultado, servidores como **cherrypy**, **web.py**, servidor **aiohttp**, **bottle** y **webob** (Pyramid, TurboGears) son vulnerables a este tipo de ataque.
Este problema presenta importantes **implicaciones de seguridad**. Por ejemplo, si una aplicación web utiliza **protección CSRF basada en cookies**, un atacante puede **inyectar** una cookie falsificada de **CSRF-token** para evadir esta protección. Además, el último nombre duplicado de cookie en los paquetes http.cookie de Python anula a cualquier cookie anterior, lo que hace que este tipo de ataque sea especialmente fácil.
Además, el **falsificado** de cookies **`__Secure-`** y **`__Host-`** puede ser abusado en un contexto inseguro. Además, en una configuración donde las cookies se pasan a un servidor backend, la **inyección de cookies podría llevar a bypasses de autorización** si el servidor backend es susceptible a falsificaciones pero el servidor frontend no lo es.
* La **cookie** es la **misma** cada vez que te **logueas**.
* Cierra sesión e intenta usar la misma cookie.
* Intenta iniciar sesión con 2 dispositivos (o navegadores) en la misma cuenta usando la misma cookie.
* Verifica si la cookie tiene alguna información y trata de modificarla.
* Intenta crear varias cuentas con nombres de usuario casi iguales y verifica si puedes ver similitudes.
* Verifica si existe la opción de "**recordarme**" para ver cómo funciona. Si existe y podría ser vulnerable, siempre utiliza la cookie de **recordarme** sin ninguna otra cookie.
* Verifica si la cookie anterior sigue funcionando incluso después de cambiar la contraseña.
Si la cookie permanece igual (o casi igual) cuando inicias sesión, esto probablemente significa que la cookie está relacionada con algún campo de tu cuenta (probablemente el nombre de usuario). Entonces puedes:
* Intenta crear muchas **cuentas** con nombres de usuario muy **similares** e intenta **adivinar** cómo funciona el algoritmo.
* Intenta **atacar por fuerza bruta el nombre de usuario**. Si la cookie solo se guarda como método de autenticación para tu nombre de usuario, entonces puedes crear una cuenta con el nombre de usuario "**Bmin**" y **atacar por fuerza bruta** cada **bit** de tu cookie porque una de las cookies que intentarás será la que pertenece a "**admin**".
* Prueba el **Padding Oracle** (puedes descifrar el contenido de la cookie). Usa **padbuster**.
Si el ataque se ha realizado con éxito, entonces podrías intentar cifrar una cadena de tu elección. Por ejemplo, si quisieras **cifrar****user=administrador**.
Tal vez una cookie pueda tener algún valor y estar firmada usando CBC. Entonces, la integridad del valor es la firma creada usando CBC con el mismo valor. Como se recomienda usar un vector de inicialización nulo, este tipo de verificación de integridad podría ser vulnerable.
Crea 2 usuarios con datos casi idénticos (nombre de usuario, contraseña, correo electrónico, etc.) e intenta descubrir algún patrón dentro de la cookie proporcionada.
Crea un usuario llamado, por ejemplo, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" y verifica si hay algún patrón en la cookie (como ECB encripta con la misma clave cada bloque, los mismos bytes encriptados podrían aparecer si el nombre de usuario está encriptado).
Debería haber un patrón (con el tamaño de un bloque utilizado). Entonces, sabiendo cómo se encriptan un montón de "a", puedes crear un nombre de usuario: "a"\*(tamaño del bloque)+"admin". Luego, puedes eliminar el patrón encriptado de un bloque de "a" de la cookie. Y tendrás la cookie del nombre de usuario "admin".
Encuentra las vulnerabilidades que más importan para que puedas solucionarlas más rápido. Intruder rastrea tu superficie de ataque, realiza escaneos de amenazas proactivas, encuentra problemas en toda tu pila tecnológica, desde APIs hasta aplicaciones web y sistemas en la nube. [**Pruébalo gratis**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoy.
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).