Saltar al contenido
Lectura12 minPreview

Qué es SSRF: el servidor como mensajero

Imagine que usted le pide a un mensajero de confianza que vaya a buscar un paquete a una dirección que usted escribe en un papel. El mensajero tiene un gafete que le abre todas las puertas del edificio de la empresa. Si nadie revisa qué dirección escribió usted, podría mandarlo a la bóveda del sótano en lugar de a la tienda de la esquina. Eso, en esencia, es la falsificación de solicitudes del lado del servidor, conocida por sus siglas en inglés SSRF (Server-Side Request Forgery).

Qué es, en una frase

Una SSRF es una falla en la que un atacante logra que el servidor haga solicitudes a destinos que él elige, incluidos destinos internos que el atacante no podría alcanzar por su cuenta.

Para entenderla necesita una idea previa: en la web, el cliente (su navegador) pide cosas y el servidor (la aplicación) responde. Pero el servidor también puede actuar como cliente de otros servicios: muestra la vista previa de un enlace pegado en un chat, importa una foto desde una URL o avisa a un webhook. En todos esos casos, el usuario aporta una URL y el servidor la visita. El problema aparece cuando la aplicación no limita a dónde puede ir esa solicitud. El servidor vive dentro de la red, detrás del firewall, y alcanza cosas que un visitante de internet nunca vería: paneles internos, bases de datos con interfaz HTTP o el servicio de metadatos de la nube.

Navegador del atacante --> Aplicación pública --> Servicio interno
      (internet)            (zona expuesta)        (red privada)

El atacante no rompe el firewall: convence a un servidor que ya está dentro de que haga la solicitud por él. Por eso la solicitud está falsificada: parece legítima porque sale de un equipo de confianza.

El atacante, en internet, no puede llegar a la red privada porque el firewall lo bloquea. En cambio, le pasa una URL a la aplicación pública, que sí está dentro, y la aplicación visita por él el panel interno, la base de datos o el servicio de metadatos de la nube; luego le devuelve la respuesta.
Paso 1 de 4
[fig] El atacante no rompe el firewall: convence a un servidor que ya está dentro de hacer la solicitud por él.

Por qué ocurre

La causa raíz casi siempre es la misma: confiar en una URL que controla el usuario sin validar su destino real. Detrás suele haber una función pensada solo para el caso feliz, una validación que revisa el texto de la URL y no la IP a la que se conecta, una librería que sigue redirecciones sola y una red interna que confía en todo lo que viene de dentro.

Breve historia

AñoHito
2017Orange Tsai presenta en Black Hat USA "A New Era of SSRF": distintos analizadores de URL leen la misma cadena de forma diferente
2019Una filtración en un banco estadounidense, que verá en la lección siguiente, usa una SSRF contra los metadatos de la nube
2019AWS publica IMDSv2, una versión del servicio de metadatos diseñada para resistir SSRF
2021SSRF entra como categoría propia del OWASP Top 10: A10:2021
2023El OWASP API Security Top 10 la incluye como API7:2023
2025La edición 2025 del OWASP Top 10 la integra dentro de la categoría de control de acceso roto

En 2021 no entró por ser la falla más frecuente en los datos, sino porque la comunidad la señaló en la encuesta como un riesgo creciente por el auge de la nube y los microservicios. Que en 2025 se agrupe con el control de acceso no la hace menos grave: en el fondo, es una forma de saltarse los límites de acceso de la red.

La debilidad principal se cataloga como CWE-918: Server-Side Request Forgery.

Por qué importa en su trabajo

  • Desarrolladores: cada función que recibe una URL es un sumidero potencial.
  • Revisores autorizados: la SSRF suele estar entre los hallazgos más graves de una auditoría web en la nube.
  • Analistas de SOC: un intento deja huellas en la aplicación, el proxy y la nube; hay que cruzarlas.
  • Ingenieros de nube: IMDSv2, la segmentación y el mínimo privilegio son la última barrera.

Sin ese dominio, lo típico es una "corrección" que bloquea el texto 127.0.0.1 y deja la puerta abierta.

Dónde aparece

LugarEjemplo
Aplicaciones webVistas previas de enlaces, importación de imágenes, generación de PDF
IntegracionesWebhooks y conectores a servicios de terceros
NubeInstancias con acceso al servicio de metadatos y a roles con permisos
MicroserviciosServicios internos sin autenticación que confían en la red
Procesamiento de archivosSVG, XML o documentos con referencias externas

Conceptos clave

ConceptoQué significa
URLDirección de un recurso: esquema, host, puerto, ruta y consulta, como https://cdn.ejemplo.cr:443/logo.png?v=2
Solicitud salienteConexión que inicia el servidor hacia otro destino
FuenteLugar por donde entra un dato que controla el usuario
SumideroFunción que hace la solicitud saliente con ese dato
Red internaDirecciones privadas o de bucle local que no son accesibles desde internet
Servicio de metadatosServicio de la nube que entrega a cada máquina su información y credenciales
Lista de permitidosConjunto cerrado de destinos aceptados; todo lo demás se rechaza
Proxy de egresoIntermediario por el que pasa todo el tráfico que sale, y que aplica una política

Cómo leer las fichas del curso

En una sintaxis, los corchetes indican partes opcionales, las MAYÚSCULAS son valores que usted reemplaza y ... indica que se puede repetir. Para pedir ayuda, use comando --help o man comando en la terminal y help(funcion) en Python.