diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md index 263903c39..13acd21aa 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md @@ -67,7 +67,7 @@ aws codebuild start-build-batch --project --buildspec-override fi ### `iam:PassRole`, `codebuild:CreateProject`, (`codebuild:StartBuild` | `codebuild:StartBuildBatch`) -Зловмисник з правами **`iam:PassRole`, `codebuild:CreateProject` та `codebuild:StartBuild` або `codebuild:StartBuildBatch`** зможе **підвищити привілеї до будь-якої ролі IAM Codebuild**, створивши працюючу. +Зловмисник з правами **`iam:PassRole`, `codebuild:CreateProject` та `codebuild:StartBuild` або `codebuild:StartBuildBatch`** зможе **підвищити привілеї до будь-якої ролі IAM codebuild**, створивши працюючу. {{#tabs }} {{#tab name="Example1" }} @@ -302,7 +302,7 @@ aws codebuild start-build-batch --project-name codebuild-demo-project ### SSM -Маючи **достатньо прав для запуску сесії ssm**, можна **потрапити всередину проекту Codebuild**, що будується. +Маючи **достатньо прав для запуску сесії ssm**, можна потрапити **в проект Codebuild**, що будується. Проект codebuild повинен мати точку зупинки: diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecs-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecs-privesc.md index c00076b16..f1c77917c 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecs-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecs-privesc.md @@ -79,8 +79,8 @@ aws ecs deregister-task-definition --task-definition iam_exfiltration:1 ### `iam:PassRole`, `ecs:RegisterTaskDefinition`, `ecs:StartTask` -Так само, як у попередньому прикладі, зловмисник, який зловживає дозволами **`iam:PassRole`, `ecs:RegisterTaskDefinition`, `ecs:StartTask`** в ECS, може **створити нову задачу** з **шкідливим контейнером**, який краде облікові дані метаданих і **запустити його**.\ -Однак у цьому випадку потрібно, щоб був контейнерний екземпляр для запуску шкідливої задачі. +Так само, як у попередньому прикладі, зловмисник, який зловживає дозволами **`iam:PassRole`, `ecs:RegisterTaskDefinition`, `ecs:StartTask`** в ECS, може **створити нове визначення завдання** з **шкідливим контейнером**, який краде облікові дані метаданих і **запустити його**.\ +Однак у цьому випадку потрібно, щоб контейнерна інстанція запустила шкідливе визначення завдання. ```bash # Generate task definition with rev shell aws ecs register-task-definition --family iam_exfiltration \ @@ -100,7 +100,7 @@ aws ecs deregister-task-definition --task-definition iam_exfiltration:1 ### `iam:PassRole`, `ecs:RegisterTaskDefinition`, (`ecs:UpdateService|ecs:CreateService)` -Так само, як у попередньому прикладі, зловмисник, який зловживає дозволами **`iam:PassRole`, `ecs:RegisterTaskDefinition`, `ecs:UpdateService`** або **`ecs:CreateService`** в ECS, може **згенерувати нове визначення завдання** з **шкідливим контейнером**, який краде облікові дані метаданих, і **запустити його, створивши нову службу з принаймні 1 завданням, що виконується.** +Так само, як у попередньому прикладі, зловмисник, який зловживає дозволами **`iam:PassRole`, `ecs:RegisterTaskDefinition`, `ecs:UpdateService`** або **`ecs:CreateService`** в ECS, може **створити нову задачу** з **шкідливим контейнером**, який краде облікові дані метаданих, і **запустити її, створивши нову службу з принаймні 1 запущеною задачею.** ```bash # Generate task definition with rev shell aws ecs register-task-definition --family iam_exfiltration \ @@ -141,10 +141,10 @@ aws ecs run-task \ Цей сценарій схожий на попередні, але **без** дозволу **`iam:PassRole`**.\ Це все ще цікаво, оскільки, якщо ви можете запустити довільний контейнер, навіть якщо він без ролі, ви могли б **запустити привілейований контейнер, щоб втекти** на вузол і **вкрасти роль EC2 IAM** та **інші ролі контейнерів ECS**, що працюють на вузлі.\ -Ви навіть могли б **примусити інші завдання працювати всередині EC2 екземпляра**, який ви скомпрометували, щоб вкрасти їхні облікові дані (як обговорюється в [**Розділі підвищення привілеїв до вузла**](aws-ecs-privesc.md#privesc-to-node)). +Ви навіть могли б **примусити інші завдання працювати всередині EC2 інстансу**, який ви скомпрометували, щоб вкрасти їхні облікові дані (як обговорювалося в [**Розділі підвищення привілеїв до вузла**](aws-ecs-privesc.md#privesc-to-node)). > [!WARNING] -> Цей напад можливий лише якщо **ECS кластер використовує EC2** екземпляри, а не Fargate. +> Цей напад можливий лише якщо **ECS кластер використовує EC2** інстанси, а не Fargate. ```bash printf '[ { @@ -187,8 +187,8 @@ aws ecs run-task --task-definition iam_exfiltration \ ``` ### `ecs:ExecuteCommand`, `ecs:DescribeTasks,`**`(ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)`** -Зловмисник з **`ecs:ExecuteCommand`, `ecs:DescribeTasks`** може **виконувати команди** всередині запущеного контейнера та ексфільтрувати IAM роль, що до нього прикріплена (вам потрібні права опису, оскільки це необхідно для виконання `aws ecs execute-command`).\ -Однак, для цього екземпляр контейнера повинен працювати з **агентом ExecuteCommand** (який за замовчуванням не працює). +Зловмисник з **`ecs:ExecuteCommand`, `ecs:DescribeTasks`** може **виконувати команди** всередині запущеного контейнера та ексфільтрувати IAM роль, що до нього прикріплена (вам потрібні дозволи на опис, оскільки це необхідно для виконання `aws ecs execute-command`).\ +Однак, для цього екземпляр контейнера повинен працювати з **агентом ExecuteCommand** (який за замовчуванням не активований). Отже, зловмисник може спробувати: diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sns-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sns-privesc.md index ff0f6e0c3..89ea993f6 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sns-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sns-privesc.md @@ -20,7 +20,7 @@ aws sns publish --topic-arn --message ### `sns:Subscribe` -Зловмисник може підписатися на тему SNS, потенційно отримуючи несанкціонований доступ до повідомлень або порушуючи нормальне функціонування додатків, які покладаються на цю тему. +Зловмисник може підписатися на тему SNS, потенційно отримуючи несанкціонований доступ до повідомлень або порушуючи нормальне функціонування додатків, що покладаються на цю тему. ```bash aws sns subscribe --topic-arn --protocol --endpoint ``` diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc.md index 240a49012..de05bf839 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc.md @@ -4,7 +4,7 @@ ## Step Functions -Для отримання додаткової інформації про цей сервіс AWS, перегляньте: +Для отримання додаткової інформації про цю службу AWS, перевірте: {{#ref}} ../aws-services/aws-stepfunctions-enum.md @@ -25,7 +25,7 @@ ### `states:TestState` & `iam:PassRole` -Зловмисник з дозволами **`states:TestState`** та **`iam:PassRole`** може тестувати будь-який стан і передавати будь-яку IAM роль без створення або оновлення існуючої машини станів, що потенційно дозволяє несанкціонований доступ до інших сервісів AWS з дозволами ролі. У поєднанні ці дозволи можуть призвести до широкомасштабних несанкціонованих дій, від маніпуляцій з робочими процесами для зміни даних до витоків даних, маніпуляцій з ресурсами та підвищення привілеїв. +Зловмисник з дозволами **`states:TestState`** та **`iam:PassRole`** може тестувати будь-який стан і передавати будь-яку роль IAM без створення або оновлення існуючої машини станів, що потенційно дозволяє несанкціонований доступ до інших служб AWS з дозволами ролі. У поєднанні ці дозволи можуть призвести до широкомасштабних несанкціонованих дій, від маніпуляцій з робочими процесами для зміни даних до витоків даних, маніпуляцій з ресурсами та підвищення привілеїв. ```bash aws states test-state --definition --role-arn [--input ] [--inspection-level ] [--reveal-secrets | --no-reveal-secrets] ``` @@ -63,7 +63,7 @@ aws stepfunctions test-state --definition file://stateDefinition.json --role-arn ### `states:CreateStateMachine` & `iam:PassRole` & (`states:StartExecution` | `states:StartSyncExecution`) -Зловмисник з **`states:CreateStateMachine`**& **`iam:PassRole`** зможе створити машину станів і надати їй будь-яку IAM роль, що дозволить несанкціонований доступ до інших сервісів AWS з дозволами ролі. На відміну від попередньої техніки підвищення привілеїв (**`states:TestState`** & **`iam:PassRole`**), ця не виконується сама по собі, вам також потрібно мати дозволи **`states:StartExecution`** або **`states:StartSyncExecution`** (**`states:StartSyncExecution`** **не доступний для стандартних робочих процесів**, **тільки для виразних машин станів**) для того, щоб розпочати виконання над машиною станів. +Зловмисник з **`states:CreateStateMachine`**& **`iam:PassRole`** зможе створити машину станів і надати їй будь-яку IAM роль, що дозволить несанкціонований доступ до інших сервісів AWS з дозволами цієї ролі. На відміну від попередньої техніки підвищення привілеїв (**`states:TestState`** & **`iam:PassRole`**), ця не виконується сама по собі, вам також потрібно мати дозволи **`states:StartExecution`** або **`states:StartSyncExecution`** (**`states:StartSyncExecution`** **не доступний для стандартних робочих процесів**, **тільки для виразних машин станів**) для того, щоб розпочати виконання над машиною станів. ```bash # Create a state machine aws states create-state-machine --name --definition --role-arn [--type ] [--logging-configuration ]\ @@ -143,7 +143,7 @@ aws stepfunctions start-execution --state-machine-arn arn:aws:states:us-east-1:1 Залежно від того, наскільки дозволяючим є IAM роль, асоційована зі станом машини, атакуючий зіткнеться з 2 ситуаціями: 1. **Дозволяюча IAM роль**: Якщо IAM роль, асоційована зі станом машини, вже є дозволяючою (вона має, наприклад, прикріплену політику **`arn:aws:iam::aws:policy/AdministratorAccess`**), тоді дозвіл **`iam:PassRole`** не буде необхідним для ескалації привілеїв, оскільки не буде необхідності також оновлювати IAM роль, з визначенням стану машини буде достатньо. -2. **Недозволяюча IAM роль**: На відміну від попереднього випадку, тут атакуючий також вимагатиме дозвіл **`iam:PassRole`**, оскільки буде необхідно асоціювати дозволяючу IAM роль зі станом машини на додаток до зміни визначення стану машини. +2. **Недозволяюча IAM роль**: На відміну від попереднього випадку, тут атакуючий також вимагатиме дозвіл **`iam:PassRole`**, оскільки буде необхідно асоціювати дозволяючу IAM роль зі станом машини, крім зміни визначення стану машини. ```bash aws states update-state-machine --state-machine-arn [--definition ] [--role-arn ] [--logging-configuration ] \ [--tracing-configuration ] [--publish | --no-publish] [--version-description ] diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md index 1d612517d..75bc6060f 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md @@ -8,7 +8,7 @@ Компанії можуть мати **неправильно налаштовані дозволи бакетів**, що надає доступ або до всього, або до всіх, хто автентифікований в AWS в будь-якому обліковому записі (тобто до будь-кого). Зверніть увагу, що навіть з такими неправильними налаштуваннями деякі дії можуть не бути виконані, оскільки бакети можуть мати свої власні списки контролю доступу (ACL). -**Дізнайтеся про неправильне налаштування AWS-S3 тут:** [**http://flaws.cloud**](http://flaws.cloud/) **і** [**http://flaws2.cloud/**](http://flaws2.cloud) +**Дізнайтеся про неправильні налаштування AWS-S3 тут:** [**http://flaws.cloud**](http://flaws.cloud/) **та** [**http://flaws2.cloud/**](http://flaws2.cloud) ### Пошук AWS Бакетів @@ -28,17 +28,17 @@ http://[bucket_name].s3.amazonaws.com/ - Перевірте **CNAMES**, оскільки `resources.domain.com` може мати CNAME `bucket.s3.amazonaws.com` - **[s3dns](https://github.com/olizimmermann/s3dns)** – легкий DNS-сервер, який пасивно ідентифікує бакети хмарного зберігання (S3, GCP, Azure), аналізуючи DNS-трафік. Він виявляє CNAME, слідкує за ланцюгами розв'язання та співвідносить шаблони бакетів, пропонуючи тиху альтернативу брутфорсу або відкриттю через API. Ідеально підходить для розвідки та OSINT-робочих процесів. - Перевірте [https://buckets.grayhatwarfare.com](https://buckets.grayhatwarfare.com/), веб-сайт з уже **виявленими відкритими бакетами**. -- **Назва бакета** та **доменна назва бакета** повинні бути **однаковими.** -- **flaws.cloud** знаходиться в **IP** 52.92.181.107, і якщо ви туди перейдете, він перенаправить вас на [https://aws.amazon.com/s3/](https://aws.amazon.com/s3/). Також, `dig -x 52.92.181.107` дає `s3-website-us-west-2.amazonaws.com`. +- **Ім'я бакета** та **доменне ім'я бакета** повинні бути **однаковими.** +- **flaws.cloud** знаходиться за **IP** 52.92.181.107, і якщо ви туди перейдете, він перенаправить вас на [https://aws.amazon.com/s3/](https://aws.amazon.com/s3/). Також, `dig -x 52.92.181.107` дає `s3-website-us-west-2.amazonaws.com`. - Щоб перевірити, чи це бакет, ви також можете **відвідати** [https://flaws.cloud.s3.amazonaws.com/](https://flaws.cloud.s3.amazonaws.com/). #### Брутфорс -Ви можете знайти бакети, **брутфорсуючи назви**, пов'язані з компанією, яку ви тестуєте: +Ви можете знайти бакети, **брутфорсуючи імена**, пов'язані з компанією, яку ви тестуєте: - [https://github.com/sa7mon/S3Scanner](https://github.com/sa7mon/S3Scanner) - [https://github.com/clario-tech/s3-inspector](https://github.com/clario-tech/s3-inspector) -- [https://github.com/jordanpotti/AWSBucketDump](https://github.com/jordanpotti/AWSBucketDump) (містить список потенційних назв бакетів) +- [https://github.com/jordanpotti/AWSBucketDump](https://github.com/jordanpotti/AWSBucketDump) (містить список потенційних імен бакетів) - [https://github.com/fellchase/flumberboozle/tree/master/flumberbuckets](https://github.com/fellchase/flumberboozle/tree/master/flumberbuckets) - [https://github.com/smaranchand/bucky](https://github.com/smaranchand/bucky) - [https://github.com/tomdev/teh_s3_bucketeers](https://github.com/tomdev/teh_s3_bucketeers) @@ -96,21 +96,21 @@ nslookup 52.218.192.11 Non-authoritative answer: 11.192.218.52.in-addr.arpa name = s3-website-us-west-2.amazonaws.com. ``` -Перевірте, що в розв'язаному домені є слово "website".\ +Перевірте, чи має розв'язане доменне ім'я слово "website".\ Ви можете отримати доступ до статичного веб-сайту, перейшовши за адресою: `flaws.cloud.s3-website-us-west-2.amazonaws.com`\ або ви можете отримати доступ до бакету, відвідавши: `flaws.cloud.s3-us-west-2.amazonaws.com` -#### Спробувавши +#### Спробуючи -Якщо ви намагаєтеся отримати доступ до бакету, але в **імені домену вказуєте інший регіон** (наприклад, бакет знаходиться в `bucket.s3.amazonaws.com`, але ви намагаєтеся отримати доступ до `bucket.s3-website-us-west-2.amazonaws.com`, тоді вам буде **вказано на правильне місце**: +Якщо ви намагаєтеся отримати доступ до бакету, але в **доменному імені вказуєте інший регіон** (наприклад, бакет знаходиться в `bucket.s3.amazonaws.com`, але ви намагаєтеся отримати доступ до `bucket.s3-website-us-west-2.amazonaws.com`, тоді вам буде **вказано на правильне місце**: ![](<../../../images/image (106).png>) ### Перерахування бакету -Щоб перевірити відкритість бакету, користувач може просто ввести URL у своєму веб-браузері. Приватний бакет відповість "Доступ заборонено". Публічний бакет відобразить перші 1,000 об'єктів, які були збережені. +Щоб перевірити відкритість бакету, користувач може просто ввести URL у свій веб-браузер. Приватний бакет відповість "Доступ заборонено". Публічний бакет відобразить перші 1,000 об'єктів, які були збережені. Відкрито для всіх: @@ -128,15 +128,15 @@ Non-authoritative answer: #Opcionally you can select the region if you now it aws s3 ls s3://flaws.cloud/ [--no-sign-request] [--profile ] [ --recursive] [--region us-west-2] ``` -Якщо бакет не має доменного імені, при спробі його перерахувати, **вкажіть лише ім'я бакета** і не вводьте ціле доменне ім'я AWSs3. Приклад: `s3://` +Якщо у бакета немає доменного імені, при спробі його перерахувати, **вкажіть лише ім'я бакета** і не вводьте ціле доменне ім'я AWSs3. Приклад: `s3://` ### Шаблон публічного URL ``` https://{user_provided}.s3.amazonaws.com ``` -### Отримання ID облікового запису з публічного бакету +### Отримати ID облікового запису з публічного бакету -Можливо визначити обліковий запис AWS, скориставшись новим **`S3:ResourceAccount`** **ключем умови політики**. Ця умова **обмежує доступ на основі S3 бакету**, в якому знаходиться обліковий запис (інші політики, що базуються на облікових записах, обмежують доступ на основі облікового запису, в якому знаходиться запитуючий суб'єкт).\ +Можливо визначити обліковий запис AWS, скориставшись новим **`S3:ResourceAccount`** **ключем умови політики**. Ця умова **обмежує доступ на основі S3 бакету**, в якому знаходиться обліковий запис (інші політики на основі облікового запису обмежують доступ на основі облікового запису, в якому знаходиться запитуючий суб'єкт).\ І оскільки політика може містити **шаблони**, можливо знайти номер облікового запису **лише по одному числу за раз**. Цей інструмент автоматизує процес: @@ -161,7 +161,7 @@ curl -X GET "[bucketname].amazonaws.com/" \ ... ``` -Якщо помилка є "Доступ заборонено", це означає, що ідентифікатор облікового запису був неправильним. +Якщо помилка - це "Доступ заборонено", це означає, що ідентифікатор облікового запису був неправильним. ### Використані електронні адреси для перерахунку кореневих облікових записів