AWS - IAM Post Exploitation
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.
IAM
Pour plus dâinformations sur lâaccĂšs IAM :
AWS - IAM, Identity Center & SSO Enum
ProblĂšme du Confused Deputy
Si vous autorisez un compte externe (A) Ă accĂ©der Ă un rĂŽle dans votre compte, vous aurez probablement 0 visibilitĂ© sur qui peut exactement accĂ©der Ă ce compte externe. Câest un problĂšme, car si un autre compte externe (B) peut accĂ©der au compte externe (A), il est possible que B puisse Ă©galement accĂ©der Ă votre compte.
Donc, lorsque vous autorisez un compte externe Ă accĂ©der Ă un rĂŽle dans votre compte, il est possible de spĂ©cifier un ExternalId. Il sâagit dâune chaĂźne âsecrĂšteâ que le compte externe (A) doit spĂ©cifier afin de assumer le rĂŽle dans votre organisation. Comme le compte externe B ne connaĂźtra pas cette chaĂźne, mĂȘme sâil a accĂšs Ă A, il ne pourra pas accĂ©der Ă votre rĂŽle.
.png)
Cependant, notez que ce ExternalId âsecretâ est nâest pas un secret, quiconque peut lire la IAM assume role policy pourra le voir. Mais tant que le compte externe A le connaĂźt, et que le compte externe B ne le connaĂźt pas, cela empĂȘche B dâabuser de A pour accĂ©der Ă votre rĂŽle.
Exemple:
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Principal": {
"AWS": "Example Corp's AWS Account ID"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "12345"
}
}
}
}
Warning
Pour quâun attaquant exploite un confused deputy, il devra, dâune maniĂšre ou dâune autre, dĂ©couvrir si les principals du compte actuel peuvent se faire passer pour des roles dans dâautres comptes.
Confiances inattendues
Wildcard en tant que principal
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": { "AWS": "*" }
}
Cette politique autorise lâensemble dâAWS Ă assumer le rĂŽle.
Service en tant que principal
{
"Action": "lambda:InvokeFunction",
"Effect": "Allow",
"Principal": { "Service": "apigateway.amazonaws.com" },
"Resource": "arn:aws:lambda:000000000000:function:foo"
}
Cette politique autorise nâimporte quel compte Ă configurer son apigateway pour appeler cette Lambda.
S3 en tant que principal
"Condition": {
"ArnLike": { "aws:SourceArn": "arn:aws:s3:::source-bucket" },
"StringEquals": {
"aws:SourceAccount": "123456789012"
}
}
Si un S3 bucket est donnĂ© comme principal, puisque les S3 buckets nâont pas dâAccount ID, si vous avez supprimĂ© votre bucket et que lâattaquant lâa recréé dans son propre compte, alors il pourrait en abuser.
Non pris en charge
{
"Effect": "Allow",
"Principal": { "Service": "cloudtrail.amazonaws.com" },
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::myBucketName/AWSLogs/MY_ACCOUNT_ID/*"
}
Une mĂ©thode courante pour Ă©viter les problĂšmes de Confused Deputy est dâutiliser une condition avec AWS:SourceArn pour vĂ©rifier lâARN dâorigine. Cependant, certains services peuvent ne pas le prendre en charge (comme CloudTrail dâaprĂšs certaines sources).
Suppression des identifiants
Avec lâune des permissions suivantes â iam:DeleteAccessKey, iam:DeleteLoginProfile, iam:DeleteSSHPublicKey, iam:DeleteServiceSpecificCredential, iam:DeleteInstanceProfile, iam:DeleteServerCertificate, iam:DeleteCloudFrontPublicKey, iam:RemoveRoleFromInstanceProfile â un acteur peut supprimer access keys, login profiles, SSH keys, service-specific credentials, instance profiles, certificates ou CloudFront public keys, ou dissocier des rĂŽles des instance profiles. De telles actions peuvent immĂ©diatement bloquer des utilisateurs et applications lĂ©gitimes et provoquer un dĂ©ni de service ou une perte dâaccĂšs pour les systĂšmes qui dĂ©pendent de ces credentials ; ces permissions IAM doivent donc ĂȘtre strictement restreintes et surveillĂ©es.
# Remove Access Key of a user
aws iam delete-access-key \
--user-name <Username> \
--access-key-id AKIAIOSFODNN7EXAMPLE
## Remove ssh key of a user
aws iam delete-ssh-public-key \
--user-name <Username> \
--ssh-public-key-id APKAEIBAERJR2EXAMPLE
Suppression dâidentitĂ©s
Avec des permissions telles que iam:DeleteUser, iam:DeleteGroup, iam:DeleteRole ou iam:RemoveUserFromGroup, un acteur peut supprimer des users, roles ou groups â ou modifier la group membership â supprimant des identitĂ©s et les traces associĂ©es. Cela peut immĂ©diatement interrompre lâaccĂšs pour les personnes et les services qui dĂ©pendent de ces identitĂ©s, provoquant un denial-of-service ou une perte dâaccĂšs ; ces actions IAM doivent donc ĂȘtre strictement restreintes et surveillĂ©es.
# Delete a user
aws iam delete-user \
--user-name <Username>
# Delete a group
aws iam delete-group \
--group-name <Username>
# Delete a role
aws iam delete-role \
--role-name <Role>
Avec lâune des permissions suivantes â iam:DeleteGroupPolicy, iam:DeleteRolePolicy, iam:DeleteUserPolicy, iam:DeletePolicy, iam:DeletePolicyVersion, iam:DeleteRolePermissionsBoundary, iam:DeleteUserPermissionsBoundary, iam:DetachGroupPolicy, iam:DetachRolePolicy, iam:DetachUserPolicy â un acteur peut supprimer ou dĂ©tacher des politiques gĂ©rĂ©es/intĂ©grĂ©es, supprimer des versions de politique ou des limites de permissions, et dissocier des politiques dâutilisateurs, de groupes ou de rĂŽles. Cela dĂ©truit des autorisations et peut altĂ©rer le modĂšle de permissions, provoquant une perte dâaccĂšs immĂ©diate ou un dĂ©ni de service pour les entitĂ©s qui dĂ©pendaient de ces politiques, donc ces actions IAM doivent ĂȘtre strictement restreintes et surveillĂ©es.
# Delete a group policy
aws iam delete-group-policy \
--group-name <GroupName> \
--policy-name <PolicyName>
# Delete a role policy
aws iam delete-role-policy \
--role-name <RoleName> \
--policy-name <PolicyName>
Suppression dâidentitĂ© fĂ©dĂ©rĂ©e
Avec iam:DeleteOpenIDConnectProvider, iam:DeleteSAMLProvider et iam:RemoveClientIDFromOpenIDConnectProvider, un acteur peut supprimer des fournisseurs dâidentitĂ© OIDC/SAML ou retirer des client IDs. Cela interrompt lâauthentification fĂ©dĂ©rĂ©e, empĂȘche la validation des tokens et refuse immĂ©diatement lâaccĂšs aux utilisateurs et services qui reposent sur SSO jusquâĂ ce que lâIdP ou les configurations soient restaurĂ©s.
# Delete OIDCP provider
aws iam delete-open-id-connect-provider \
--open-id-connect-provider-arn arn:aws:iam::111122223333:oidc-provider/accounts.google.com
# Delete SAML provider
aws iam delete-saml-provider \
--saml-provider-arn arn:aws:iam::111122223333:saml-provider/CorporateADFS
Activation illégitime de MFA
Avec iam:EnableMFADevice, un attaquant peut enregistrer un dispositif MFA sur lâidentitĂ© dâun utilisateur, empĂȘchant lâutilisateur lĂ©gitime de se connecter. Une fois quâun MFA non autorisĂ© est activĂ©, lâutilisateur peut ĂȘtre verrouillĂ© jusquâĂ ce que le dispositif soit retirĂ© ou rĂ©initialisĂ© (remarque : si plusieurs dispositifs MFA sont enregistrĂ©s, la connexion ne requiert quâun seul, donc cette attaque nâaura aucun effet pour empĂȘcher lâaccĂšs).
aws iam enable-mfa-device \
--user-name <Username> \
--serial-number arn:aws:iam::111122223333:mfa/alice \
--authentication-code1 123456 \
--authentication-code2 789012
Altération des métadonnées de certificats/clés
Avec iam:UpdateSSHPublicKey, iam:UpdateCloudFrontPublicKey, iam:UpdateSigningCertificate, iam:UpdateServerCertificate, un acteur peut modifier le statut ou les métadonnées des clés publiques et des certificats.
En marquant les clĂ©s/certificats comme inactifs ou en altĂ©rant leurs rĂ©fĂ©rences, il peut interrompre lâauthentification SSH, invalider les validations X.509/TLS, et perturber immĂ©diatement les services qui dĂ©pendent de ces identifiants, entraĂźnant une perte dâaccĂšs ou de disponibilitĂ©.
aws iam update-ssh-public-key \
--user-name <Username> \
--ssh-public-key-id APKAEIBAERJR2EXAMPLE \
--status Inactive
aws iam update-server-certificate \
--server-certificate-name <Certificate_Name> \
--new-path /prod/
iam:Delete*
La wildcard IAM iam:Delete* accorde la capacitĂ© de supprimer de nombreux types de ressources IAM â users, roles, groups, policies, keys, certificates, MFA devices, policy versions, etc. â et a donc un rayon dâimpact trĂšs Ă©levĂ© : un acteur auquel iam:Delete* est accordĂ© peut dĂ©truire dĂ©finitivement des identities, credentials, policies et artefacts associĂ©s, supprimer des audits/preuves, et provoquer des interruptions de service ou des pannes opĂ©rationnelles. Quelques exemples :
# Delete a user
aws iam delete-user --user-name <Username>
# Delete a role
aws iam delete-role --role-name <RoleName>
# Delete a managed policy
aws iam delete-policy --policy-arn arn:aws:iam::<ACCOUNT_ID>:policy/<PolicyName>
iam:EnableMFADevice
Un acteur disposant de lâaction iam:EnableMFADevice peut enregistrer un appareil MFA sur une identity dans le account, Ă condition que le user nâen ait pas dĂ©jĂ un activĂ©. Cela peut ĂȘtre utilisĂ© pour perturber lâaccĂšs dâun user : une fois quâun attacker enregistre un appareil MFA, le user lĂ©gitime peut ĂȘtre empĂȘchĂ© de sign in parce quâil ne contrĂŽle pas lâappareil MFA enregistrĂ© par lâattacker.
Cette attaque de dĂ©ni dâaccĂšs ne fonctionne que si le user nâavait aucun MFA enregistrĂ© ; si lâattacker enregistre un appareil MFA pour ce user, le user lĂ©gitime sera verrouillĂ© hors de tous les flows qui exigent ce nouveau MFA. Si le user possĂšde dĂ©jĂ un ou plusieurs appareils MFA sous son contrĂŽle, lâajout dâun MFA contrĂŽlĂ© par lâattacker ne bloque pas le user lĂ©gitime â il peut continuer Ă sâauthentifier en utilisant nâimporte quel MFA quâil possĂšde dĂ©jĂ .
Pour enable (register) un appareil MFA pour un user un attacker pourrait exécuter :
aws iam enable-mfa-device \
--user-name <Username> \
--serial-number arn:aws:iam::111122223333:mfa/alice \
--authentication-code1 123456 \
--authentication-code2 789012
Références
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

