Skip to content

SSRF (Server-Side Request Forgery) ​

con laboratorio

Qué es ​

Algunas webs hacen peticiones por ti: descargar una imagen desde una URL, previsualizar un enlace, consultar una API. En un SSRF yo controlo esa URL y consigo que el servidor pida lo que yo quiera. Lo importante es que el servidor puede llegar a sitios que yo no: localhost, la red interna, servicios de metadatos en la nube.

Detección ​

  1. Buscar parámetros con URLs (?url=, ?imagen=, formularios "subir desde URL").
  2. Apuntar la URL a un servidor mío (python3 -m http.server, o Burp Collaborator) y comprobar si llega una petición.
  3. Probar http://127.0.0.1/ y puertos internos (:5000, :8080…).

Qué se consigue ​

  • Acceder a paneles de administración que solo escuchan en local (http://localhost/admin).
  • Descubrir APIs internas (ejemplo: Editorial).
  • En la nube, leer credenciales temporales en http://169.254.169.254/.

Filtros comunes y cómo se saltan ​

FiltroIntento
Bloquea 127.0.0.1127.1, 2130706433, [::1], localhost
Lista de dominios permitidoshttp://permitido.com@atacante.com, redirecciones abiertas
Bloquea la palabra adminDoble codificación URL

Cómo se arregla ​

  • Lista blanca de destinos permitidos y esquemas (solo https).
  • Resolver el dominio y comprobar que no apunta a IPs internas, y no seguir redirecciones.
  • Segmentar la red para que el servidor web no llegue a servicios internos sensibles.

Contenido propio con fines educativos. Sin flags ni material de exámenes.