Introducción
El contrabando de peticiones HTTP es una vulnerabilidad que surge cuando hay falta de coincidencia entre diferentes componentes de infraestructura web. Esto incluye proxies, balanceadores de carga y servidores que interpretan las fronteras de las peticiones HTTP. Por ejemplo, considera una estación de tren donde los tickets son comprobados en múltiples puntos antes de embarcar. Si cada punto de control tiene criterios diferentes para validar el ticket, un viajero podría explotar estas inconsistencias para embarcar al tren sin un ticket válido. De forma similar, en las peticiones web, esta vulnerabilidad involucra principalmente la longitud del contenido y los headers de encoding de transferencia, los cuales indican el final del body de una petición. Cuando estos headers son manipulados o interpretados de forma inconsistente a lo largo de los componentes, puede resultar en una petición mezclada con otra.

Los ataques de partición de peticiones o HTTP desync son posibles por la naturaleza keep-alive de las conexiones y pipelining HTTP, la cual permite que múltiples peticiones se manden por la misma conexión TCP. Cuando se calcula el tamaño de Content-Length (CL) y Transfer-Encoding (TE), es crucial considerar la presencia de los caracteres carriage return (\r) y newline (\n). Estos caracteres no sólo son parte del formateo del protocolo HTTP sino que también impactan al cálculo del tamaño de los contenidos.
Al comprobar vulnerabilidades de contrabando HTTP, es importante saber que algunas herramientas pueden "arreglar" automáticamente el header Content-Length por defecto. Esto significa que si estamos usando dichas herramientas para correr payloads, nuestros valores Content-Length pueden ser sobrescritos, potencialmente cambiando los resultados.
Testear en busca de request smuggling puede potencialente romper un sitio web de varias maneras (cache poisoning, las peticiones de otros usuarios pueden falar, o incluso la pipeline del backend puede desincronizarse), por lo que debemos tener extremada precaución al probar esto en una web en producción.
Objetivos
- Entender qué es HTTP Request Smuggling y su impacto.
- Identificar vulnerabilidades HTTP Request Smuggling en aplicaciones web.
- Explotar estas vulnerabilidades en un entorno controlado.
- Entender y aplicar medidas para mitigar y prevenir estas vulnerabilidades.
Pre-requisitos
- Entendimiento básico del protocolo HTTP/1.1 y sus headers.
- Familiaridad con componentes de infraestructura web como balanceadores de carga, proxies y servidores web.
- Entendimiento básico y uso de una herramienta de proxy como BurpSuite.
Importancia de Entender HTTP Request Smuggling
- Las peticiones de contrabando pueden evadir mecanismos de seguridad como WAF.
- Los atacantes pueden contaminar la cache web haciendo contrabando de contenido malicioso, haciendo que los usuario vean información errónea o maliciosa.
- Las peticiones de contrabando pueden ser encadenadas para explotar otras vulnerabilidades en el sistema, amplificando el daño potencial.
- Debido a su naturaleza intrincada, suelen pasar desapercibidas, lo que hace que sea crucial entenderlas para los profesionales de la ciberseguridad.
