Parameter Pollution

Poluição de Parâmetros

Aprenda e pratique Hacking na AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking no GCP: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Visão Geral da Poluição de Parâmetros HTTP (HPP)

A Poluição de Parâmetros HTTP (HPP) é uma técnica onde atacantes manipulam parâmetros HTTP para alterar o comportamento de uma aplicação web de maneiras não intencionais. Essa manipulação é feita adicionando, modificando ou duplicando parâmetros HTTP. O efeito dessas manipulações não é diretamente visível para o usuário, mas pode alterar significativamente a funcionalidade da aplicação no lado do servidor, com impactos observáveis no lado do cliente.

Exemplo de Poluição de Parâmetros HTTP (HPP)

Uma URL de transação de um aplicativo bancário:

  • URL Original: https://www.victim.com/send/?from=accountA&to=accountB&amount=10000

Ao inserir um parâmetro from adicional:

  • URL Manipulada: https://www.victim.com/send/?from=accountA&to=accountB&amount=10000&from=accountC

A transação pode ser incorretamente cobrada para accountC em vez de accountA, demonstrando o potencial da HPP para manipular transações ou outras funcionalidades, como redefinições de senha, configurações de 2FA ou solicitações de chave de API.

Análise de Parâmetros Específica da Tecnologia

  • A forma como os parâmetros são analisados e priorizados depende da tecnologia web subjacente, afetando como a HPP pode ser explorada.

  • Ferramentas como Wappalyzer ajudam a identificar essas tecnologias e seus comportamentos de análise.

Exploração de HPP em PHP

Caso de Manipulação de OTP:

  • Contexto: Um mecanismo de login que requer uma Senha de Uso Único (OTP) foi explorado.

  • Método: Ao interceptar a solicitação de OTP usando ferramentas como Burp Suite, os atacantes duplicaram o parâmetro email na solicitação HTTP.

  • Resultado: O OTP, destinado ao email inicial, foi enviado para o segundo endereço de email especificado na solicitação manipulada. Essa falha permitiu acesso não autorizado ao contornar a medida de segurança pretendida.

Esse cenário destaca uma falha crítica no backend da aplicação, que processou o primeiro parâmetro email para a geração de OTP, mas usou o último para entrega.

Caso de Manipulação de Chave de API:

  • Cenário: Um aplicativo permite que os usuários atualizem sua chave de API através de uma página de configurações de perfil.

  • Vetor de Ataque: Um atacante descobre que, ao anexar um parâmetro api_key adicional à solicitação POST, pode manipular o resultado da função de atualização da chave de API.

  • Técnica: Utilizando uma ferramenta como Burp Suite, o atacante elabora uma solicitação que inclui dois parâmetros api_key: um legítimo e um malicioso. O servidor, processando apenas a última ocorrência, atualiza a chave de API para o valor fornecido pelo atacante.

  • Resultado: O atacante ganha controle sobre a funcionalidade da API da vítima, potencialmente acessando ou modificando dados privados de forma não autorizada.

Esse exemplo reforça ainda mais a necessidade de um manuseio seguro de parâmetros, especialmente em recursos tão críticos quanto a gestão de chaves de API.

Análise de Parâmetros: Flask vs. PHP

A forma como as tecnologias web lidam com parâmetros HTTP duplicados varia, afetando sua suscetibilidade a ataques HPP:

  • Flask: Adota o primeiro valor de parâmetro encontrado, como a=1 em uma string de consulta a=1&a=2, priorizando a instância inicial em detrimento de duplicatas subsequentes.

  • PHP (no Apache HTTP Server): Por outro lado, prioriza o último valor de parâmetro, optando por a=2 no exemplo dado. Esse comportamento pode inadvertidamente facilitar explorações de HPP ao honrar o parâmetro manipulado pelo atacante em vez do original.

Referências

Aprenda e pratique Hacking na AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking no GCP: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Last updated