SSRF (Server Side Request Forgery)

O que é?

A vulnerabilidade de SSRF permite que um atacante induza a aplicação do lado do servidor a fazer requisições HTTP para um domínio de sua escolha.

Funcionamento

Em um ataque SSRF típico, o atacante pode fazer com que o servidor realize uma conexão com serviços internos da infraestrutura da organização que, normalmente, não estariam acessíveis a partir da internet externa.

Tipos de Ataques SSRF

1. SSRF contra o próprio servidor (Loopback)

O atacante força a aplicação a fazer uma requisição HTTP de volta para o servidor que hospeda a aplicação, geralmente através da interface de loopback.

  • Objetivo: Tentar acessar serviços ou painéis administrativos que só permitem conexões vindas do 127.0.0.1 ou localhost.

2. SSRF contra outros sistemas internos

O servidor vulnerável pode ser utilizado como um “ponto de salto” para interagir com outros sistemas dentro da rede interna que não estão expostos publicamente.

  • Exemplo: Interagir com APIs internas, bases de dados ou realizar escaneamento de portas na rede local.

Blind SSRF

Ocorre quando o atacante consegue induzir a aplicação a enviar uma requisição HTTP para uma URL externa, mas a resposta dessa requisição não é retornada para o atacante na interface da aplicação. A confirmação do ataque geralmente depende da observação de conexões em servidores controlados pelo atacante.

Casos de Uso Comuns (Exploração)

  • Cloud Metadata: Acesso a metadados de instâncias em nuvem (AWS, Google Cloud, Azure) para obter credenciais temporárias e informações de configuração.

    • Endereço comum: http://169.254.169.254/latest/meta-data/
  • Bypass de Controles: Acessar recursos que possuem restrições baseadas em IP (IP-based access control).

Como Prevenir

Deny Lists (Blacklists)

Bloquear IPs conhecidos como 127.0.0.1, 0.0.0.0 ou domínios como localhost.

  • Ressalva: Esta defesa é frágil, pois atacantes podem usar representações hexadecimais, decimais ou redirecionamentos de DNS para burlar os filtros.

Allow Lists (Whitelists)

É a defesa mais robusta. A aplicação deve permitir requisições apenas para uma lista estrita de domínios ou endereços IP que são comprovadamente necessários para o funcionamento do sistema.

Desativação de Protocolos

Garantir que a aplicação suporte apenas protocolos necessários (geralmente http e https) e desativar esquemas de URL perigosos como file://, dict://, ftp:// ou gopher://.