Natas Nivel 4 a 5

Nivel oficial: http://natas4.natas.labs.overthewire.org/

Este nivel introduce la falsificacion de cabeceras HTTP desde el cliente. El servidor restringe el acceso basandose en la cabecera Referer, asumiendo que solo puede llegar trafico desde una URL concreta — un supuesto incorrecto con implicaciones de seguridad reales.

Este wargame es un laboratorio legal y autorizado por OverTheWire. Practica estas tecnicas unicamente en entornos con permiso explicito.


Objetivo

Acceder a la pagina de natas4 para que el servidor muestre la contrasena de natas5. El servidor rechaza la peticion si el Referer no es http://natas5.natas.labs.overthewire.org/.


Que aprendes

Concepto / ComandoPara que sirve
Cabecera HTTP RefererIndica al servidor desde que pagina viene la peticion
curl -H 'Header: valor'Inyecta cabeceras arbitrarias en una peticion HTTP
curl -u usuario:passAutenticacion HTTP Basic desde la linea de comandos
Control de acceso basado en cabecerasPatron de seguridad debil — el cliente controla el valor

Concepto clave

La cabecera Referer (escrita asi, con un solo ‘r’, por error historico en el RFC) es enviada por el navegador para informar al servidor de donde viene el usuario. Es un campo completamente controlado por el cliente: cualquiera puede enviar el valor que quiera.

Usarla como mecanismo de control de acceso cae en la categoria OWASP A01:2021 - Broken Access Control: la logica de autorizacion depende de datos que el atacante puede manipular libremente. El servidor nunca puede confiar en cabeceras que no ha generado el.


Paso a paso

1. Observa el mensaje de error

Abre http://natas4.natas.labs.overthewire.org/ con credenciales natas4 / <pass_natas4>. El servidor responde algo similar a:

Access disallowed. You are visiting from "" while authorized users should come only from "http://natas5.natas.labs.overthewire.org/"

El campo entre comillas es el valor de tu cabecera Referer actual (vacio desde curl, o la pagina anterior desde el navegador).

2. Envia la peticion con el Referer falsificado

curl -u natas4:<pass_natas4> \
     -H 'Referer: http://natas5.natas.labs.overthewire.org/' \
     http://natas4.natas.labs.overthewire.org/

3. Lee la respuesta

El HTML devuelto contendra un mensaje de acceso concedido junto con la contrasena del siguiente nivel:

Access granted. The password for natas5 is <pass_natas5>

4. (Alternativa con navegador) Puedes usar la extension ModHeader (Chrome/Firefox) para sobreescribir el Referer sin salir del navegador. Util para explorar la respuesta HTML renderizada.


Por que funciona

El servidor lee $_SERVER['HTTP_REFERER'] (PHP) o el equivalente en su lenguaje, y compara el valor con la URL esperada. Esa variable refleja directamente la cabecera que manda el cliente: no hay firma, no hay token de sesion, no hay verificacion criptografica. Cualquier cliente puede poner el string que quiera.

El patron correcto para restringir acceso es la autenticacion de sesion (cookies firmadas, JWT, tokens OAuth) — mecanismos donde el servidor emite y verifica el token, no el cliente.


Errores comunes

ErrorCausaSolucion
Sigue mostrando “Access disallowed”URL del Referer mal escrita (falta / final, typo)Copia exactamente http://natas5.natas.labs.overthewire.org/
curl pide contrasena interactivaSe omitio -u natas4:<pass> o se uso solo -u natas4Incluye la contrasena en el flag o dejala en blanco para que curl la pida
Respuesta en HTML crudo ilegibleNormal en curl; busca el string “password” con grepcurl ... | grep -i password
Error de autenticacion 401Contrasena de natas4 incorrectaVerificala en el nivel anterior (natas3)

Pasar al siguiente nivel

Usa la contrasena <pass_natas5> obtenida para acceder a:


Conexiones