Skip to main content
CriticalProtected by PowerWAF

Server-Side Request Forgery (SSRF)

CategoríaExposición de Datos y Configuración IncorrectaOWASPA10:2021 – Server-Side Request ForgeryPrimera aparición2012Tiempo de lectura7 minVerificado2026-02-20
DEFINICIÓN

Server-Side Request Forgery (SSRF) es un ataque en el que el atacante fuerza a una aplicación del lado del servidor a realizar solicitudes HTTP a un dominio arbitrario o recurso interno. Al abusar de la posición de red confiable del servidor, los atacantes pueden acceder a servicios internos, endpoints de metadatos en la nube y datos sensibles que no son directamente accesibles desde internet.

Cómo Funciona Server-Side Request Forgery (SSRF)

SSRF explota la funcionalidad del servidor que obtiene recursos externos (URLs proporcionadas por el usuario). En lugar de una URL legítima, el atacante proporciona una dirección interna, forzando al servidor a actuar como un proxy hacia la red interna.

1

Identificar una obtención de URL del lado del servidor

El atacante encuentra una funcionalidad donde la aplicación obtiene un recurso remoto basado en la entrada del usuario — como vistas previas de URLs, generadores de PDF, endpoints de webhook o importaciones de imágenes.

2

Proporcionar un objetivo interno

En lugar de una URL pública, el atacante proporciona una dirección interna como http://169.254.169.254/latest/meta-data/ (metadatos de AWS) o http://localhost:6379/ (Redis) para alcanzar servicios internos.

3

Evadir los filtros de URL

Si existe una validación básica de URL, el atacante usa técnicas de evasión: DNS rebinding, representaciones IPv6, codificación de URL, redirecciones a través de dominios controlados o formatos alternativos de IP como 0x7f000001.

4

Exfiltrar datos internos

La respuesta del servidor se devuelve al atacante, exponiendo respuestas de APIs internas, credenciales de la nube (tokens de roles IAM), archivos de configuración o permitiendo el escaneo de puertos de la red interna.

Ejemplos Reales

2019

Brecha de datos de Capital One

Una vulnerabilidad SSRF en una mala configuración de WAF permitió el acceso al servicio de metadatos de AWS, exponiendo 106 millones de registros de clientes incluyendo números de Seguro Social y números de cuentas bancarias. La brecha le costó a Capital One más de $300 millones.

2021

SSRF de GitLab mediante webhooks

Múltiples vulnerabilidades SSRF en las funcionalidades de webhook e importación de GitLab permitieron a los atacantes acceder a servicios de red interna y metadatos de la nube desde instancias auto-alojadas.

2021

Microsoft Exchange ProxyLogon

Una cadena de vulnerabilidades incluyendo SSRF (CVE-2021-26855) en Microsoft Exchange Server fue explotada por atacantes patrocinados por estados, comprometiendo más de 250,000 servidores en todo el mundo.

Impacto y Evaluación de Riesgo

SSRF es especialmente peligroso en entornos de nube donde los servicios de metadatos exponen credenciales IAM. Un SSRF exitoso puede llevar a la lectura de credenciales de instancias en la nube, acceso a bases de datos y APIs internas, escaneo de puertos de redes internas, lectura de archivos locales a través del protocolo file:// y pivoteo hacia Ejecución Remota de Código (RCE) a través de servicios internos. En el OWASP Top 10 de 2021, SSRF fue elevado a su propia categoría (A10) debido a su creciente prevalencia e impacto.

Cómo Detectar Server-Side Request Forgery (SSRF)

Monitorear las solicitudes salientes de los servidores de aplicación en busca de conexiones a rangos de IP internos (10.x, 172.16-31.x, 192.168.x, 169.254.x). Alertar sobre solicitudes a endpoints de metadatos en la nube. Registrar y analizar todas las solicitudes HTTP del lado del servidor. Inspeccionar los registros de resolución DNS en busca de nombres de host internos. Usar alertas de segmentación de red para detectar tráfico inesperado entre zonas.

Cómo Prevenir Server-Side Request Forgery (SSRF)

Validar y sanitizar todas las URLs proporcionadas por el usuario en el lado del servidor. Implementar una lista blanca de dominios y protocolos permitidos (denegar file://, gopher://, dict://). Bloquear solicitudes a rangos de IP privados y direcciones de metadatos de la nube a nivel de red. Usar un cliente HTTP dedicado con límites de timeout y redirecciones. Deshabilitar esquemas de URL innecesarios. Desplegar IMDSv2 (Instance Metadata Service v2) en AWS que requiere tokens de sesión. Segmentar los servidores de aplicación de los servicios internos sensibles.

Ejemplos de Código

Vulnerable: Unvalidated URL Fetch
# VULNERABLE: fetches any URL the user provides
@app.route('/preview')
def preview():
url = request.args.get('url')
response = requests.get(url) # No validation!
return response.text

# Attacker request:
# /preview?url=http://169.254.169.254/latest/meta-data/iam/security-credentials/
Secure: URL Validation with Allowlist
import ipaddress
from urllib.parse import urlparse

ALLOWED_HOSTS = {'api.example.com', 'cdn.example.com'}
BLOCKED_RANGES = [
ipaddress.ip_network('10.0.0.0/8'),
ipaddress.ip_network('172.16.0.0/12'),
ipaddress.ip_network('192.168.0.0/16'),
ipaddress.ip_network('169.254.0.0/16'),
]

def is_safe_url(url):
parsed = urlparse(url)
if parsed.scheme not in ('http', 'https'):
return False
if parsed.hostname not in ALLOWED_HOSTS:
return False
try:
ip = ipaddress.ip_address(parsed.hostname)
return not any(ip in net for net in BLOCKED_RANGES)
except ValueError:
return True # hostname, not IP — check against allowlist

PowerWAF bloquea automáticamente Server-Side Request Forgery (SSRF) antes de que llegue a tu servidor.

Implementa en minutos. Sin cambios de código. Plan gratuito disponible.

Los cupos del plan gratuito son limitados

Preguntas Frecuentes

Los proveedores de nube como AWS, GCP y Azure exponen servicios de metadatos en IPs internas conocidas (169.254.169.254). Estos servicios devuelven credenciales temporales, claves de API y datos de configuración. SSRF permite a los atacantes alcanzar estos endpoints desde el servidor, heredando efectivamente los permisos de nube del servidor.
En SSRF ciego, el servidor realiza la solicitud pero no devuelve la respuesta al atacante. El atacante aún puede confirmar que el objetivo es alcanzable midiendo tiempos de respuesta, observando búsquedas DNS o usando técnicas fuera de banda (como hacer que el servidor contacte un servidor controlado por el atacante).
Un WAF puede detectar y bloquear muchos intentos de SSRF inspeccionando los parámetros de solicitud en busca de direcciones IP internas, URLs de metadatos en la nube y patrones comunes de evasión. PowerWAF incluye conjuntos de reglas SSRF específicos que detectan IPs codificadas, intentos de DNS rebinding y cadenas de redirección dirigidas a recursos internos.