Questão de Segurança da Informação — Ataques a Aplicações Web (XSS, CSRF, SQL Injection etc.) — VUNESP 2023
Segurança da Informação›Ataques a Aplicações Web (XSS, CSRF, SQL Injection etc.)
Código
vu197017
Banca
VUNESP
Órgão
CIJUN
Ano
2023
Cargo
Ana ( )
A exploração da vulnerabilidade de aplicações web conhecida como HTTP Response Splitting consiste em o atacante
Asobrecarregar um servidor web por meio de excesso de requisições HTTP em curto intervalo de tempo.
Babrir requisições HTTP parciais com o servidor web, mantendo-as abertas pelo maior tempo possível e, assim, consumir recursos do servidor.
Cremover o certificado digital do servidor web, revertendo a comunicação HTTPS para HTTP, que não tem encriptação.
Dfazer o servidor web emitir uma sequência CR LF, seguida de um conteúdo arbitrário possivelmente malicioso, no cabeçalho de uma resposta HTTP.
Eacessar, via requisições HTTP, arquivos e diretórios localizados fora do diretório raiz (root) do servidor web, por meio da manipulação de variáveis que referenciam arquivos com o uso de sequências do tipo “../”.
Revelar gabarito e comentário▾
GabaritoD — fazer o servidor web emitir uma sequência CR LF, seguida de um conteúdo arbitrário possivelmente malicioso, no cabeçalho de uma resposta HTTP.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
HTTP Response Splitting: injeção de cabeçalhos via CRLF
Gabarito: letra D. O HTTP Response Splitting ocorre quando o atacante consegue fazer o servidor web emitir uma sequência CR LF (carriage return + line feed) seguida de conteúdo arbitrário no cabeçalho de uma resposta HTTP, permitindo injetar cabeçalhos ou corpo de resposta maliciosos. Essa é a definição clássica do ataque, que explora a falta de sanitização de entradas que são refletidas nos cabeçalhos HTTP.
O HTTP Response Splitting é um ataque de injeção de cabeçalhos HTTP. Ele acontece quando uma aplicação web incorpora dados fornecidos pelo usuário (como parâmetros de URL, cookies ou campos de formulário) diretamente em um cabeçalho de resposta HTTP, sem filtrar caracteres de controle. O protocolo HTTP usa a sequência CRLF (\r\n, ou seja, carriage return 0x0D seguido de line feed 0x0A) para delimitar o fim de um cabeçalho e o início do próximo. Se o atacante conseguir inserir um CRLF em um valor que será colocado no cabeçalho, ele pode "encerrar" o cabeçalho atual e começar a escrever cabeçalhos arbitrários — ou até mesmo o corpo da resposta —, manipulando o que o navegador da vítima recebe.
Por exemplo, suponha que uma aplicação redirecione o usuário com base em um parâmetro redirect:
Location: http://site.com/redir.php?url=...
Se o valor de url não for sanitizado, o atacante pode enviar algo como:
HTTP/1.1 302 Found
Location: http://site.com/
Set-Cookie: session=roubada
O navegador interpreta o Set-Cookie como um cabeçalho legítimo, e o atacante pode, por exemplo, fixar um cookie de sessão (session fixation) ou, em cenários mais avançados, combinar com outros ataques como XSS ou cache poisoning. A raiz do problema é a ausência de validação/sanitização de entradas que serão refletidas em cabeçalhos.
A distinção que importa aqui é entre o Response Splitting e outros ataques de injeção web:
Ataque
Vetor
Objetivo
HTTP Response Splitting
Injeção de CRLF em cabeçalhos HTTP
Manipular cabeçalhos/corpo da resposta
SQL Injection
Injeção de comandos SQL em consultas
Manipular banco de dados
XSS
Injeção de scripts no navegador
Executar código no contexto da vítima
CSRF
Forçar ações em sessão autenticada
Executar ações indesejadas em nome da vítima
A pegadinha da banca é justamente confundir o Response Splitting com outros ataques de negação de serviço, downgrade de HTTPS ou path traversal. O candidato que não conhece a definição exata tende a escolher uma alternativa que descreve outro ataque famoso. Guarde a assinatura do Response Splitting: CRLF + conteúdo arbitrário no cabeçalho.
HTTP Response Splitting: Vetor (Injeção de CRLF em cabeçalhos); Objetivo (Manipular cabeçalhos/corpo da resposta); Consequências (Session fixation, XSS, Cache poisoning)
Alternativa A — ❌ Incorreta
Descreve um ataque de negação de serviço (DoS) por sobrecarga de requisições HTTP, como um flood de requisições. Não tem relação com injeção de cabeçalhos. O objetivo do Response Splitting não é indisponibilizar o serviço, mas manipular a resposta HTTP.
Alternativa B — ❌ Incorreta
Descreve o Slowloris (ou ataque de requisições parciais), que mantém conexões HTTP abertas enviando requisições incompletas para esgotar os recursos do servidor. É um ataque de DoS, não de injeção de cabeçalhos.
Alternativa C — ❌ Incorreta
Descreve um ataque de downgrade de HTTPS para HTTP (como o SSL Stripping), que remove ou rebaixa a criptografia da comunicação. Não envolve a injeção de CRLF em cabeçalhos. O Response Splitting pode até ser usado em conjunto com outros ataques, mas a definição não é essa.
Alternativa D — ✅ Correta ⟵ GABARITO
É a definição exata do HTTP Response Splitting: o atacante faz o servidor emitir uma sequência CR LF seguida de conteúdo arbitrário no cabeçalho de uma resposta HTTP. Isso permite injetar cabeçalhos adicionais ou corpo de resposta, podendo levar a outros ataques como XSS, session fixation ou cache poisoning.
Alternativa E — ❌ Incorreta
Descreve o Path Traversal (ou Directory Traversal), que explora a manipulação de caminhos de arquivos com sequências ../ para acessar arquivos fora do diretório raiz do servidor. Não tem relação com injeção de cabeçalhos HTTP.
NÃO CAIA NESSA!
A banca mistura ataques web clássicos para confundir: DoS (A e B), downgrade de HTTPS (C) e path traversal (E) são todos ataques reais, mas nenhum é o Response Splitting. O candidato que decora apenas os nomes dos ataques sem saber o mecanismo exato cai em uma dessas armadilhas. Fique atento à assinatura: CRLF + conteúdo arbitrário no cabeçalho.
PEGA ESSA DICA!
Para diferenciar ataques de injeção, pergunte-se: "o que o atacante injeta e onde?". SQL Injection injeta SQL no banco; XSS injeta script no navegador; CSRF injeta requisições em sessão autenticada; Response Splitting injeta CRLF em cabeçalhos HTTP. Memorize essa tabela mental e a maioria das questões de classificação de ataques fica fácil.