image
image
image
image
image
image

Jeton de session aws credentials

Récupération des informations d’identification de sécurité AWS à partir de la console AWS

Dans ce court article de blog, nous décrivons comment récupérer les informations d’identification de sécurité AWS ( AWS_ACCESS_KEY_ID , AWS_SECRET_ACCESS_KEY et AWS_SESSION_TOKEN ) lorsqu’elles sont authentifiées dans la console AWS.

Introduction

« J’ai accès à la console AWS ; comment puis-je récupérer les informations d’identification de sécurité AWS correspondant à mon rôle ? » est une question que je me suis posée plus d’une fois, généralement lors de l’utilisation de la fédération d’identités et de l’exercice d’un rôle dans un compte AWS à l’aide d’un IdP qui ne prend pas en charge l’interface de ligne de commande.

La console AWS n’utilise pas directement les informations d’identification de sécurité AWS habituelles.

POST /ec2/ecb/elastic/ ?call=com.amazonaws.ec2.AmazonEC2.DescribeInstances Hôte : eu-west-1.console.aws.amazon. ; JSESSIONID=.. ; aws-creds=.. POST / Host : ec2.eu-west-1.amazonaws.com Action=DescribeInstances&Version=2016-11-15

aws-creds

AWS CloudShell

AWS CloudShell, lancé fin 2020, est un shell basé sur le web dans la console AWS permettant d’exécuter des commandes CLI directement depuis l’interface web :

L’environnement ne contient pas d’informations d’identification de sécurité AWS. En exécutant l’AWS CLI en mode débogage, nous pouvons voir qu’il utilise le service de métadonnées d’instance AWS pour récupérer les informations d’identification de sécurité :

$ aws ec2 describe-regions --debug ... DEBUG - Les informations d’identification doivent être actualisées. DEBUG - http://localhost:1338 « GET /latest/meta-data/container/security-credentials HTTP/1.1 » 200 1496 DEBUG - Les informations d’identification récupérées expireront à : 2021-06-05 16:59:59+00:00

Le point de terminaison non documenté

Cela nous indique que CloudShell utilise un point de terminaison non documenté de type IMDS pour récupérer les informations d’identification de sécurité nécessaires à l’exécution des appels d’API. Je dis « IMDS-like » car il écoute sur localhost au lieu de l’habituel 169.254.169.254 et ne semble exposer aucun autre point de terminaison.

Par conséquent, nous pouvons également l’appeler et récupérer nos informations d’identification de sécurité AWS !

$ TOKEN=$(curl -XPUT localhost :1338/latest/api/token -H « X-aws-ec2-metadata-token-ttl-seconds : 60 ») $ curl localhost :1338/latest/meta-data/container/security-credentials -H « X-aws-ec2-metadata-token : $TOKEN » { « LastUpdated » : « 1970-01-01T00:00:00Z », « Type » : «  », « AccessKeyId » : « ASIAYYF... », « SecretAccessKey » : « UJbW.. 5k », « Token » : « IQo.. MA== », « Expiration » : « 2021-06-05T17:06:59Z », « Code » : « Succès » }

Et voilà ! Merci beaucoup à Rich Mogull @ DisruptOps pour l’idée de regarder dans CloudShell.

Edit août 2023 : Vous pouvez utiliser ce petit emballage fourni par Darren Clark pour imprimer ces identifiants dans un format que vous pouvez immédiatement copier-coller dans votre terminal.

Poursuivons la discussion sur Twitter !

  • Connaissez-vous un autre moyen de récupérer les informations d’identification de sécurité AWS à partir de la console AWS ?
  • Quel est votre principal cas d’utilisation ?
  • Avez-vous expérimenté le service non documenté de type IMDS de CloudShell ?
Catégories Sécurité du cloud