AWS - Informations de base
Tip
Apprenez & pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Soutenez HackTricks
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
HiĂ©rarchie de lâorganisation
.png)
Comptes
Dans AWS, il y a un compte root, qui est le conteneur parent pour tous les comptes de votre organisation. Cependant, vous nâavez pas besoin dâutiliser ce compte pour dĂ©ployer des ressources, vous pouvez crĂ©er dâautres comptes pour sĂ©parer diffĂ©rentes infrastructures AWS entre elles.
Câest trĂšs intĂ©ressant dâun point de vue sĂ©curitĂ©, car un compte ne pourra pas accĂ©der aux ressources dâun autre compte (sauf si des ponts sont spĂ©cifiquement créés), de cette maniĂšre vous pouvez crĂ©er des limites entre les dĂ©ploiements.
Par conséquent, il y a deux types de comptes dans une organisation (nous parlons de comptes AWS et non de comptes utilisateurs) : un seul compte désigné comme compte de gestion, et un ou plusieurs comptes membres.
-
Le compte de gestion (le compte root) est le compte que vous utilisez pour crĂ©er lâorganisation. Ă partir du compte de gestion de lâorganisation, vous pouvez faire ce qui suit :
-
CrĂ©er des comptes dans lâorganisation
-
Inviter dâautres comptes existants Ă lâorganisation
-
Supprimer des comptes de lâorganisation
-
Gérer les invitations
-
Appliquer des politiques aux entitĂ©s (roots, OUs ou comptes) au sein de lâorganisation
-
Activer lâintĂ©gration avec les services AWS pris en charge pour fournir des fonctionnalitĂ©s de service Ă tous les comptes de lâorganisation.
-
Il est possible de se connecter en tant quâutilisateur root en utilisant lâemail et le mot de passe utilisĂ©s pour crĂ©er ce compte/organisation root.
Le compte de gestion a les responsabilitĂ©s dâun compte payeur et est responsable du paiement de tous les frais accumulĂ©s par les comptes membres. Vous ne pouvez pas changer le compte de gestion dâune organisation.
- Les comptes membres constituent tous les autres comptes dâune organisation. Un compte ne peut ĂȘtre membre que dâune seule organisation Ă la fois. Vous pouvez attacher une politique Ă un compte pour appliquer des contrĂŽles uniquement Ă ce compte.
- Les comptes membres doivent utiliser une adresse email valide et peuvent avoir un nom, en général ils ne pourront pas gérer la facturation (mais ils pourraient y avoir accÚs).
aws organizations create-account --account-name testingaccount --email testingaccount@lalala1233fr.com
UnitĂ©s dâOrganisation
Les comptes peuvent ĂȘtre regroupĂ©s en UnitĂ©s dâOrganisation (OU). De cette maniĂšre, vous pouvez crĂ©er des politiques pour lâUnitĂ© dâOrganisation qui vont ĂȘtre appliquĂ©es Ă tous les comptes enfants. Notez quâune OU peut avoir dâautres OUs comme enfants.
# You can get the root id from aws organizations list-roots
aws organizations create-organizational-unit --parent-id r-lalala --name TestOU
Service Control Policy (SCP)
Une service control policy (SCP) est une politique qui spĂ©cifie les services et actions que les utilisateurs et rĂŽles peuvent utiliser dans les comptes que la SCP affecte. Les SCP sont similaires aux politiques de permissions IAM sauf quâelles ne donnent aucune permission. Au lieu de cela, les SCP spĂ©cifient les permissions maximales pour une organisation, une unitĂ© organisationnelle (OU) ou un compte. Lorsque vous attachez une SCP Ă la racine de votre organisation ou Ă une OU, la SCP limite les permissions pour les entitĂ©s dans les comptes membres.
Câest le SEUL moyen par lequel mĂȘme lâutilisateur root peut ĂȘtre arrĂȘtĂ© de faire quelque chose. Par exemple, cela pourrait ĂȘtre utilisĂ© pour empĂȘcher les utilisateurs de dĂ©sactiver CloudTrail ou de supprimer des sauvegardes.
Le seul moyen de contourner cela est de compromettre Ă©galement le compte maĂźtre qui configure les SCP (le compte maĂźtre ne peut pas ĂȘtre bloquĂ©).
Warning
Notez que les SCP ne restreignent que les principaux dans le compte, donc dâautres comptes ne sont pas affectĂ©s. Cela signifie quâavoir une SCP qui refuse
s3:GetObjectnâarrĂȘtera pas les gens dâaccĂ©der Ă un bucket S3 public dans votre compte.
Exemples de SCP :
- Refuser complĂštement le compte root
- Autoriser uniquement des régions spécifiques
- Autoriser uniquement des services sur liste blanche
- Refuser que GuardDuty, CloudTrail et S3 Public Block Access soient désactivés
- Refuser que les rÎles de sécurité/réponse aux incidents soient supprimés ou modifiés.
- Refuser que les sauvegardes soient supprimées.
- Refuser la crĂ©ation dâutilisateurs IAM et de clĂ©s dâaccĂšs
Trouvez des exemples JSON dans https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples.html
Resource Control Policy (RCP)
Une resource control policy (RCP) est une politique qui dĂ©finit les permissions maximales pour les ressources au sein de votre organisation AWS. Les RCP sont similaires aux politiques IAM en syntaxe mais ne donnent pas de permissionsâelles ne font que plafonner les permissions qui peuvent ĂȘtre appliquĂ©es aux ressources par dâautres politiques. Lorsque vous attachez une RCP Ă la racine de votre organisation, Ă une unitĂ© organisationnelle (OU) ou Ă un compte, la RCP limite les permissions des ressources sur toutes les ressources dans le champ dâapplication affectĂ©.
Câest le SEUL moyen de sâassurer que les ressources ne peuvent pas dĂ©passer des niveaux dâaccĂšs prĂ©dĂ©finisâmĂȘme si une politique basĂ©e sur lâidentitĂ© ou sur la ressource est trop permissive. Le seul moyen de contourner ces limites est de modifier Ă©galement la RCP configurĂ©e par le compte de gestion de votre organisation.
Warning
Les RCP ne restreignent que les permissions que les ressources peuvent avoir. Elles ne contrĂŽlent pas directement ce que les principaux peuvent faire. Par exemple, si une RCP refuse lâaccĂšs externe Ă un bucket S3, elle garantit que les permissions du bucket ne permettent jamais dâactions au-delĂ de la limite fixĂ©eâmĂȘme si une politique basĂ©e sur la ressource est mal configurĂ©e.
Exemples de RCP :
- Restreindre les buckets S3 afin quâils ne puissent ĂȘtre accessibles que par des principaux au sein de votre organisation
- Limiter lâutilisation des clĂ©s KMS pour nâautoriser que les opĂ©rations des comptes organisationnels de confiance
- Plafonner les permissions sur les files dâattente SQS pour empĂȘcher les modifications non autorisĂ©es
- Faire respecter des limites dâaccĂšs sur les secrets de Secrets Manager pour protĂ©ger les donnĂ©es sensibles
Trouvez des exemples dans AWS Organizations Resource Control Policies documentation
ARN
Amazon Resource Name est le nom unique que chaque ressource Ă lâintĂ©rieur dâAWS possĂšde, il est composĂ© comme ceci :
arn:partition:service:region:account-id:resource-type/resource-id
arn:aws:elasticbeanstalk:us-west-1:123456789098:environment/App/Env
Notez quâil y a 4 partitions dans AWS mais seulement 3 façons de les appeler :
- AWS Standard :
aws - AWS China :
aws-cn - AWS US public Internet (GovCloud) :
aws-us-gov - AWS Secret (US Classified) :
aws
IAM - Gestion des identités et des accÚs
IAM est le service qui vous permettra de gĂ©rer lâauthentification, lâautorisation et le contrĂŽle dâaccĂšs au sein de votre compte AWS.
- Authentification - Processus de dĂ©finition dâune identitĂ© et de vĂ©rification de cette identitĂ©. Ce processus peut ĂȘtre subdivisĂ© en : Identification et vĂ©rification.
- Autorisation - DĂ©termine ce quâune identitĂ© peut accĂ©der au sein dâun systĂšme une fois quâelle a Ă©tĂ© authentifiĂ©e.
- ContrĂŽle dâaccĂšs - La mĂ©thode et le processus par lesquels lâaccĂšs est accordĂ© Ă une ressource sĂ©curisĂ©e.
IAM peut ĂȘtre dĂ©fini par sa capacitĂ© Ă gĂ©rer, contrĂŽler et gouverner les mĂ©canismes dâauthentification, dâautorisation et de contrĂŽle dâaccĂšs des identitĂ©s Ă vos ressources au sein de votre compte AWS.
Utilisateur racine du compte AWS
Lorsque vous crĂ©ez pour la premiĂšre fois un compte Amazon Web Services (AWS), vous commencez avec une identitĂ© de connexion unique qui a un accĂšs complet Ă tous les services et ressources AWS dans le compte. Câest lâutilisateur racine du compte AWS et il est accessible en se connectant avec lâadresse e-mail et le mot de passe que vous avez utilisĂ©s pour crĂ©er le compte.
Notez quâun nouvel utilisateur admin aura moins de permissions que lâutilisateur racine.
Dâun point de vue sĂ©curitĂ©, il est recommandĂ© de crĂ©er dâautres utilisateurs et dâĂ©viter dâutiliser celui-ci.
Utilisateurs IAM
Un utilisateur IAM est une entitĂ© que vous crĂ©ez dans AWS pour reprĂ©senter la personne ou lâapplication qui lâutilise pour interagir avec AWS. Un utilisateur dans AWS se compose dâun nom et de rĂ©fĂ©rences (mot de passe et jusquâĂ deux clĂ©s dâaccĂšs).
Lorsque vous crĂ©ez un utilisateur IAM, vous lui accordez des permissions en le rendant membre dâun groupe dâutilisateurs qui a des politiques de permission appropriĂ©es attachĂ©es (recommandĂ©), ou en attachant directement des politiques Ă lâutilisateur.
Les utilisateurs peuvent avoir MFA activĂ© pour se connecter via la console. Les jetons API des utilisateurs avec MFA activĂ© ne sont pas protĂ©gĂ©s par MFA. Si vous souhaitez restreindre lâaccĂšs des clĂ©s API dâun utilisateur en utilisant MFA, vous devez indiquer dans la politique quâen vue dâeffectuer certaines actions, MFA doit ĂȘtre prĂ©sent (exemple ici).
CLI
- ID de clĂ© dâaccĂšs : 20 caractĂšres alphanumĂ©riques majuscules alĂ©atoires comme AKHDNAPO86BSHKDIRYT
- ID de clĂ© dâaccĂšs secrĂšte : 40 caractĂšres alĂ©atoires en majuscules et minuscules : S836fh/J73yHSb64Ag3Rkdi/jaD6sPl6/antFtU (Il nâest pas possible de rĂ©cupĂ©rer les ID de clĂ© dâaccĂšs secrĂšte perdus).
Chaque fois que vous devez changer la clĂ© dâaccĂšs, voici le processus que vous devez suivre :
CrĂ©ez une nouvelle clĂ© dâaccĂšs -> Appliquez la nouvelle clĂ© au systĂšme/application -> marquez lâoriginal comme inactif -> Testez et vĂ©rifiez que la nouvelle clĂ© dâaccĂšs fonctionne -> Supprimez lâancienne clĂ© dâaccĂšs
MFA - Authentification Multi-Facteurs
Il est utilisĂ© pour crĂ©er un facteur supplĂ©mentaire pour lâauthentification en plus de vos mĂ©thodes existantes, telles que le mot de passe, crĂ©ant ainsi un niveau dâauthentification multi-facteurs.
Vous pouvez utiliser une application virtuelle gratuite ou un appareil physique. Vous pouvez utiliser des applications comme Google Authenticator gratuitement pour activer un MFA dans AWS.
Les politiques avec des conditions MFA peuvent ĂȘtre attachĂ©es aux Ă©lĂ©ments suivants :
- Un utilisateur ou un groupe IAM
- Une ressource telle quâun bucket Amazon S3, une file dâattente Amazon SQS ou un sujet Amazon SNS
- La politique de confiance dâun rĂŽle IAM qui peut ĂȘtre assumĂ© par un utilisateur
Si vous souhaitez accéder via CLI à une ressource qui vérifie MFA, vous devez appeler GetSessionToken. Cela vous donnera un jeton avec des informations sur MFA.
Notez que les informations dâidentification AssumeRole ne contiennent pas cette information.
aws sts get-session-token --serial-number <arn_device> --token-code <code>
Comme indiquĂ© ici, il existe de nombreux cas oĂč MFA ne peut pas ĂȘtre utilisĂ©.
Groupes dâutilisateurs IAM
Un groupe dâutilisateurs IAM est un moyen de joindre des politiques Ă plusieurs utilisateurs en mĂȘme temps, ce qui peut faciliter la gestion des autorisations pour ces utilisateurs. Les rĂŽles et les groupes ne peuvent pas faire partie dâun groupe.
Vous pouvez attacher une politique basĂ©e sur lâidentitĂ© Ă un groupe dâutilisateurs afin que tous les utilisateurs du groupe dâutilisateurs reçoivent les autorisations de la politique. Vous ne pouvez pas identifier un groupe dâutilisateurs comme un Principal dans une politique (comme une politique basĂ©e sur les ressources) car les groupes sont liĂ©s aux autorisations, pas Ă lâauthentification, et les principaux sont des entitĂ©s IAM authentifiĂ©es.
Voici quelques caractĂ©ristiques importantes des groupes dâutilisateurs :
- Un groupe dâutilisateurs peut contenir plusieurs utilisateurs, et un utilisateur peut appartenir Ă plusieurs groupes.
- Les groupes dâutilisateurs ne peuvent pas ĂȘtre imbriquĂ©s ; ils ne peuvent contenir que des utilisateurs, pas dâautres groupes dâutilisateurs.
- Il nây a pas de groupe dâutilisateurs par dĂ©faut qui inclut automatiquement tous les utilisateurs du compte AWS. Si vous souhaitez avoir un groupe dâutilisateurs comme cela, vous devez le crĂ©er et assigner chaque nouvel utilisateur Ă celui-ci.
- Le nombre et la taille des ressources IAM dans un compte AWS, comme le nombre de groupes et le nombre de groupes dont un utilisateur peut ĂȘtre membre, sont limitĂ©s. Pour plus dâinformations, voir les quotas IAM et AWS STS.
RĂŽles IAM
Un rĂŽle IAM est trĂšs similaire Ă un utilisateur, en ce sens quâil sâagit dâune identitĂ© avec des politiques dâautorisation qui dĂ©terminent ce quâelle peut et ne peut pas faire dans AWS. Cependant, un rĂŽle nâa pas de credentials (mot de passe ou clĂ©s dâaccĂšs) qui lui sont associĂ©s. Au lieu dâĂȘtre associĂ© de maniĂšre unique Ă une personne, un rĂŽle est destinĂ© Ă ĂȘtre assumĂ© par quiconque en a besoin (et a suffisamment de permissions). Un utilisateur IAM peut assumer un rĂŽle pour temporairement prendre des autorisations diffĂ©rentes pour une tĂąche spĂ©cifique. Un rĂŽle peut ĂȘtre assignĂ© Ă un utilisateur fĂ©dĂ©rĂ© qui se connecte en utilisant un fournisseur dâidentitĂ© externe au lieu dâIAM.
Un rĂŽle IAM se compose de deux types de politiques : une politique de confiance, qui ne peut pas ĂȘtre vide, dĂ©finissant qui peut assumer le rĂŽle, et une politique dâautorisation, qui ne peut pas ĂȘtre vide, dĂ©finissant ce quâil peut accĂ©der.
Service de jetons de sécurité AWS (STS)
Le Service de jetons de sĂ©curitĂ© AWS (STS) est un service web qui facilite lâĂ©mission de credentials temporaires Ă privilĂšges limitĂ©s. Il est spĂ©cifiquement conçu pour :
Credentials temporaires dans IAM
Les credentials temporaires sont principalement utilisĂ©s avec des rĂŽles IAM, mais il existe Ă©galement dâautres utilisations. Vous pouvez demander des credentials temporaires qui ont un ensemble de permissions plus restreint que votre utilisateur IAM standard. Cela empĂȘche que vous effectuiez accidentellement des tĂąches qui ne sont pas autorisĂ©es par les credentials plus restreints. Un avantage des credentials temporaires est quâils expirent automatiquement aprĂšs une pĂ©riode dĂ©terminĂ©e. Vous avez le contrĂŽle sur la durĂ©e pendant laquelle les credentials sont valides.
Politiques
Permissions de politique
Sont utilisées pour attribuer des permissions. Il existe 2 types :
- Politiques gérées par AWS (préconfigurées par AWS)
- Politiques gĂ©rĂ©es par le client : configurĂ©es par vous. Vous pouvez crĂ©er des politiques basĂ©es sur des politiques gĂ©rĂ©es par AWS (en modifiant lâune dâelles et en crĂ©ant la vĂŽtre), en utilisant le gĂ©nĂ©rateur de politiques (une vue GUI qui vous aide Ă accorder et refuser des permissions) ou en Ă©crivant la vĂŽtre.
Par dĂ©faut, lâaccĂšs est refusĂ©, lâaccĂšs sera accordĂ© si un rĂŽle explicite a Ă©tĂ© spĂ©cifiĂ©.
Si un âDenyâ unique existe, il remplacera le âAllowâ, sauf pour les demandes qui utilisent les credentials de sĂ©curitĂ© root du compte AWS (qui sont autorisĂ©es par dĂ©faut).
{
"Version": "2012-10-17", //Version of the policy
"Statement": [ //Main element, there can be more than 1 entry in this array
{
"Sid": "Stmt32894y234276923" //Unique identifier (optional)
"Effect": "Allow", //Allow or deny
"Action": [ //Actions that will be allowed or denied
"ec2:AttachVolume",
"ec2:DetachVolume"
],
"Resource": [ //Resource the action and effect will be applied to
"arn:aws:ec2:*:*:volume/*",
"arn:aws:ec2:*:*:instance/*"
],
"Condition": { //Optional element that allow to control when the permission will be effective
"ArnEquals": {"ec2:SourceInstanceARN": "arn:aws:ec2:*:*:instance/instance-id"}
}
}
]
}
Les champs globaux qui peuvent ĂȘtre utilisĂ©s pour des conditions dans nâimporte quel service sont documentĂ©s ici.
Les champs spĂ©cifiques qui peuvent ĂȘtre utilisĂ©s pour des conditions par service sont documentĂ©s ici.
Politiques Inline
Ce type de politiques est directement assignĂ© Ă un utilisateur, un groupe ou un rĂŽle. Ainsi, elles nâapparaissent pas dans la liste des Politiques car dâautres peuvent les utiliser.
Les politiques inline sont utiles si vous souhaitez maintenir une relation stricte un Ă un entre une politique et lâidentitĂ© Ă laquelle elle est appliquĂ©e. Par exemple, vous voulez vous assurer que les autorisations dans une politique ne sont pas attribuĂ©es par inadvertance Ă une identitĂ© autre que celle pour laquelle elles sont destinĂ©es. Lorsque vous utilisez une politique inline, les autorisations dans la politique ne peuvent pas ĂȘtre attachĂ©es par inadvertance Ă la mauvaise identitĂ©. De plus, lorsque vous utilisez la console de gestion AWS pour supprimer cette identitĂ©, les politiques intĂ©grĂ©es Ă lâidentitĂ© sont Ă©galement supprimĂ©es. Câest parce quâelles font partie de lâentitĂ© principale.
Politiques de Bucket de Ressources
Ce sont des politiques qui peuvent ĂȘtre dĂ©finies dans des ressources. Toutes les ressources dâAWS ne les prennent pas en charge.
Si un principal nâa pas de refus explicite Ă leur sujet, et quâune politique de ressource leur accorde lâaccĂšs, alors ils sont autorisĂ©s.
Limites IAM
Les limites IAM peuvent ĂȘtre utilisĂ©es pour limiter les autorisations auxquelles un utilisateur ou un rĂŽle devrait avoir accĂšs. De cette façon, mĂȘme si un ensemble diffĂ©rent dâautorisations est accordĂ© Ă lâutilisateur par une politique diffĂ©rente, lâopĂ©ration Ă©chouera sâil essaie de les utiliser.
Une limite est simplement une politique attachĂ©e Ă un utilisateur qui indique le niveau maximum dâautorisations que lâutilisateur ou le rĂŽle peut avoir. Donc, mĂȘme si lâutilisateur a un accĂšs Administrateur, si la limite indique quâil ne peut lire que des buckets S·, câest le maximum quâil peut faire.
Cela, les SCPs et le respect du principe du moindre privilĂšge sont les moyens de contrĂŽler que les utilisateurs nâont pas plus dâautorisations que celles dont ils ont besoin.
Politiques de Session
Une politique de session est une politique dĂ©finie lorsquâun rĂŽle est assumĂ© dâune maniĂšre ou dâune autre. Cela sera comme une limite IAM pour cette session : Cela signifie que la politique de session ne donne pas dâautorisations mais les restreint Ă celles indiquĂ©es dans la politique (les autorisations maximales Ă©tant celles que le rĂŽle a).
Ceci est utile pour des mesures de sĂ©curitĂ© : Lorsquâun administrateur va assumer un rĂŽle trĂšs privilĂ©giĂ©, il pourrait restreindre lâautorisation uniquement Ă celles indiquĂ©es dans la politique de session au cas oĂč la session serait compromise.
aws sts assume-role \
--role-arn <value> \
--role-session-name <value> \
[--policy-arns <arn_custom_policy1> <arn_custom_policy2>]
[--policy <file://policy.json>]
Notez quâen dĂ©faut, AWS peut ajouter des politiques de session aux sessions qui vont ĂȘtre gĂ©nĂ©rĂ©es pour dâautres raisons. Par exemple, dans les rĂŽles supposĂ©s cognito non authentifiĂ©s, par dĂ©faut (en utilisant lâauthentification amĂ©liorĂ©e), AWS gĂ©nĂ©rera des identifiants de session avec une politique de session qui limite les services auxquels cette session peut accĂ©der Ă la liste suivante.
Par consĂ©quent, si Ă un moment donnĂ© vous rencontrez lâerreur â⊠parce quâaucune politique de session ne permet le âŠâ, et que le rĂŽle a accĂšs pour effectuer lâaction, câest parce que il y a une politique de session qui lâen empĂȘche.
FĂ©dĂ©ration dâidentitĂ©
La fĂ©dĂ©ration dâidentitĂ© permet aux utilisateurs des fournisseurs dâidentitĂ© qui sont externes Ă AWS dâaccĂ©der aux ressources AWS de maniĂšre sĂ©curisĂ©e sans avoir Ă fournir les identifiants dâutilisateur AWS dâun compte IAM valide.
Un exemple de fournisseur dâidentitĂ© peut ĂȘtre votre propre Microsoft Active Directory (via SAML) ou des services OpenID (comme Google). LâaccĂšs fĂ©dĂ©rĂ© permettra alors aux utilisateurs de celui-ci dâaccĂ©der Ă AWS.
Pour configurer cette confiance, un fournisseur dâidentitĂ© IAM est gĂ©nĂ©rĂ© (SAML ou OAuth) qui fera confiance Ă la autre plateforme. Ensuite, au moins un rĂŽle IAM est attribuĂ© (faisant confiance) au fournisseur dâidentitĂ©. Si un utilisateur de la plateforme de confiance accĂšde Ă AWS, il le fera en accĂ©dant au rĂŽle mentionnĂ©.
Cependant, vous voudrez gĂ©nĂ©ralement donner un rĂŽle diffĂ©rent en fonction du groupe de lâutilisateur sur la plateforme tierce. Ensuite, plusieurs rĂŽles IAM peuvent faire confiance au fournisseur dâidentitĂ© tiers et la plateforme tierce sera celle qui permettra aux utilisateurs dâassumer un rĂŽle ou un autre.
.png)
Centre dâidentitĂ© IAM
AWS IAM Identity Center (successeur dâAWS Single Sign-On) Ă©tend les capacitĂ©s de la gestion des identitĂ©s et des accĂšs AWS (IAM) pour fournir un endroit central qui regroupe lâadministration des utilisateurs et leur accĂšs aux comptes AWS et aux applications cloud.
Le domaine de connexion sera quelque chose comme <user_input>.awsapps.com.
Pour connecter des utilisateurs, il y a 3 sources dâidentitĂ© qui peuvent ĂȘtre utilisĂ©es :
- Répertoire Identity Center : Utilisateurs AWS réguliers
- Active Directory : Prend en charge différents connecteurs
- Fournisseur dâidentitĂ© externe : Tous les utilisateurs et groupes proviennent dâun fournisseur dâidentitĂ© externe (IdP)
.png)
Dans le cas le plus simple du rĂ©pertoire Identity Center, le Centre dâidentitĂ© aura une liste dâutilisateurs et de groupes et sera capable dâattribuer des politiques Ă ceux-ci pour nâimporte lequel des comptes de lâorganisation.
Pour donner accĂšs Ă un utilisateur/groupe du Centre dâidentitĂ© Ă un compte, un fournisseur dâidentitĂ© SAML faisant confiance au Centre dâidentitĂ© sera créé, et un rĂŽle faisant confiance au fournisseur dâidentitĂ© avec les politiques indiquĂ©es sera créé dans le compte de destination.
AwsSSOInlinePolicy
Il est possible de donner des permissions via des politiques en ligne aux rÎles créés via IAM Identity Center. Les rÎles créés dans les comptes étant donnés politiques en ligne dans AWS Identity Center auront ces permissions dans une politique en ligne appelée AwsSSOInlinePolicy.
Par consĂ©quent, mĂȘme si vous voyez 2 rĂŽles avec une politique en ligne appelĂ©e AwsSSOInlinePolicy, cela ne signifie pas quâils ont les mĂȘmes permissions.
Confiances et rĂŽles inter-comptes
Un utilisateur (faisant confiance) peut crĂ©er un rĂŽle inter-comptes avec certaines politiques et ensuite, permettre Ă un autre utilisateur (de confiance) dâaccĂ©der Ă son compte mais seulement avec lâaccĂšs indiquĂ© dans les nouvelles politiques de rĂŽle. Pour crĂ©er cela, il suffit de crĂ©er un nouveau rĂŽle et de sĂ©lectionner le rĂŽle inter-comptes. Les rĂŽles pour lâaccĂšs inter-comptes offrent deux options. Fournir un accĂšs entre les comptes AWS que vous possĂ©dez, et fournir un accĂšs entre un compte que vous possĂ©dez et un compte AWS tiers.
Il est recommandĂ© de spĂ©cifier lâutilisateur qui est de confiance et de ne pas mettre quelque chose de gĂ©nĂ©rique car sinon, dâautres utilisateurs authentifiĂ©s comme les utilisateurs fĂ©dĂ©rĂ©s pourront Ă©galement abuser de cette confiance.
AWS Simple AD
Non pris en charge :
- Relations de confiance
- Centre dâadministration AD
- Prise en charge complĂšte de lâAPI PS
- Corbeille AD
- Comptes de service gérés par groupe
- Extensions de schéma
- Pas dâaccĂšs direct au systĂšme dâexploitation ou aux instances
Fédération Web ou authentification OpenID
Lâapplication utilise AssumeRoleWithWebIdentity pour crĂ©er des identifiants temporaires. Cependant, cela nâaccorde pas lâaccĂšs Ă la console AWS, seulement lâaccĂšs aux ressources au sein dâAWS.
Autres options IAM
- Vous pouvez définir un paramÚtre de politique de mot de passe avec des options comme la longueur minimale et les exigences de mot de passe.
- Vous pouvez tĂ©lĂ©charger un âRapport dâidentifiantsâ avec des informations sur les identifiants actuels (comme le temps de crĂ©ation de lâutilisateur, si le mot de passe est activĂ©âŠ). Vous pouvez gĂ©nĂ©rer un rapport dâidentifiants aussi souvent quâune fois toutes les quatre heures.
AWS Identity and Access Management (IAM) fournit un contrĂŽle dâaccĂšs granulaire sur lâensemble dâAWS. Avec IAM, vous pouvez spĂ©cifier qui peut accĂ©der Ă quels services et ressources, et sous quelles conditions. Avec les politiques IAM, vous gĂ©rez les permissions de votre main-dâĆuvre et de vos systĂšmes pour assurer des permissions de moindre privilĂšge.
PrĂ©fixes dâID IAM
Dans cette page, vous pouvez trouver les prĂ©fixes dâID IAM des clĂ©s en fonction de leur nature :
| Code dâidentifiant | Description |
|---|---|
| ABIA | Jeton porteur de service AWS STS |
| ACCA | Identifiant spĂ©cifique au contexte | | AGPA | Groupe dâutilisateurs | | AIDA | Utilisateur IAM | | AIPA | Profil dâinstance Amazon EC2 | | AKIA | ClĂ© dâaccĂšs | | ANPA | Politique gĂ©rĂ©e | | ANVA | Version dans une politique gĂ©rĂ©e | | APKA | ClĂ© publique | | AROA | RĂŽle | | ASCA | Certificat | | ASIA | Identifiants de clĂ© dâaccĂšs temporaires (AWS STS) utilisent ce prĂ©fixe, mais sont uniques uniquement en combinaison avec la clĂ© dâaccĂšs secrĂšte et le jeton de session. |
Permissions recommandées pour auditer les comptes
Les privilÚges suivants accordent divers accÚs en lecture des métadonnées :
arn:aws:iam::aws:policy/SecurityAuditarn:aws:iam::aws:policy/job-function/ViewOnlyAccesscodebuild:ListProjectsconfig:Describe*cloudformation:ListStackslogs:DescribeMetricFiltersdirectconnect:DescribeConnectionsdynamodb:ListTables
Divers
Authentification CLI
Pour quâun utilisateur rĂ©gulier sâauthentifie Ă AWS via CLI, vous devez avoir des identifiants locaux. Par dĂ©faut, vous pouvez les configurer manuellement dans ~/.aws/credentials ou en exĂ©cutant aws configure.
Dans ce fichier, vous pouvez avoir plus dâun profil, si aucun profil nâest spĂ©cifiĂ© en utilisant le cli aws, celui appelĂ© [default] dans ce fichier sera utilisĂ©.
Exemple de fichier dâidentifiants avec plus dâun profil :
[default]
aws_access_key_id = AKIA5ZDCUJHF83HDTYUT
aws_secret_access_key = uOcdhof683fbOUGFYEQug8fUGIf68greoihef
[Admin]
aws_access_key_id = AKIA8YDCu7TGTR356SHYT
aws_secret_access_key = uOcdhof683fbOUGFYEQuR2EIHG34UY987g6ff7
region = eu-west-2
Si vous devez accĂ©der Ă diffĂ©rents comptes AWS et que votre profil a Ă©tĂ© autorisĂ© Ă assumer un rĂŽle dans ces comptes, vous nâavez pas besoin dâappeler manuellement STS Ă chaque fois (aws sts assume-role --role-arn <role-arn> --role-session-name sessname) et de configurer les identifiants.
Vous pouvez utiliser le fichier ~/.aws/config pour indiquer quels rĂŽles assumer, puis utiliser le paramĂštre --profile comme dâhabitude (lâassume-role sera effectuĂ© de maniĂšre transparente pour lâutilisateur).
Un exemple de fichier de configuration :
[profile acc2]
region=eu-west-2
role_arn=arn:aws:iam::<account-id>:role/<role-path>
role_session_name = <session_name>
source_profile = <profile_with_assume_role>
sts_regional_endpoints = regional
Avec ce fichier de configuration, vous pouvez ensuite utiliser aws cli comme :
aws --profile acc2 ...
Si vous recherchez quelque chose de similaire Ă cela mais pour le navigateur, vous pouvez consulter lâextension AWS Extend Switch Roles.
Automatisation des identifiants temporaires
Si vous exploitez une application qui gĂ©nĂšre des identifiants temporaires, il peut ĂȘtre fastidieux de les mettre Ă jour dans votre terminal toutes les quelques minutes lorsquâils expirent. Cela peut ĂȘtre rĂ©solu en utilisant une directive credential_process dans le fichier de configuration. Par exemple, si vous avez une application web vulnĂ©rable, vous pourriez faire :
[victim]
credential_process = curl -d 'PAYLOAD' https://some-site.com
Notez que les identifiants doivent ĂȘtre renvoyĂ©s Ă STDOUT dans le format suivant :
{
"Version": 1,
"AccessKeyId": "an AWS access key",
"SecretAccessKey": "your AWS secret access key",
"SessionToken": "the AWS session token for temporary credentials",
"Expiration": "ISO8601 timestamp when the credentials expire"
}
Références
- https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html
- https://aws.amazon.com/iam/
- https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html
- https://aws.amazon.com/blogs/aws/introducing-resource-control-policies-rcps-a-new-authorization-policy/
Tip
Apprenez & pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Soutenez HackTricks
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
HackTricks Cloud

