HTTP Request Smuggling [Post em atualização]

O HTTP Request Smuggling é uma técnica para interferir na forma como um site processa sequências de requisições HTTP recebidas de um ou mais usuários. As vulnerabilidades de request smuggling são muitas vezes críticas por natureza, permitindo que um invasor contorne controles de segurança, obtenha acesso não autorizado a dados confidenciais e comprometa diretamente outros usuários do aplicativo.‎

Onde ocorre o HTTP Request Smuggling

HTTP Request Smuggling — CL.TE

CL.TE -> HTTP Request Smuggling quando o servidor front-end usa o header content-length e o servidor back-end usa o header transfer-encoding

Content-Length: 6 -> Valor do corpo da requisição (considerando os pulos de linha e espaço)

0\r\n -> 3
\r\n -> 2
G -> 1

Transfer-Encoding: chunked

Cabeçalho que pode ser usado para especificar que o corpo da mensagem usa codificação em pedaços. Isso vai significar que o corpo da mensagem contém um ou mais pedaços de dados.

Exemplo de Request:

POST / HTTP/1.1
Host: your-host.web-security-site.net
Connection: keep-alive -> indica uma conexão persistente, que não fecha.
Content-Type: application/x-www-form-urlencoded
Content-Length: 6 -> servidor front-end
Transfer-Encoding: chunked -> servidor back-end

0\r\n -> O servidor back-end processa o ‎cabeçalho Transfer-Encoding, e assim trata o corpo da mensagem como usando codificação em pedaços. Nesse caso vai processar o primeiro pedaço, que é declarado de comprimento zero, e por isso é tratado como requisição nula.
\r\n
G ->‎ O servidor back-end irá tratá-lo como sendo o início da próxima requisição na sequência.‎

Porque do cabeçalho “Connection: keep-alive”

O cabeçalho Connection geral controla se a conexão de rede permanece ou não aberta após o término da transação atual. Se o valor enviado for keep-alive, a conexão é persistente e não fechada, permitindo que solicitações subsequentes para o mesmo servidor sejam feitas.

Sobre os pedaços de dados: (Transfer-Encoding: chunked)

0\r\n -> Primeiro pedaço (chunk)
\r\n
G -> Segundo pedaço (chunk)

========================================

HTTP Request Smuggling — TE.CL

Em breve..

========================================

HTTP Request Smuggling — TE.TE

Em breve..