Translated ['src/pentesting-ci-cd/terraform-security.md', 'src/pentestin

This commit is contained in:
Translator
2025-01-05 21:03:52 +00:00
parent b77e901bb2
commit ea0f2898e2
3 changed files with 23 additions and 23 deletions
+18 -18
View File
@@ -30,7 +30,7 @@ Samo instalirajte terraform na vašem računaru.
Ovde imate [vodič](https://learn.hashicorp.com/tutorials/terraform/install-cli) i ovde imate [najbolji način za preuzimanje terraforma](https://www.terraform.io/downloads).
## RCE u Terraformu: trovanje konfiguracione datoteke
## RCE u Terraformu: trovanje konfiguracionih datoteka
Terraform **nema platformu koja izlaže veb stranicu ili mrežnu uslugu** koju možemo enumerisati, stoga je jedini način da kompromitujemo terraform **da možemo dodati/izmeniti terraform konfiguracione datoteke** ili **da možemo izmeniti terraform stanje datoteke** (vidi poglavlje ispod).
@@ -75,7 +75,7 @@ version = "1.0"
provider "evil" {}
```
Provajder se preuzima u `init` i izvršiće maliciozni kod kada se izvrši `plan`.
Provajder se preuzima u `init` i izvršiće maliciozni kod kada se izvrši `plan`
Možete pronaći primer na [https://github.com/rung/terraform-provider-cmdexec](https://github.com/rung/terraform-provider-cmdexec)
@@ -124,15 +124,15 @@ value = nonsensitive(var.do_token)
```
## Zloupotreba Terraform State Fajlova
U slučaju da imate pristup za pisanje nad terraform state fajlovima, ali ne možete da menjate terraform kod, [**ova istraživanja**](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/) nude neke zanimljive opcije za iskorišćavanje fajla. Čak i ako biste imali pristup za pisanje nad konfiguracionim fajlovima, korišćenje vektora state fajlova je često mnogo podlije, pošto ne ostavljate tragove u `git` istoriji.
U slučaju da imate pristup za pisanje nad terraform state fajlovima, ali ne možete da menjate terraform kod, [**ova istraživanja**](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/) nude neke zanimljive opcije za korišćenje fajla. Čak i ako biste imali pristup za pisanje nad konfiguracionim fajlovima, korišćenje vektora state fajlova je često mnogo podlije, pošto ne ostavljate tragove u `git` istoriji.
### RCE u Terraform-u: trovanje konfiguracionog fajla
Moguće je [napraviti prilagođenog provajdera](https://developer.hashicorp.com/terraform/tutorials/providers-plugin-framework/providers-plugin-framework-provider) i jednostavno zameniti jednog od provajdera u terraform state fajlu za malicioznog ili dodati lažni resurs koji se poziva na malicioznog provajdera.
Provajder [statefile-rce](https://registry.terraform.io/providers/offensive-actions/statefile-rce/latest) se oslanja na istraživanje i oružava ovaj princip. Možete dodati lažni resurs i navesti proizvoljnu bash komandu koju želite da izvršite u atributu `command`. Kada se pokrene `terraform` run, ovo će biti pročitano i izvršeno u koracima `terraform plan` i `terraform apply`. U slučaju koraka `terraform apply`, `terraform` će obrisati lažni resurs iz state fajla nakon izvršavanja vaše komande, čisteći za sobom. Više informacija i potpuna demonstracija mogu se naći u [GitHub repozitorijumu koji hostuje izvorni kod za ovog provajdera](https://github.com/offensive-actions/terraform-provider-statefile-rce).
Provajder [statefile-rce](https://registry.terraform.io/providers/offensive-actions/statefile-rce/latest) se oslanja na istraživanje i oružava ovaj princip. Možete dodati lažni resurs i navesti proizvoljnu bash komandu koju želite da izvršite u atributu `command`. Kada se pokrene `terraform` run, ovo će biti pročitano i izvršeno u koracima `terraform plan` i `terraform apply`. U slučaju koraka `terraform apply`, `terraform` će obrisati lažni resurs iz state fajla nakon izvršavanja vaše komande, čisteći za sobom. Više informacija i puna demonstracija mogu se naći u [GitHub repozitorijumu koji hostuje izvorni kod za ovog provajdera](https://github.com/offensive-actions/terraform-provider-statefile-rce).
Da biste ga koristili direktno, jednostavno uključite sledeće na bilo kojoj poziciji u `resources` nizu i prilagodite atribute `name` i `command`:
Da biste ga koristili direktno, jednostavno uključite sledeće na bilo kojoj poziciji u nizu `resources` i prilagodite atribute `name` i `command`:
```json
{
"mode": "managed",
@@ -158,7 +158,7 @@ Zatim, čim se izvrši `terraform`, vaš kod će se pokrenuti.
Postoje 2 načina da se unište resursi:
1. **Umetnite resurs sa nasumičnim imenom u datoteku stanja koja pokazuje na pravi resurs koji treba uništiti**
1. **Umetnite resurs sa nasumičnim imenom u fajl stanja koji pokazuje na pravi resurs koji treba uništiti**
Pošto će terraform videti da resurs ne bi trebao da postoji, uništiće ga (prateći pravi ID resursa koji je naznačen). Primer sa prethodne strane:
```json
@@ -182,7 +182,7 @@ Za EC2 instancu, izmena tipa instance je dovoljna da terraform obriše i ponovo
### Zamenite crnu listu provajdera
U slučaju da naiđete na situaciju gde je `hashicorp/external` stavljen na crnu listu, možete ponovo implementirati `external` provajder na sledeći način. Napomena: Koristimo fork external provajdera objavljen od strane https://registry.terraform.io/providers/nazarewk/external/latest. Takođe možete objaviti svoj fork ili ponovnu implementaciju.
U slučaju da naiđete na situaciju gde je `hashicorp/external` stavljen na crnu listu, možete ponovo implementirati `external` provajder na sledeći način. Napomena: Koristimo fork external provajdera objavljen od strane https://registry.terraform.io/providers/nazarewk/external/latest. Takođe možete objaviti svoj vlastiti fork ili ponovnu implementaciju.
```terraform
terraform {
required_providers {
@@ -209,7 +209,7 @@ Snyk nudi sveobuhvatno rešenje za skeniranje Infrastructure as Code (IaC) koje
- Skeniranje u realnom vremenu za sigurnosne ranjivosti i probleme usklađenosti.
- Integracija sa sistemima za kontrolu verzija (GitHub, GitLab, Bitbucket).
- Automatizovani zahtevi za ispravke.
- Detaljna preporuka za otklanjanje problema.
- Detaljni saveti za otklanjanje problema.
- **Prijavite se:** Kreirajte nalog na [Snyk](https://snyk.io/).
```bash
brew tap snyk/tap
@@ -221,7 +221,7 @@ snyk iac test /path/to/terraform/code
**Checkov** je alat za statičku analizu koda za infrastrukturu kao kod (IaC) i takođe alat za analizu sastava softvera (SCA) za slike i open source pakete.
Skeneruje cloud infrastrukturu koja je obezbeđena koristeći [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), ili [OpenTofu](https://opentofu.org/) i otkriva bezbednosne i usklađenosti greške u konfiguraciji koristeći skeniranje zasnovano na grafu.
Skeneruje cloud infrastrukturu koja je obezbeđena koristeći [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), ili [OpenTofu](https://opentofu.org/) i detektuje bezbednosne i usklađenosti greške u konfiguraciji koristeći skeniranje zasnovano na grafu.
Izvodi [Software Composition Analysis (SCA) skeniranje](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md) koje je skeniranje open source paketa i slika za Common Vulnerabilities and Exposures (CVEs).
```bash
@@ -230,14 +230,14 @@ checkov -d /path/to/folder
```
### [terraform-compliance](https://github.com/terraform-compliance/cli)
From the [**docs**](https://github.com/terraform-compliance/cli): `terraform-compliance` je lagan, bezbednosno orijentisan test okvir za terraform koji omogućava negativno testiranje za vašu infrastrukturu kao kod.
From the [**docs**](https://github.com/terraform-compliance/cli): `terraform-compliance` je lagan, bezbednosno orijentisan test okvir za usklađenost protiv terraform-a koji omogućava negativno testiranje za vašu infrastrukturu kao kod.
- **compliance:** Osigurajte da implementirani kod prati bezbednosne standarde, vaše sopstvene prilagođene standarde
- **behaviour driven development:** Imamo BDD za skoro sve, zašto ne i za IaC?
- **portable:** samo ga instalirajte iz `pip` ili pokrenite putem `docker`. Pogledajte [Installation](https://terraform-compliance.com/pages/installation/)
- **usaglašenost:** Osigurajte da implementirani kod prati bezbednosne standarde, vaše sopstvene prilagođene standarde
- **razvoj vođen ponašanjem:** Imamo BDD za gotovo sve, zašto ne i za IaC?
- **prenosiv:** samo ga instalirajte putem `pip` ili ga pokrenite putem `docker`. Pogledajte [Instalacija](https://terraform-compliance.com/pages/installation/)
- **pre-deploy:** validira vaš kod pre nego što bude implementiran
- **easy to integrate:** može se pokrenuti u vašem pipeline-u (ili u git hooks) kako bi se osiguralo da su sve implementacije validirane.
- **segregation of duty:** možete čuvati svoje testove u različitom repozitorijumu gde je odgovorna posebna ekipa.
- **lako za integraciju:** može se pokrenuti u vašem pipeline-u (ili u git hooks) kako bi se osiguralo da su sve implementacije validirane.
- **razdvajanje dužnosti:** možete čuvati svoje testove u drugom repozitorijumu gde je odgovorna posebna ekipa.
> [!NOTE]
> Nažalost, ako kod koristi neke provajdere kojima nemate pristup, nećete moći da izvršite `terraform plan` i pokrenete ovaj alat.
@@ -258,9 +258,9 @@ From the [**docs**](https://github.com/aquasecurity/tfsec): tfsec koristi stati
- 🔗 Evaluira odnose između Terraform resursa
- 🧰 Kompatibilan sa Terraform CDK
- 🙅 Primena (i obogaćivanje) korisnički definisanih Rego politika
- 📃 Podržava više formata izlaza: divno (podrazumevano), JSON, SARIF, CSV, CheckStyle, JUnit, tekst, Gif.
- 📃 Podržava više formata izlaza: lovely (podrazumevano), JSON, SARIF, CSV, CheckStyle, JUnit, tekst, Gif.
- 🛠️ Konfigurisanje (putem CLI zastavica i/ili konfiguracione datoteke)
- ⚡ Veoma brzo, sposobno da brzo skenira ogromne repozitorijume
- ⚡ Veoma brzo, sposobno za brzo skeniranje ogromnih repozitorijuma
```bash
brew install tfsec
tfsec /path/to/folder
@@ -275,7 +275,7 @@ docker run -t -v $(pwd):/path checkmarx/kics:latest scan -p /path -o "/path/"
```
### [Terrascan](https://github.com/tenable/terrascan)
Iz [**dokumentacije**](https://github.com/tenable/terrascan): Terrascan je statički analizator koda za infrastrukturu kao kod. Terrascan vam omogućava:
Iz [**dokumentacije**](https://github.com/tenable/terrascan): Terrascan je statički analizator koda za Infrastructure as Code. Terrascan vam omogućava:
- Besprekorno skeniranje infrastrukture kao koda za pogrešne konfiguracije.
- Praćenje obezbeđene cloud infrastrukture za promene konfiguracije koje uvode promene u posturi, i omogućava vraćanje na sigurnu posturu.