Translated ['', 'src/pentesting-cloud/azure-security/az-services/az-stor

This commit is contained in:
Translator
2026-01-18 15:04:37 +00:00
parent e339f7daee
commit e71a0fbba1
@@ -1,85 +1,100 @@
# Az - Облікові записи сховища та Blobs
# Az - Storage Accounts & Blobs
{{#include ../../../banners/hacktricks-training.md}}
## Основна інформація
## Basic Information
Azure Storage Accounts — це базові сервіси в Microsoft Azure, які забезпечують масштабоване, захищене та високо доступне хмарне **зберігання для різних типів даних**, включно з blobs (binary large objects), файли, черги та таблиці. Вони виступають контейнерами, що групують ці різні сервіси зберігання під єдиним простором імен для зручного управління.
Azure Storage Accounts — це базові сервіси в Microsoft Azure, які забезпечують масштабоване, безпечне та високо доступне хмарне **storage for various data types**, включаючи blobs (binary large objects), files, queues та tables. Вони слугують контейнерами, що групують ці різні служби зберігання під єдиним простором імен для зручного керування.
**Основні параметри конфігурації**:
**Main configuration options**:
- Кожен обліковий запис сховища повинен мати **унікальну назву в межах всього Azure**.
- Кожен обліковий запис розгортається в **регіоні** або в розширеній зоні Azure
- Можна вибрати **premium**-версію облікового запису сховища для кращої продуктивності
- Можна обрати серед **4 типів реплікації для захисту** від відмов стійки, диска та дата-центру.
- Кожен storage account має мати **uniq name across all Azure**.
- Кожен storage account деплоїться в певному **region** або в Azure extended zone.
- Можна обрати **premium** версію storage account для кращої продуктивності.
- Можна обрати серед **4 types of redundancy to protect** від rack, drive та datacenter **failures**.
**Параметри безпеки**:
**Security configuration options**:
- **Require secure transfer for REST API operations**: Вимагати TLS у будь-якому з'єднанні зі сховищем
- **Allows enabling anonymous access on individual containers**: Якщо вимкнено, у майбутньому неможливо буде увімкнути анонімний доступ
- **Enable storage account key access**: Якщо вимкнено, доступ за допомогою Shared Keys буде заборонено
- **Require secure transfer for REST API operations**: Вимагати TLS для будь-якої комунікації зі storage.
- **Allows enabling anonymous access on individual containers**: Якщо вимкнено, в майбутньому не вдасться увімкнути anonymous access.
- **Enable storage account key access**: Якщо вимкнено, доступ через Shared Keys буде заборонено.
- **Minimum TLS version**
- **Permitted scope for copy operations**: Дозволений обсяг для операцій копіювання: дозволити з будь-якого storage account, з будь-якого storage account з того самого Entra tenant або зі storage account з private endpoints в тій же virtual network.
- **Permitted scope for copy operations**: Дозволити з будь-якого storage account, з будь-якого storage account того ж Entra tenant або зі storage account з private endpoints у тій же віртуальній мережі.
**Параметри Blob Storage**:
**Blob Storage options**:
- **Allow cross-tenant replication**
- **Access tier**: Hot (часто використовувані дані), Cool і Cold (рідко використовувані дані)
- **Access tier**: Hot (часто використовувані дані), Cool та Cold (рідко використовувані дані)
**Параметри мережі**:
**Networking options**:
- **Network access**:
- Дозволити з усіх мереж
- Дозволити з вибраних virtual networks та IP-адрес
- Вимкнути публічний доступ і використовувати приватний доступ
- **Private endpoints**: Дозволяє приватне з'єднання з обліковим записом сховища з virtual network
- Allow from all networks
- Allow from selected virtual networks and IP addresses
- Disable public access and use private access
- **Private endpoints**: Дозволяє приватне підключення до storage account з virtual network
**Параметри захисту даних**:
**Data protection options**:
- **Point-in-time restore for containers**: Дозволяє відновити контейнери до попереднього стану
- Потребує увімкнення versioning, change feed та blob soft delete.
- **Enable soft delete for blobs**: Встановлює період збереження в днях для видалених blobs (навіть перезаписаних)
- **Enable soft delete for containers**: Встановлює період збереження в днях для видалених контейнерів
- **Enable soft delete for file shares**: Встановлює період збереження в днях для видалених file shares
- **Enable versioning for blobs**: Зберігати попередні версії ваших blobs
- **Enable blob change feed**: Зберігати журнали створення, модифікації та видалення змін у blobs
- **Enable version-level immutability support**: Дозволяє встановити політику збереження на рівні облікового запису, що застосовується до всіх версій blob.
- Підтримка immutability на рівні версій і point-in-time restore для контейнерів не можна увімкнути одночасно.
- **Point-in-time restore for containers**: Дозволяє відновлювати контейнери до попереднього стану
- Вимагає увімкнених versioning, change feed та blob soft delete.
- **Enable soft delete for blobs**: Увімкнення періоду зберігання в днях для видалених blob-ів (навіть перезаписаних)
- **Enable soft delete for containers**: Увімкнення періоду зберігання в днях для видалених контейнерів
- **Enable soft delete for file shares**: Увімкнення періоду зберігання в днях для видалених file shares
- **Enable versioning for blobs**: Зберігання попередніх версій ваших blob-ів
- **Enable blob change feed**: Ведення журналу створення, модифікацій та видалень blob-ів
- **Enable version-level immutability support**: Дозволяє встановити політику збереження на рівні часу для всіх версій blob-ів на рівні аккаунта.
- Version-level immutability support і point-in-time restore for containers не можуть бути увімкнені одночасно.
**Параметри шифрування**:
**Encryption configuration options**:
- **Encryption type**: Можна використовувати Microsoft-managed keys (MMK) або Customer-managed keys (CMK)
- **Enable infrastructure encryption**: Дозволяє подвійне шифрування даних "для підвищення безпеки"
- **Enable infrastructure encryption**: Дозволяє подвійно зашифрувати дані "for more security"
### Кінцеві точки сховища
### Storage endpoints
<table data-header-hidden><thead><tr><th width="197">Сервіс зберігання</th><th>Кінцева точка</th></tr></thead><tbody><tr><td><strong>Blob storage</strong></td><td><code>https://<storage-account>.blob.core.windows.net</code><br><br><code>https://<stg-acc>.blob.core.windows.net/<container-name>?restype=container&comp=list</code></td></tr><tr><td><strong>Data Lake Storage</strong></td><td><code>https://<storage-account>.dfs.core.windows.net</code></td></tr><tr><td><strong>Azure Files</strong></td><td><code>https://<storage-account>.file.core.windows.net</code></td></tr><tr><td><strong>Queue storage</strong></td><td><code>https://<storage-account>.queue.core.windows.net</code></td></tr><tr><td><strong>Table storage</strong></td><td><code>https://<storage-account>.table.core.windows.net</code></td></tr></tbody></table>
<table data-header-hidden><thead><tr><th width="197">Storage Service</th><th>Endpoint</th></tr></thead><tbody><tr><td><strong>Blob storage</strong></td><td><code>https://<storage-account>.blob.core.windows.net</code><br><br><code>https://<stg-acc>.blob.core.windows.net/<container-name>?restype=container&comp=list</code></td></tr><tr><td><strong>Data Lake Storage</strong></td><td><code>https://<storage-account>.dfs.core.windows.net</code></td></tr><tr><td><strong>Azure Files</strong></td><td><code>https://<storage-account>.file.core.windows.net</code></td></tr><tr><td><strong>Queue storage</strong></td><td><code>https://<storage-account>.queue.core.windows.net</code></td></tr><tr><td><strong>Table storage</strong></td><td><code>https://<storage-account>.table.core.windows.net</code></td></tr></tbody></table>
### Публічна доступність
### Public Exposure
Якщо "Allow Blob public access" **увімкнено** (за замовчуванням вимкнено), при створенні контейнера можливо:
Якщо "Allow Blob public access" **увімкнено** (за замовчуванням вимкнено), під час створення контейнера можна:
- Надати **публічний доступ для читання blobs** (потрібно знати ім'я).
- **Перелік blob'ів контейнера** та **читання** їх.
- Зробити його повністю **приватним**
- Надати **public access to read blobs** (потрібно знати ім'я).
- **List container blobs** та **read** їх.
- Зробити його повністю **private**
<figure><img src="https://lh7-rt.googleusercontent.com/slidesz/AGV_vUfoetUnYBPWQpRrWNnnlbqWpl8Rdoaeg5uBrCVlvcNDlnKwQHjZe8nUb2SfPspBgbu-lCZLmUei-hFi_Jl2eKbaxUtBGTjdUSDmkrcwr90VZkmuMjk9tyh92p75btfyzGiUTa0-=s2048?key=m8TV59TrCFPlkiNnmhYx3aZt" alt=""><figcaption></figcaption></figure>
#### Аудит анонімного доступу до blob
### Static website (`$web`) exposure & leaked secrets
- **Знайти storage accounts**, які можуть розкривати дані: `az storage account list | jq -r '.[] | select(.properties.allowBlobPublicAccess==true) | .name'`. Якщо `allowBlobPublicAccess` є `false`, ви не зможете увімкнути публічний доступ для контейнерів.
- **Перевірити ризикові облікові записи**, щоб підтвердити прапорець та інші слабкі налаштування: `az storage account show --name <acc> --query '{allow:properties.allowBlobPublicAccess, minTls:properties.minimumTlsVersion}'`.
- **Перелічити експозицію на рівні контейнерів** там, де прапорець увімкнено:
- **Static websites** are served from the special `$web` container over a region-specific endpoint such as `https://<account>.z13.web.core.windows.net/`.
- The `$web` container may report `publicAccess: null` via the blob API, but files are still reachable through the static site endpoint, so dropping config/IaC artifacts there can leak secrets.
- Quick audit workflow:
```bash
# Identify storage accounts with static website hosting enabled
az storage blob service-properties show --account-name <acc-name> --auth-mode login
# Enumerate containers (including $web) and their public flags
az storage container list --account-name <acc-name> --auth-mode login
# List files served by the static site even when publicAccess is null
az storage blob list --container-name '$web' --account-name <acc-name> --auth-mode login
# Pull suspicious files directly (e.g., IaC tfvars containing secrets/SAS)
az storage blob download -c '$web' --name iac/terraform.tfvars --file /dev/stdout --account-name <acc-name> --auth-mode login
```
### Аудит анонімного доступу до blob
- **Знайдіть storage accounts**, які можуть відкривати дані: `az storage account list | jq -r '.[] | select(.properties.allowBlobPublicAccess==true) | .name'`. Якщо `allowBlobPublicAccess` має значення `false`, ви не зможете зробити контейнери публічними.
- **Перевірте ризикові облікові записи**, щоб підтвердити прапорець і інші слабкі налаштування: `az storage account show --name <acc> --query '{allow:properties.allowBlobPublicAccess, minTls:properties.minimumTlsVersion}'`.
- **Перелічіть публічний доступ на рівні контейнера** там, де прапорець увімкнено:
```bash
az storage container list --account-name <acc> \
--query '[].{name:name, access:properties.publicAccess}'
```
- `"Blob"`: дозволено анонімне читання **лише коли ім'я blob відоме** (без листингу).
- `"Container"`: анонімний **листинг + читання** кожного blob.
- `"Blob"`: дозволено анонімне читання **лише коли відоме ім'я blob** (без переліку).
- `"Container"`: анонімний **перелік + читання** кожного blob.
- `null`: приватний; потрібна автентифікація.
- **Підтвердити доступ** без облікових даних:
- Якщо `publicAccess` встановлено в `Container`, анонімний листинг працює: `curl "https://<acc>.blob.core.windows.net/<container>?restype=container&comp=list"`.
- Для обох `Blob` та `Container`, анонімне завантаження blob працює, коли ім'я відоме:
- **Доведіть доступ** без облікових даних:
- Якщо `publicAccess` `Container`, анонімне перелічення працює: `curl "https://<acc>.blob.core.windows.net/<container>?restype=container&comp=list"`.
- Для обох `Blob` і `Container`, анонімне завантаження blob працює, коли ім'я відоме:
```bash
az storage blob download -c <container> -n <blob> --account-name <acc> --file /dev/stdout
# or via raw HTTP
@@ -87,31 +102,31 @@ curl "https://<acc>.blob.core.windows.net/<container>/<blob>"
```
### Підключення до сховища
Якщо ви знайдете будь-яке **сховище**, до якого можна підключитися, ви можете використовувати інструмент [**Microsoft Azure Storage Explorer**](https://azure.microsoft.com/es-es/products/storage/storage-explorer/) для цього.
Якщо ви знайдете будь-яке **сховище**, до якого можна підключитися, ви можете скористатися інструментом [**Microsoft Azure Storage Explorer**](https://azure.microsoft.com/es-es/products/storage/storage-explorer/) для цього.
## Доступ до сховища <a href="#about-blob-storage" id="about-blob-storage"></a>
### RBAC
Можна використовувати принципали Entra ID з **RBAC roles** для доступу до облікових записів сховища, і це рекомендований підхід.
Можна використовувати суб'єкти Entra ID з ролями **RBAC** для доступу до облікових записів сховища це рекомендований спосіб.
### Ключі доступу
Облікові записи сховища мають ключі доступу, за допомогою яких можна отримати доступ. Це надає **повний доступ до облікового запису сховища.**
Облікові записи сховища мають ключі доступу, які можна використовувати для доступу до них. Це надає **повний доступ до облікового запису сховища.**
<figure><img src="../../../images/image (5).png" alt=""><figcaption></figcaption></figure>
### **Shared Keys & Lite Shared Keys**
Можна [**generate Shared Keys**](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key) підписані ключами доступу для авторизації доступу до певних ресурсів через підписане URL.
It's possible to [**generate Shared Keys**](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key) signed with the access keys to authorize access to certain resources via a signed URL.
> [!NOTE]
> Зверніть увагу, що частина `CanonicalizedResource` представляє ресурс служби сховища (URI). І якщо будь-яка частина в URL закодована, вона також має бути закодована всередині `CanonicalizedResource`.
> [!NOTE]
> За замовчуванням для автентифікації запитів **використовується `az` cli**. Щоб змусити його використовувати облікові дані принципала Entra ID, вкажіть параметр `--auth-mode login`.
> За замовчуванням для автентифікації запитів **використовується `az` cli**. Щоб змусити його використовувати облікові дані суб'єкта Entra ID, вкажіть параметр `--auth-mode login`.
- Можна згенерувати **shared key для служб blob, queue та file**, підписавши таку інформацію:
- Можна згенерувати **shared key for blob, queue and file services** шляхом підпису наступної інформації:
```bash
StringToSign = VERB + "\n" +
Content-Encoding + "\n" +
@@ -136,7 +151,7 @@ Content-Type + "\n" +
Date + "\n" +
CanonicalizedResource;
```
- Можна згенерувати **lite shared key for blob, queue and file services** підписавши наступну інформацію:
- Можна згенерувати **lite shared key for blob, queue and file services**, підписавши наступну інформацію:
```bash
StringToSign = VERB + "\n" +
Content-MD5 + "\n" +
@@ -145,12 +160,12 @@ Date + "\n" +
CanonicalizedHeaders +
CanonicalizedResource;
```
- Можна згенерувати **lite shared key for table services**, підписавши таку інформацію:
- Можна згенерувати **lite shared key for table services** підписавши наступну інформацію:
```bash
StringToSign = Date + "\n"
CanonicalizedResource
```
Тоді, щоб використати ключ, його можна передати в заголовку Authorization за таким синтаксисом:
Тоді, щоб використати ключ, це можна зробити в заголовку Authorization, використовуючи синтаксис:
```bash
Authorization="[SharedKey|SharedKeyLite] <AccountName>:<Signature>"
#e.g.
@@ -162,78 +177,78 @@ x-ms-date: Fri, 26 Jun 2015 23:39:12 GMT
Authorization: SharedKey myaccount:ctzMq410TV3wS7upTBcunJTDLEJwMAZuFPfr0mrrA08=
Content-Length: 0
```
### **Підпис для спільного доступу** (SAS)
### **Shared Access Signature** (SAS)
Shared Access Signatures (SAS) — це безпечні, обмежені в часі URL, які надають конкретні дозволи на доступ до ресурсів в Azure Storage account без розкриття ключів доступу облікового запису. У той час як access keys дають повний адміністративний доступ до всіх ресурсів, SAS дозволяє тонко керувати доступом, вказуючи дозволи (наприклад read або write) та визначаючи час закінчення дії.
Shared Access Signatures (SAS) — це безпечні URL з обмеженим терміном дії, які **grant specific permissions to access resource**s в обліковому записі Azure Storage і дозволяють отримати доступ до ресурсів без розкриття ключів доступу облікового запису. У той час як access keys дають повний адміністративний доступ до всіх ресурсів, SAS дозволяє здійснювати тонке управління доступом, вказуючи дозволи (наприклад, read або write) і визначаючи час закінчення дії.
#### SAS Types
- **User delegation SAS**: Створюється від імені **Entra ID principal**, який підписує SAS і делегує дозволи від користувача до SAS. Може використовуватись лише з **blob and data lake storage** ([docs](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas)). Можна **revoke** всі згенеровані user delegated SAS.
- Навіть якщо можливо згенерувати delegation SAS з "більшими" дозволами, ніж має користувач, якщо принципал їх не має, це не спрацює (немає privesc).
- **Service SAS**: Підписується за допомогою одного з access keys облікового запису storage. Може надавати доступ до конкретних ресурсів в межах однієї storage service. Якщо ключ буде оновлено, SAS перестане працювати.
- **Account SAS**: Також підписується одним з access keys облікового запису storage. Надає доступ до ресурсів по всіх сервісах storage account (Blob, Queue, Table, File) і може включати операції на рівні сервісу.
- **User delegation SAS**: Створюється від імені **Entra ID principal**, який підписує SAS і делегує дозволи від користувача до SAS. Може використовуватися лише з **blob and data lake storage** ([docs](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas)). Можна **revoke** всі згенеровані user delegated SAS.
- Навіть якщо можливо згенерувати delegation SAS з "більшими" дозволами, ніж має користувач, якщо у принципала їх немає це не спрацює (no privesc).
- **Service SAS**: Підписується за допомогою одного з access keys облікового запису storage. Може давати доступ до конкретних ресурсів в межах одного сервісу storage. Якщо ключ буде оновлено, SAS перестане працювати.
- **Account SAS**: Теж підписується одним з access keys облікового запису. Надає доступ до ресурсів у межах сервісів облікового запису (Blob, Queue, Table, File) і може включати операції на рівні сервісу.
SAS URL, підписаний за допомогою **access key**, виглядає так:
A SAS URL signed by an **access key** looks like this:
- `https://<container_name>.blob.core.windows.net/newcontainer?sp=r&st=2021-09-26T18:15:21Z&se=2021-10-27T02:14:21Z&spr=https&sv=2021-07-08&sr=c&sig=7S%2BZySOgy4aA3Dk0V1cJyTSIf1cW%2Fu3WFkhHV32%2B4PE%3D`
SAS URL, підписаний як **user delegation**, виглядає так:
A SAS URL signed as a **user delegation** looks like this:
- `https://<container_name>.blob.core.windows.net/testing-container?sp=r&st=2024-11-22T15:07:40Z&se=2024-11-22T23:07:40Z&skoid=d77c71a1-96e7-483d-bd51-bd753aa66e62&sktid=fdd066e1-ee37-49bc-b08f-d0e152119b04&skt=2024-11-22T15:07:40Z&ske=2024-11-22T23:07:40Z&sks=b&skv=2022-11-02&spr=https&sv=2022-11-02&sr=c&sig=7s5dJyeE6klUNRulUj9TNL0tMj2K7mtxyRc97xbYDqs%3D`
Зверніть увагу на деякі **http params**:
Note some **http params**:
- Параметр **`se`** вказує **дату закінчення дії** SAS
- Параметр **`sp`** вказує **дозволи** SAS
- **`sig`** — це **підпис**, що валідовує SAS
- The **`se`** param indicates the **expiration date** of the SAS
- The **`sp`** param indicates the **permissions** of the SAS
- The **`sig`** is the **signature** validating the SAS
#### SAS permissions
При генерації SAS потрібно вказати дозволи, які він має надавати. Залежно від об'єкта, для якого створюється SAS, можуть включатися різні дозволи. Наприклад:
При генерації SAS потрібно вказати дозволи, які він повинен надавати. В залежності від об'єкта, для якого створюється SAS, можуть бути включені різні дозволи. Наприклад:
- (a)dd, (c)reate, (d)elete, (e)xecute, (f)ilter_by_tags, (i)set_immutability_policy, (l)ist, (m)ove, (r)ead, (t)ag, (w)rite, (x)delete_previous_version, (y)permanent_delete
## SFTP Support for Azure Blob Storage
Azure Blob Storage тепер підтримує SSH File Transfer Protocol (SFTP), що дозволяє безпечно передавати файли та керувати ними безпосередньо в Blob Storage без необхідності кастомних рішень або сторонніх продуктів.
Azure Blob Storage тепер підтримує SSH File Transfer Protocol (SFTP), що дозволяє безпечно передавати файли і керувати ними безпосередньо в Blob Storage без потреби у кастомних рішеннях або продуктах сторонніх розробників.
### Key Features
- Protocol Support: SFTP працює з Blob Storage accounts, сконфігурованими з hierarchical namespace (HNS). Це організовує blobs у директорії та піддиректорії для зручнішої навігації.
- Security: SFTP використовує локальні user identities для аутентифікації і не інтегрується з RBAC або ABAC. Кожен локальний user може аутентифікуватись через:
- Azure-generated passwords
- Public-private SSH key pairs
- Granular Permissions: Дозволи такі як Read, Write, Delete та List можуть бути призначені локальним users для до 100 containers.
- Networking Considerations: SFTP-з'єднання здійснюються через порт 22. Azure підтримує мережеві конфігурації, як-от firewalls, private endpoints або virtual networks для захисту SFTP-трафіку.
- Protocol Support: SFTP працює з Blob Storage accounts, налаштованими з hierarchical namespace (HNS). Це організовує blobs у директорії та піддиректорії для зручнішої навігації.
- Security: SFTP використовує локальні користувацькі облікові записи для автентифікації і не інтегрується з RBAC або ABAC. Кожен локальний користувач може автентифікуватися за допомогою:
- Azure-generated passwords
- Public-private SSH key pairs
- Granular Permissions: Такі дозволи, як Read, Write, Delete і List, можна призначати локальним користувачам для максимум 100 контейнерів.
- Networking Considerations: SFTP-з'єднання відбуваються через порт 22. Azure підтримує мережеві конфігурації такі як firewalls, private endpoints або virtual networks для захисту трафіку SFTP.
### Setup Requirements
- Hierarchical Namespace: HNS має бути увімкнено при створенні storage account.
- Supported Encryption: Потребує криптографічних алгоритмів, схвалених Microsoft Security Development Lifecycle (SDL) (наприклад rsa-sha2-256, ecdsa-sha2-nistp256).
- Hierarchical Namespace: HNS має бути ввімкнено під час створення storage account.
- Supported Encryption: Потрібні криптографічні алгоритми, затверджені Microsoft SDL (наприклад, rsa-sha2-256, ecdsa-sha2-nistp256).
- SFTP Configuration:
- Увімкніть SFTP на storage account.
- Створіть локальні user identities з відповідними дозволами.
- Налаштуйте home directories для user, щоб визначити їх початкове розташування в контейнері.
- Enable SFTP on the storage account.
- Create local user identities with appropriate permissions.
- Configure home directories for users to define their starting location within the container.
### Permissions
| Permission | Symbol | Description |
| ---------------------- | ------ | ------------------------------------ |
| **Read** | `r` | Читання вмісту файлу. |
| **Write** | `w` | Завантаження файлів та створення директорій. |
| **List** | `l` | Перелік вмісту директорій. |
| **Delete** | `d` | Видалення файлів або директорій. |
| **Create** | `c` | Створення файлів або директорій. |
| **Modify Ownership** | `o` | Зміна власника або групи. |
| **Modify Permissions** | `p` | Зміна ACLs на файлах або директоріях. |
| **Read** | `r` | Читати вміст файлу. |
| **Write** | `w` | Завантажувати файли та створювати директорії. |
| **List** | `l` | Перелічувати вміст директорій. |
| **Delete** | `d` | Видаляти файли або директорії. |
| **Create** | `c` | Створювати файли або директорії. |
| **Modify Ownership** | `o` | Змінювати власника користувача або групи. |
| **Modify Permissions** | `p` | Змінювати ACL на файлах або директоріях. |
## Перерахування
## Enumeration
{{#tabs }}
{{#tab name="az cli" }}
<details>
<summary>az cli enumeration</summary>
<summary>az cli перерахування</summary>
```bash
# Get storage accounts
az storage account list #Get the account name from here
@@ -357,7 +372,7 @@ az storage account local-user list \
{{#tab name="Az PowerShell" }}
<details>
<summary>Az PowerShell enumeration</summary>
<summary>Az PowerShell перерахування</summary>
```powershell
# Get storage accounts
Get-AzStorageAccount | fl
@@ -420,25 +435,25 @@ New-AzStorageBlobSASToken `
{{#endtab }}
{{#endtabs }}
### File Shares
### Файлові ресурси
{{#ref}}
az-file-shares.md
{{#endref}}
## Privilege Escalation
## Підвищення привілеїв
{{#ref}}
../az-privilege-escalation/az-storage-privesc.md
{{#endref}}
## Post Exploitation
## Пост-експлуатація
{{#ref}}
../az-post-exploitation/az-blob-storage-post-exploitation.md
{{#endref}}
## Persistence
## Персистентність
{{#ref}}
../az-persistence/az-storage-persistence.md
@@ -449,6 +464,7 @@ az-file-shares.md
- [https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction](https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction)
- [https://learn.microsoft.com/en-us/azure/storage/common/storage-sas-overview](https://learn.microsoft.com/en-us/azure/storage/common/storage-sas-overview)
- [https://learn.microsoft.com/en-us/azure/storage/blobs/secure-file-transfer-protocol-support](https://learn.microsoft.com/en-us/azure/storage/blobs/secure-file-transfer-protocol-support)
- [Holiday Hack Challenge 2025 Spare Key (Azure static website SAS leak)](https://0xdf.gitlab.io/holidayhack2025/act1/spare-key)
- [Holiday Hack Challenge 2025: Blob Storage (Storage Secrets)](https://0xdf.gitlab.io/holidayhack2025/act1/blob-storage)
- [https://learn.microsoft.com/en-us/cli/azure/storage/account](https://learn.microsoft.com/en-us/cli/azure/storage/account)
- [https://learn.microsoft.com/en-us/cli/azure/storage/container](https://learn.microsoft.com/en-us/cli/azure/storage/container)