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.1oulocalhost.
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/
- Endereço comum:
-
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://.