A Poluição por Parâmetro HTTP (HPP) é uma técnica de evasão a ataques da Web que permite que um invasor crie uma solicitação HTTP para manipular ou recuperar informações ocultas.
Para entender o ataque conhecido como Poluição em Parâmetros HTTP é necessário, primeiro, ter em mente que em aplicações web modernas é extremamente comum que a comunicação com o website ocorra através de diversas camadas, devido a proporção de tecnologias web presentes que, hoje, são muito mais complexas que antigamente, como na imagem abaixo:
Visto a alta gama de tecnologias presentes e sabendo que cada uma pode responder de uma maneira diferente a parâmetros injetados, a não “sanitização” de entradas pode se tornar perigosa e acabar abrindo brechas para o HPP, principalmente devido ao fato do HTTP autorizar a submissão de diversos parâmetros em métodos GET e POST(RFC 3986).
Ao injetar mais de um valor em uma query string conteúdo entre o caractere “?” e o final de uma URL) algumas linguagens analisam apenas a presença da primeira ou última ocorrência do parâmetro, outros a entrada inteira e assim por diante, o que torna possível a utilização dessa técnica para ataques de evasão em web firewalls (WAF’S) e sistemas de detecção de intrusões( ID’S), visando burlar meios de proteção. Além do uso em URL’s, cabeçalhos HTTP como o Cookie também podem ser manipulados.
A imagem abaixo procura explicar como a entrada dos mesmos parâmetros são analisadas em diferentes tecnologias WEB no lado do servidor. O processo de lidar com diversos parâmetros geralmente nos leva a problemas de segurança, fazendo com que ocorram comportamentos inesperados, que ficam conhecidos como HPP.
“O impacto na segurança desse problema depende muito da natureza da funcionalidade do aplicativo. Mesmo que não tenha impacto direto por si só, um invasor pode usá-lo em conjunto com outras vulnerabilidades para aumentar sua gravidade geral.”
Um ataque bem-sucedido pode gerar diversos problemas e ser crítico. Dependendo da tecnologia utilizada, o atacante poderia modificar o comportamento da aplicação, acessá-la de maneira não autorizada, burlar validações e “bypassar” algumas tecnologias de segurança como já falado anteriormente. Tal ataque pode ser utilizado em conjunto com outros, como por exemplo, engenharia social, ao enviar um link encurtado que na realidade é o link com os parâmetros maliciosos embutidos.
Partindo para um exemplo mais prático, podemos identificar o ataque regular abaixo como sendo um simples ataque de SQL Injection, facilmente detectado por mecanismos de detecção de intrusos. Já o segundo ataque faz o uso da técnica de HPP, distribuindo em várias ocorrências o uso do parâmetro “id”.
Sabendo o ambiente a ser testado, pode-se realizar a combinação correta para obter sucesso em um ataque.
ATAQUE REGULAR:
HTTP://APLICACAOWEB/LISTAPRODUTOS.ASP? ID = 7
UNION SELECT 1,2,3 FROM USERS —
ATAQUE USANDO O HPP:
HTTP://APLICACAOWEB/LISTAPRODUTOS.ASP? ID = 7 / * & ID = *
/ UNION / * & ID =* / SELECT 1 & ID = 2 & ID = 3 FROM / * & ID = * /
USERS —