August 27, 2025

SSRF

🔎 ¿Qué es?

La vulnerabilidad SSRF ocurre cuando una aplicación web permite que un usuario manipule las solicitudes HTTP que el servidor realiza a otros recursos.
👉 El atacante logra que el servidor envíe peticiones hacia redes internas o servicios restringidos.


⚙️ Flujo de la vulnerabilidad

[Atacante]
   |
   | Petición maliciosa con URL controlada

[Aplicación vulnerable] 
   |
   | Hace request desde el servidor

[Recurso interno / externo]
   |
   → Devuelve datos sensibles al atacante

📍 Ejemplo clásico

Una aplicación que obtiene imágenes a partir de una URL:

GET /fetch?url=http://example.com/logo.png

El atacante envía:

GET /fetch?url=http://169.254.169.254/latest/meta-data/

👉 El servidor accede a los metadatos de AWS EC2 (tokens, credenciales).


🚨 Riesgos

  • Acceso a redes internas (intranet, bases de datos, servicios internos).

  • Robo de credenciales en nubes (ej. AWS, GCP, Azure).

  • Exfiltración de archivos locales (file://, /etc/passwd).

  • Pivoting hacia sistemas internos.

  • Escalada de privilegios si se combinan con otras vulnerabilidades.


🛠️ Cómo detectarlo

  1. Pruebas manuales:

    • Inyectar URLs internas (127.0.0.1, localhost, 169.254.169.254).

    • Probar distintos esquemas (http, https, file, gopher).

  2. Herramientas:

    • Burp Suite (con extensiones SSRF).

    • nuclei (templates de SSRF).

    • gopherus, ssrfmap.

  3. Indicadores:

    • Errores inusuales.

    • Respuestas inesperadas del servidor.


🛡️ Medidas de prevención

✅ Validar y sanitizar todas las entradas de URL.
✅ Mantener listas blancas de destinos permitidos.
✅ Bloquear acceso a direcciones privadas (127.0.0.1, 10.x.x.x, 169.254.x.x).
✅ Usar firewalls de aplicaciones (WAF) con detección SSRF.
✅ Segmentar la red para limitar el impacto.
✅ Aplicar principio de menor privilegio en servidores que hagan requests.


🎨 Resumen visual

Server-Side Request Forgery (SSRF)
 ├── Causa: App hace requests basados en input del usuario
 ├── Impacto: acceso interno, robo de datos, pivoting
 ├── Detección: fuzzing URLs internas, Burp, nuclei
 └── Prevención: validación estricta, listas blancas, segmentación