Saltar al contenido
Lectura5 minPreview

Bienvenida al curso

Bienvenido a OWASP A10: falsificación de solicitudes del lado del servidor (SSRF). Suponga una aplicación ficticia de clasificados que, cuando usted pega un enlace, muestra una vista previa con el título y la imagen de la página. Para eso, el servidor descarga la URL por usted. Ahora alguien pega esta otra:

http://169.254.169.254/latest/meta-data/iam/security-credentials/rol-app-web

Desde su casa, esa dirección no lleva a ningún lado. Desde una máquina virtual en AWS con la versión vieja del servicio de metadatos (IMDSv1), devuelve un JSON con AccessKeyId, SecretAccessKey y Token: las credenciales temporales del rol del servidor. La "vista previa" se las enseña a quien las pidió. Nadie entró al servidor; el servidor hizo la solicitud solito. Eso es una SSRF. En la lección 3 verá un caso público de 2019 donde esta cadena terminó en la filtración de datos de un banco.

Qué va a lograr

  • Explicar qué es una SSRF, por qué ocurre y por qué es tan grave en la nube.
  • Reconocer en código Python y Node el patrón fuente y sumidero que la produce.
  • Revisar un repositorio con un procedimiento repetible y apoyado en grep.
  • Corregir la falla con listas de permitidos, validación de URLs y verificación de la IP resuelta.
  • Endurecer la infraestructura con segmentación, proxy de egreso, IMDSv2 y mínimo privilegio.
  • Detectar intentos en registros, escribir una alerta y redactar un reporte de hallazgo.

Para quién es y qué necesita

Para quien desarrolla o analiza seguridad y ya conoce lo básico de la web. Conviene haber hecho Seguridad web con OWASP Top 10; leer Python sencillo ayuda, aunque cada función se explica al aparecer. Necesita Python 3.10 o superior, una terminal (bash o PowerShell), curl y un editor. No necesita cuenta en ninguna nube: el servicio de metadatos se simula con una pequeña app Flask en su propia máquina.

Cómo está organizado

MóduloQué aprendeLaboratorio
1. Qué es SSRF y por qué pasaConcepto, historia, metadatos de la nube e IMDSv2, variantes e impactoMapa de funciones que hacen solicitudes salientes
2. Cómo se ve en el código y cómo se revisaFuentes y sumideros, por qué fallan las listas de bloqueo, revisión de códigoSu propia aplicación vulnerable en localhost
3. Cómo se previene y se corrigeListas de permitidos, urlsplit, resolución DNS, rangos internos, red y nubeCorregir la aplicación y probarla con pytest
4. Detectar, monitorear y reportarQué registrar, indicadores, reglas Sigma, alcances del WAF y la conclusiónDetectar intentos y reportar el hallazgo
Evaluación6 preguntas sobre todo el cursoAprueba con 70 %

Cómo aprovecharlo

El laboratorio del módulo 2 pide tres terminales: una para el servicio interno simulado, otra para la app vulnerable y otra para curl, con el entorno virtual activo en las dos primeras. Olvidar activarlo es el tropiezo más común. El del módulo 3 es el que más cuesta, porque la primera corrección que se le ocurre a casi todo el mundo, bloquear 169.254.169.254 y localhost, se cae con un 127.1 o con un dominio que resuelve a una IP interna. Sus pruebas en pytest le harán ver caer su lista de bloqueo antes de escribir la de permitidos. Al aprobar la evaluación final con 70 % recibe el certificado y la insignia.

Tiempo estimado

Unas 4 horas y media. Los laboratorios de los módulos 2 y 3 trabajan sobre la misma carpeta lab-ssrf: guárdela.