SSRF (Server-Side Request Forgery)
Última actualización
¿Te fue útil?
Última actualización
¿Te fue útil?
🕵️♂️ ¿Qué es SSRF?
Server-Side Request Forgery (SSRF) es una vulnerabilidad que permite a un atacante manipular a un servidor para que realice solicitudes HTTP (o de otro protocolo) hacia recursos internos o externos. Esto puede permitir al atacante acceder a servicios internos, exfiltrar información sensible, o incluso ejecutar comandos en ciertos casos.
⚙️ ¿Cómo se produce?
SSRF ocurre cuando una aplicación web permite al usuario proporcionar una URL o dirección que el servidor utiliza para realizar solicitudes sin validar adecuadamente la entrada. Si el servidor tiene acceso a recursos internos o sensibles, el atacante puede aprovechar esto para acceder a ellos.
🛠️ Mecanismo de ataque
El atacante identifica un parámetro que realiza una solicitud externa:
Manipula la URL para acceder a recursos internos o privados:
Resultados posibles:
Acceso a servicios internos.
Lectura de metadatos de infraestructura en servicios en la nube, como:
Escaneo de puertos en la red interna:
Uso avanzado: En algunos casos, el atacante puede combinar SSRF con vulnerabilidades adicionales (como RCE) para comprometer aún más el sistema.
🎯 Impacto
Acceso no autorizado: Exposición de servicios internos, como bases de datos o APIs privadas.
Exfiltración de datos: Robo de información sensible, como credenciales o configuraciones.
Escaneo interno: Identificación de hosts y servicios en la red interna.
Ejecución remota de comandos: En ciertos casos, puede derivar en RCE (Remote Code Execution).
📉 Puntaje CVSS v3
Vector de ataque: Red (Explotable remotamente)
Complejidad del ataque: Media
Impacto en confidencialidad: Alto
Impacto en integridad: Medio
Impacto en disponibilidad: Bajo a alto (dependiendo del ataque)
Puntaje CVSS v3: 8.0 - 9.5 (Crítico) 🔥
🧑💻 Ejemplo práctico
Código vulnerable:
Ataque: El atacante envía una URL maliciosa para acceder a metadatos del servidor en AWS:
📌 Esto puede devolver información sensible como claves de acceso de la instancia.
1️⃣ Validar y sanitizar entradas
Restringe las URLs que los usuarios pueden proporcionar:
2️⃣ Bloquear acceso a direcciones internas
Implementa reglas para evitar que las solicitudes accedan a direcciones IP privadas o localhost:
Rango IPv4 prohibido:
127.0.0.0/8 (localhost)
10.0.0.0/8 (redes privadas)
192.168.0.0/16 (redes privadas)
Rango IPv6 prohibido: ::1
3️⃣ Uso de listas blancas
Permite solo URLs específicas aprobadas:
4️⃣ Deshabilitar redirecciones
Evita que el servidor siga redirecciones en las solicitudes.
5️⃣ Uso de servicios proxy
Usa un proxy para manejar las solicitudes externas y controlar el acceso.
6️⃣ Configuración de cortafuegos
Configura un firewall para bloquear solicitudes desde el servidor hacia direcciones no autorizadas.
7️⃣ Límites de tiempo y tamaño
Aplica límites a las solicitudes realizadas para evitar abuso.
8️⃣ Monitoreo y auditoría
Implementa herramientas para detectar comportamientos anómalos en el servidor, como solicitudes a direcciones IP internas.
💡 Dato extra: SSRF es especialmente peligroso en entornos de nube, donde los metadatos de las instancias pueden ser explotados para obtener credenciales y comprometer más recursos.
🚨 Nota importante: Aunque SSRF afecta principalmente a HTTP, puede usarse en otros protocolos, como FTP o SMTP, dependiendo de las capacidades del servidor.
¿Te gustaría un ejemplo adaptado a otro lenguaje o un caso más específico? 😊