Labs de HTTP Smuggling

HTTP Request Smuggling

¿Qué es HTTP Smuggling?

El HTTP Request Smuggling explota la desincronización entre el front-end (proxy/CDN) y el back-end al interpretar dónde acaba una petición. Colando un prefijo en el buffer del servidor, envenenas la cola de peticiones, robas requests de otros usuarios, saltas controles del front-end y envenenas la caché.

¿Por qué practicar HTTP Smuggling?

El smuggling es de las técnicas de mayor impacto y menor competencia: casi nadie lo domina porque exige entender el flujo byte a byte entre proxies y origin. Un desincronizador bien montado tumba la seguridad del edge entero (WAF, auth del front-end) y roba sesiones. Bounties típicos: $5,000-$30,000.

¿Qué aprenderás con los labs de HTTP Smuggling?

Aprenderás a detectar la desincronización por diferencia de comportamiento y por timing, distinguir CL.TE de TE.CL, montar el prefijo que envenena la cola, capturar peticiones ajenas con su cookie, encadenar smuggling con cache poisoning, y automatizar con la extensión HTTP Request Smuggler de Burp.

Tipos de HTTP Smuggling que cubrimos

  • CL.TE

    El front-end usa Content-Length y el back-end Transfer-Encoding. El chunk que el front-end considera 'de más' queda en el buffer y se antepone a la siguiente petición.

  • TE.CL

    El front-end usa Transfer-Encoding y el back-end Content-Length. La parte del chunked que el back-end ignora envenena la cola de peticiones.

  • TE.TE

    Ambos extremos soportan Transfer-Encoding, pero se ofusca la cabecera (Transfer-Encoding: xchunked) para que uno la ignore y reaparezca la desincronización.

  • HTTP/2 downgrade

    Un front-end HTTP/2 reescribe a HTTP/1.1 hacia el origin; inyectar CRLF en pseudo-headers o valores (h2c smuggling) reintroduce el smuggling clásico sobre HTTP/2.

  • Request tunnelling

    Túnel de tu propia petición dentro de otra para leer respuestas internas o saltar controles del front-end, incluso sin una desincronización total de la cola.

¿Cómo encontrar y explotar HTTP Smuggling?

Playbook práctico — del recon a la prueba de concepto.

  1. 1

    Detección diferencial y por timing

    Manda una petición ambigua con Content-Length y Transfer-Encoding a la vez, con un chunk incompleto. Si el back-end se cuelga esperando bytes que nunca llegan, hay desincronización.

    Transfer-Encoding: chunked\r\nContent-Length: 4\r\n\r\n1\r\nA\r\nX   →   timeout = smuggling probable
  2. 2

    Confirmar la variante

    Envía una petición que solo se envenene con una de las dos interpretaciones para diferenciar CL.TE de TE.CL sin falsos positivos.

    CL.TE: body `0\r\n\r\nGET /404 HTTP/1.1\r\nX: `  →  si la siguiente request recibe 404, es CL.TE
  3. 3

    Envenenar la cola de peticiones

    Deja tu prefijo malicioso en el buffer del back-end para que se anteponga a la petición del próximo usuario que llegue por esa conexión.

    prefijo smuggled: GET /admin HTTP/1.1\r\nHost: target\r\nFoo: (queda a la espera del resto de la víctima)
  4. 4

    Robar peticiones de otros usuarios

    Haz que el prefijo capture la petición completa de la víctima (con su cookie de sesión) y la refleje en un recurso que tú puedas leer.

    Smuggle → POST /comment con la request de la víctima como body → lees su Cookie en el comentario
  5. 5

    Cache poisoning vía smuggling

    Combina la desincronización con una respuesta cacheable para que la caché guarde tu contenido y lo sirva a todos los usuarios.

    Desincroniza para que la respuesta de /static/main.js sea un 302 hacia evil.com → cacheado para todos
  6. 6

    Automatizar con HTTP Request Smuggler

    Usa la extensión de Burp (James Kettle, PortSwigger) para escanear, confirmar la variante y generar el PoC con Turbo Intruder sin picar los CRLF a mano.

    Burp → Extensions → HTTP Request Smuggler → 'Smuggle probe' / 'Launch smuggle attack'

Aprende la teoría

Academy: Técnicas Avanzadas

Preguntas frecuentes

¿Qué es el HTTP Request Smuggling?

Es una técnica que explota que el front-end (proxy, CDN, load balancer) y el back-end interpretan de forma distinta dónde termina una petición HTTP. Esa discrepancia permite colar un prefijo en el buffer del servidor y envenenar la petición del siguiente usuario.

¿Cómo se explota un HTTP Request Smuggling?

Se envía una petición con Content-Length y Transfer-Encoding contradictorios (o abusando de HTTP/2 downgrade) para que un extremo procese más o menos bytes que el otro. El sobrante queda en la cola y se antepone a la petición del próximo usuario, permitiendo robar sus datos, saltar el WAF o envenenar la caché.

¿Cómo encontrar HTTP Request Smuggling en bug bounty?

Prueba peticiones con cabeceras CL/TE ambiguas y mide el timing: un cuelgue del back-end delata la desincronización. Confirma la variante (CL.TE vs TE.CL) con un prefijo que provoque un 404 en la siguiente request y automatiza con la extensión HTTP Request Smuggler de Burp. Tienes una guía completa en /blog/http-request-smuggling-espanol.

¿Cómo prevenir el HTTP Request Smuggling?

Normaliza y rechaza peticiones ambiguas (Content-Length + Transfer-Encoding a la vez), usa HTTP/2 de extremo a extremo sin downgrade a HTTP/1.1, configura el front-end para cerrar conexiones ante cabeceras malformadas y mantén front-end y back-end con el mismo parser.

¿Diferencia entre CL.TE y TE.CL?

En CL.TE el front-end respeta Content-Length y el back-end Transfer-Encoding, así que el back-end 've' un chunk extra tras el cuerpo. En TE.CL es al revés: el front-end usa chunked y el back-end Content-Length, dejando en cola la parte del chunked que el back-end ignora. Cambia qué extremo se desincroniza y, por tanto, cómo se construye el payload.

hunters entrenando
650

hunters entrenando

labs de reportes reales
50

labs de reportes reales

completaciones
380

completaciones

en bounties practicados
$200.000

en bounties practicados

40 flags capturadas esta semana·Reportes reales de HackerOne · Bugcrowd · Intigriti·Sin permanencia·Academy gratis
BBLabs · bug bounty en español

Practica HTTP Smuggling en labs reales

Cada lab de HTTP Smuggling replica un reporte real de bug bounty que se pagó. Crea tu cuenta gratis, empieza por la Academy y pasa a los labs cuando quieras.

Sin tarjeta · Academy gratis · cancela cuando quieras