CRLF Injection

Como Explorar

CRLF Injection permite que um atacante injete caracteres de quebra de linha (\r\n) em cabeçalhos HTTP, podendo manipular respostas e realizar ataques como HTTP Response Splitting.

terminal
Exemplo:

GET /set-cookie?name=foo%0d%0aSet-Cookie:evil=1
  • Insira %0d%0a em parâmetros e observe se novos cabeçalhos são criados.
  • Teste manipulação de cookies e redirecionamentos.

Por que acontece

Ocorre quando a aplicação insere dados do usuário em cabeçalhos HTTP sem sanitização, permitindo a quebra da estrutura do cabeçalho.

  • Falta de validação de caracteres especiais.
  • Concatenação direta de parâmetros em cabeçalhos.

Como Corrigir

  • Remova ou escape caracteres \r e \n dos inputs.
  • Valide e sanitize todos os dados usados em cabeçalhos.
terminal
// Exemplo seguro em Node.js
if (/
|
/.test(userInput)) throw new Error('Input inválido');