O que http-parameter-pollution faz?
Poluição de Parâmetros HTTP (HPP): Chaves duplicadas em query/body são interpretadas de forma diferente por servidores, proxies, WAFs e frameworks de aplicação. Use quando filtros e camadas da aplicação discordam sobre qual valor vence, possibilitando bypass, segunda URL de SSRF, abuso de lógica ou confusão de token CSRF.
Visão Geral
A Poluição de Parâmetros HTTP é uma técnica de ataque onde múltiplos valores para o mesmo parâmetro são enviados em uma requisição HTTP (ex: ?param=valor1¶m=valor2). Diferentes servidores HTTP, proxies reversos, firewalls de aplicação web (WAFs) e frameworks web podem interpretar essa situação de maneiras distintas:
- Servidor/Proxy: Pode concatenar os valores, usar o primeiro, usar o último, ou até mesmo criar um array.
- WAF: Pode inspecionar apenas um dos valores (geralmente o primeiro) para decidir se a requisição é maliciosa.
- Aplicação: Pode, por sua vez, processar outro valor (o último).
Essa inconsistência pode ser explorada para contornar filtros de segurança.
Como Usar
- Identifique um parâmetro que é processado pela aplicação-alvo e potencialmente filtrado por um WAF ou proxy.
- Envie uma requisição com o mesmo parâmetro duplicado (ex:
?redirect=/seguro&redirect=http://malicioso.com). - Analise a resposta para determinar qual valor foi utilizado pela aplicação.
- Ajuste a ordem e os valores dos parâmetros para atingir o objetivo desejado.
Exemplo Prático (Bypass de WAF)
Suponha que um WAF bloqueie requisições que contenham o valor alert(1) em um parâmetro input. Se a aplicação usa o último valor do parâmetro e o WAF inspeciona apenas o primeiro, você pode enviar:
?input=valorseguro&input=<script>alert(1)</script>
O WAF verá valorseguro e liberará a requisição. A aplicação, porém, processará <script>alert(1)</script>, executando o ataque XSS.
Aplicações Comuns
- Contorno de Filtros: Bypass de WAFs e filtros de entrada.
- SSRF de Segunda URL: Explorar inconsistências em parâmetros de redirecionamento.
- Abuso de Lógica: Manipular parâmetros de estado, steps de formulários, etc.
- Confusão de Token CSRF: Tentar invalidar ou contornar a proteção CSRF.
Plataformas Afetadas
- Aplicações web em geral.
- Frameworks que processam parâmetros de forma não padronizada (PHP, ASP.NET, Node.js/Express, etc.).
- Infraestrutura com proxies reversos (Nginx, Apache) e WAFs.