Introducción a Técnica TE.CL

TE.CL significa Transfer-Encoding/Content-Length. Esta técnica es la contraria del método CL.TE. En el acercamiento TE.CL, la discrepancia entre la interpretación del header es invertida porque el front usa TE y el back CL.

La técnica TE.CL surge cuando el proxy prioriza el header Transfer-Encoding mientras que el back prioriza el header Content-Length.

Request Smuggling TE CL

Ejemplo: Si un atacante manda una petición con ambos headers, el servidor frontend o proxy puede interpretar la petición basándose en el header Transfer-Encoding, mientras que el servidor backend puede confiar en el header Content-Length.


Explotar TE.CL para Request Smuggling

Para explotar la técnica TE.CL, un atacante craftea una petición especialmente diseñada que incluye ambos headers, intentando crear ambigüedad en cómo el front y el back interpretan la petición.

Por ejemplo, un atacante manda una petición así:

shell-session
POST / HTTP/1.1
Host: example.com
Content-Length: 4
Transfer-Encoding: chunked

78
POST /update HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 15

isadmin=true
0

En el payload de arriba, el front ve el header Transfer-Encoding: chunked y procesa la petición como chunked. El 78 (hexadecimal para 120), indica que los siguientes 120 bytes son el cuerpo. El front considera todo hasta el 0 (que indica el final del chunk) como parte del body de la primera petición.

El back, sin embargo, usa el header CL, que es 4. Procesa sólo los primeros 4 bytes de la petición, no incluyendo la petición contrabandeada POST /update. La parte restante será interpretada como una petición separada.

La petición contrabandeada es procesada por el backend como si fuera legítima. Esta petición incluye isadmin=true, que podría potencialmente elevar los privilegios del atacante.