Inyección de cabeceras HTTP
¿Qué es la inyección de cabeceras HTTP?
La inyección de cabeceras HTTP es un método de ataque que aprovecha vulnerabilidades en aplicaciones web. Al insertar cadenas maliciosas, incluidos caracteres de retorno de carro y salto de línea (CRLF), en las solicitudes HTTP enviadas al servidor web, los atacantes pueden manipular las respuestas HTTP. Las aplicaciones web que almacenan directamente parámetros proporcionados por el usuario en las cabeceras de respuesta HTTP sin sanearlos son especialmente vulnerables a este tipo de ataque.
Por ejemplo, supongamos que un navegador envía la siguiente solicitud con un parámetro:
http://f5.com/index.html?status=1
Si la aplicación web desea utilizar el parámetro status=1 para gestionar la sesión, podría devolver una respuesta HTTP como esta:
HTTP/1.1 200 OK
...
Set-Cookie:status=1
Ahora, supongamos que la solicitud se modifica con la siguiente entrada especialmente diseñada:
http://f5.com/index.html?status=1<CRLF><CRLF><html><body><script>~</script></body></html>
La respuesta HTTP de la aplicación web se modificaría de la siguiente manera:
HTTP/1.1 200 OK
...
Set-Cookie:status=1
<línea vacía>
<html><body><script>~</script></body></html>
En las respuestas HTTP, cualquier contenido situado después de dos secuencias CRLF (una línea en blanco) se considera el cuerpo de la respuesta y el navegador lo renderiza. Si el cuerpo de la respuesta incluye código JavaScript malicioso, el navegador lo ejecutará, lo que puede provocar vulnerabilidades de seguridad. Además, los atacantes pueden manipular los datos de entrada para inyectar contenido en las cabeceras, como:
<CRLF>Set-Cookie:PHPSESSID=abc
Esto establecería un ID de sesión específico en el navegador y permitiría ataques de fijación de sesión.
Cómo prevenir la inyección de cabeceras HTTP:
- Saneamiento: Valide y sanee los parámetros recibidos en las cabeceras de las solicitudes HTTP para neutralizar cadenas maliciosas.
- Firewall de aplicaciones web (WAF): Dado que es difícil sanear todas las aplicaciones web de forma coherente, implementar un WAF es una solución eficaz. Un WAF supervisa el tráfico de la capa de aplicación y puede bloquear las solicitudes que se consideren ataques, mitigando así los riesgos de inyección de cabeceras HTTP.

