Vulnerabilidade SSRF – Explicando o ataque e como se prevenir

14:48 Leandro Narezi Tonello 0 Comentarios



Server Side Request Forgery em uma tradução literal seria uma “Falsificação de solicitação via o lado do servidor”. O SSRF é uma vulnerabilidade na qual um atacante força um servidor a executar solicitações em seu nome. Aplicativos Web podem acionar solicitações entre servidores, que normalmente são usadas para buscar recursos remotos como, atualizações de software, importar dados de uma URL, etc. Embora essas solicitações entre servidores normalmente sejam seguras, elas podem tornar o servidor vulnerável à falsificação de solicitações do lado do servidor caso sejam implementadas incorretamente.

Uma vulnerabilidade SSRF permite que um invasor altere parâmetros usados em um aplicativo da Web para criar ou controlar solicitações de um servidor vulnerável. Quando as informações de um aplicativo da Web precisam ser recuperadas de um recurso externo, as solicitações do lado do servidor são usadas para buscar o recurso e incluí-lo na aplicação. Por exemplo, um desenvolvedor pode usar uma URL como https://exemplozero.com.br/feed.php?url=siteexterno.com/feed/ para recuperar um feed remoto.

Se o atacante é capaz de alterar o parâmetro url para localhost, então ele é capaz de visualizar os recursos locais hospedados no servidor, tornando-o vulnerável a um ataque Server Side Request Forgery.

Caso um atacante seja capaz de controlar o destino de solicitações do lado do servidor, eles podem executar as seguintes ações:
  • Realizar o by-pass de whitelists de IP.
  • Ignorar serviços de autenticação baseados no host.
  • Ler os recursos que não estão acessíveis ao público, como trace.axd em ASP.NET ou APIs de metadados em um ambiente AWS.
  • Realizar a digitalização da rede interna à qual o servidor está conectado.
  • Ler arquivos do servidor web.
  • Visualizar páginas de status e interagir com APIs como servidor da Web.
  • Recuperar informações confidenciais, como endereços IP de um servidor da Web atrás de um proxy reverso.



Como funciona uma exploração básica de uma vulnerabilidade Server Side Request Forgery:



Uma vez que o invasor não pode enviar solicitações diretas ao servidor da vítima, porque elas são bloqueadas por um firewall, para verificar uma rede interna o atacante precisa:
  1. Envia uma solicitação ao servidor web vulnerável que se utiliza da vulnerabilidade SSRF.
  2. O servidor web faz uma solicitação para o “servidor vítima” que fica atrás do firewall.
  3. O “servidor vítima” responde com os dados.
  4. Se a vulnerabilidade específica do SSRF permitir, os dados são enviados de volta ao atacante.

O ataque de SSRF pode gerar vários impactos para a vítima, porém, o resultado mais comum é a divulgação de informações, como:
  • Digitalizar portas e endereços IP.
  • Interagir com alguns protocolos como o Gopher, que permitem que o atacante faça descobertas adicionais sobre a rede interna da vítima.
  • Descobrir os endereços IP dos servidores em execução atrás de um proxy reverso.
  • Execução remota de código dentro do servidor utilizando shellcode.

Além dos exemplos acima, há várias outras coisas que os invasores podem fazer quando exploram uma vulnerabilidade SSRF, algumas das quais podem ter consequências mais graves, mas depende principalmente de como a aplicação web usa as respostas do recurso remoto.

Para evitar vulnerabilidades do SSRF em suas aplicações Web, é altamente recomendável usar uma lista de permissões de domínios e protocolos de onde o servidor da Web pode buscar recursos remotos.

Além disso, como regra geral, você deve evitar usar a entrada do usuário diretamente em funções que podem fazer solicitações em nome do servidor. Você também deve desinfetar e filtrar a entrada do usuário, mas normalmente é muito difícil de configurar, principalmente porque é praticamente impossível cobrir todos os cenários diferentes.

Referências:


0 comentários: