SSRF: cuando el servidor hace las peticiones por ti
Una puerta trasera a tus recursos internos
¿Qué es SSRF?
SSRF (Server-Side Request Forgery) ocurre cuando una aplicación web permite que el servidor realice peticiones HTTP basadas en entrada del usuario. Esto puede ser explotado para acceder a servicios internos, metadatos de la nube o incluso atacar otros sistemas desde el propio servidor.
Ejemplo simple
Una funcionalidad aparentemente inofensiva como previsualizar una URL puede ser peligrosa:
GET /preview?url=http://example.com
Un atacante puede modificarla así:
GET /preview?url=http://127.0.0.1:8000/admin
Si no se valida el destino, el servidor intentará acceder a su propio panel interno.
Casos reales de explotación
- Acceso a APIs internas (como Redis, Elasticsearch, etc.)
- Filtrado de puertos internos
- Obtención de metadatos en entornos cloud (
http://169.254.169.254/en AWS) - Incluso ejecución remota de comandos si el servicio accedido lo permite
Cómo prevenir SSRF
- No dejes que el usuario defina URLs arbitrarias
- Usa listas blancas de dominios permitidos
- Valida que las URLs no apunten a IPs internas (como 127.0.0.1, 10.x.x.x, 169.254.x.x, etc.)
- Usa una red separada para servicios internos sin acceso desde servicios web públicos
- Bloquea protocolos no HTTP (ftp://, file://, gopher://, etc.)
Detección
Puedes probar con URLs que apunten a IPs internas, o usar herramientas como Burp Suite o SSRFMap. También puedes intentar cargar tu propio servidor HTTP para comprobar si el servidor objetivo intenta conectarse.
Conclusión
SSRF es una vulnerabilidad peligrosa porque explota la confianza del servidor en sí mismo. A menudo lleva a exposición de datos sensibles, acceso no autorizado y escalación de privilegios. Controlar qué puede solicitar tu servidor es esencial para proteger tu infraestructura.
← Volver al blog