Ir para o conteúdo

Condição de corrida e Smuggling ​

Condição de corrida / Smuggling oferece duas ferramentas especializadas para ataques HTTP sensíveis ao tempo e no nível de protocolo.

Condições de corrida ​

A aba Condições de corrida envia várias cópias de uma requisição simultaneamente ao mesmo endpoint e permite comparar respostas e tempos entre as execuções paralelas.

Quando usar ​

  • TOCTOU (tempo de verificação/tempo de uso): teste se requisições concorrentes podem se intercalar entre uma verificação e uma operação de mudança de estado.
  • Manipulação de contas: envie mudanças de saldo, resgates de cupons ou operações com limites de forma concorrente para testar gasto duplo ou excesso de resgates.
  • Contornar limites de votos ou de taxa: confirme se os limites por usuário são aplicados de forma atômica.

Executar um teste de condição de corrida ​

  1. Monte a requisição-alvo na aba Condições de corrida ou envie-a para essa aba.
  2. Defina o valor de concorrência: quantas cópias paralelas enviar.
  3. Clique em Enviar corrida. Todas as cópias são enviadas o mais simultaneamente possível.
  4. Revise a tabela de respostas: código de status, corpo e tempo decorrido para cada cópia.
  5. Diferenças entre as respostas (códigos de status diferentes, corpos de resposta diferentes, sucesso inesperado nas cópias 2+) indicam uma janela de condição de corrida.

Condições de corrida com um único pacote HTTP/2 ​

Quando o alvo aceitar HTTP/2, habilite o modo HTTP/2. HTTP/2 multiplexa todas as requisições paralelas em uma única conexão, o que elimina a variação de latência da rede e torna mais confiável a chegada concorrente ao servidor.

HTTP request smuggling ​

A aba Smuggling testa como um servidor trata cabeçalhos ambíguos Content-Length e Transfer-Encoding para detectar dessincronização entre frontend e backend.

Contexto ​

Quando um proxy reverso e um servidor backend discordam sobre onde uma requisição termina e a próxima começa, um prefixo introduzido por smuggling na requisição A pode ser colocado antes da requisição B. O impacto vai de envenenamento de cache a contornar autenticação e injetar requisições arbitrárias.

Variantes de dessincronização ​

VarianteDescrição
CL.TEO frontend usa Content-Length; o backend usa Transfer-Encoding
TE.CLO frontend usa Transfer-Encoding; o backend usa Content-Length
TE.TEAmbos usam Transfer-Encoding, mas respondem de forma diferente a um cabeçalho ofuscado

Executar uma sondagem de smuggling ​

  1. Selecione o endpoint-alvo na aba Smuggling.
  2. Escolha a variante de dessincronização a testar.
  3. Clique em Enviar sondagem. A ferramenta envia a requisição preparada e mede a resposta.
  4. Um tempo limite excedido ou uma resposta inesperada na segunda requisição da sequência indica uma possível dessincronização.
  5. Confirme manualmente antes de criar um achado; falsos positivos ocorrem quando as condições da rede causam um tempo limite excedido sem relação com a sondagem.

Software proprietário. Todos os direitos reservados.