← Volver al listado de tecnologías
Natas Nivel 5 - Manipulación de Cookies
Natas Nivel 5 - Manipulación de Cookies
Objetivo
La página dice: “Access disallowed. You are not logged in.”
Teoría: Cookies HTTP
¿Qué son?
Las cookies son pequeños datos que el servidor almacena en el navegador del cliente para mantener estado entre peticiones.
Flujo
1. Servidor → Set-Cookie: loggedin=0
2. Navegador guarda cookie
3. Navegador → Cookie: loggedin=0 (en cada petición)
Usos Comunes
| Uso | Ejemplo |
|---|---|
| Sesiones | session_id=abc123 |
| Preferencias | theme=dark |
| Tracking | _ga=... (Google Analytics) |
| Autenticación | auth_token=xyz |
El Problema
Si el servidor confía en valores de cookies sin validarlos, un usuario puede modificarlos.
Solución
Paso 1: Ver las cookies actuales
En DevTools (F12) → Application → Cookies
O en consola:
document.cookie
Verás algo como: loggedin=0
Paso 2: Modificar la cookie
Método 1: DevTools
- F12 → Application → Cookies
- Doble click en el valor “0”
- Cámbialo a “1”
- Recarga la página
Método 2: Consola JavaScript
document.cookie = "loggedin=1";
Método 3: curl
curl -u natas5:CONTRASEÑA \
-b "loggedin=1" \
http://natas5.natas.labs.overthewire.org/
Paso 3: Recargar
Con la cookie modificada, la página mostrará la contraseña.
Atributos de Cookies
| Atributo | Propósito | Seguridad |
|---|---|---|
HttpOnly | No accesible desde JavaScript | Previene robo XSS |
Secure | Solo enviada por HTTPS | Previene MITM |
SameSite | Controla envío cross-site | Previene CSRF |
Path | Limita a ruta específica | - |
Expires | Fecha de expiración | - |
Cookie Segura vs Insegura
# Insegura
Set-Cookie: session=abc123
# Segura
Set-Cookie: session=abc123; HttpOnly; Secure; SameSite=Strict
Herramientas para Cookies
Extensiones de navegador
- Cookie Editor (Chrome/Firefox)
- EditThisCookie
Línea de comandos
# Enviar cookie
curl -b "nombre=valor" http://sitio.com
# Guardar cookies
curl -c cookies.txt http://sitio.com
# Usar cookies guardadas
curl -b cookies.txt http://sitio.com
Por Qué el Nivel es Vulnerable
El servidor hace algo como:
<?php
if ($_COOKIE['loggedin'] == 1) {
echo "Contraseña: ...";
}
?>
Confía ciegamente en el valor de la cookie sin validación.
Conceptos Aprendidos
| Concepto | Descripción |
|---|---|
| Cookies | Estado en el cliente |
| Cookie tampering | Modificación de cookies |
| Session management | Manejo de sesiones |
| Input validation | Validar datos del cliente |
Siguiente Nivel
- URL: http://natas6.natas.labs.overthewire.org
- Usuario: natas6