Az - Blob Storage

Support HackTricks

Основна інформація

З документації: Azure Blob storage - це об'єктне сховище Microsoft для хмари. Blob storage оптимізовано для зберігання величезних обсягів неструктурованих даних. Неструктуровані дані - це дані, які не відповідають певній моделі або визначенню даних, такі як текст або бінарні дані.

Blob storage пропонує три типи ресурсів:

  • обліковий запис зберігання (унікальна назва)

  • контейнер в обліковому записі зберігання (папка)

  • blob в контейнері

Різні типи зберігання

Blob storage

https://<storage-account>.blob.core.windows.net https://<stg-acc>.blob.core.windows.net/<container-name>?restype=container&comp=list

Azure Data Lake Storage Gen2

https://<storage-account>.dfs.core.windows.net

Azure Files

https://<storage-account>.file.core.windows.net

Queue storage

https://<storage-account>.queue.core.windows.net

Table storage

https://<storage-account>.table.core.windows.net

Доступ до зберігання

  • Використовуйте принципи Azure AD через ролі RBAC.

  • Ключі доступу: Використовуйте ключі доступу облікового запису зберігання. Це забезпечує повний доступ до облікового запису зберігання.

  • Спільний доступ до підпису (SAS): Обмежений за часом та специфічні дозволи.

  • Ви можете згенерувати URL SAS з ключем доступу (складніше для виявлення).

  • Оскільки SAS генерується з ключа доступу, якщо він буде оновлений, SAS перестане працювати.

Публічне відкриття

Якщо "Дозволити публічний доступ до blob" увімкнено (за замовчуванням вимкнено), можливо:

  • Надати публічний доступ для читання blob (необхідно знати назву).

  • Переглядати blob контейнера та читати їх.

Підключення до зберігання

Якщо ви знайдете будь-яке сховище, до якого можете підключитися, ви можете використовувати інструмент Microsoft Azure Storage Explorer для цього.

URL SAS

З документації: Спільний доступ до підпису (SAS) забезпечує безпечний делегований доступ до ресурсів у вашому обліковому записі зберігання. З SAS ви маєте детальний контроль над тим, як клієнт може отримати доступ до ваших даних. Наприклад:

  • Які ресурси може отримати доступ клієнт.

  • Які дозволи у них є на ці ресурси.

  • Як довго SAS є дійсним.

URL SAS виглядає так: 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

Використовуйте Storage Explorer для доступу до даних або python:

#pip3 install azure-storage-blob
from azure.storage.blob import BlobServiceClient

# List containers
conn_str="<SAS URL>"
svc = BlobServiceClient.from_connection_string(conn_str=conn_str)
for c in svc.list_containers():
print(c['name'])

# List blobs inside the containers
container = svc.get_container_client(container=c['name'])

for b in container.list_blobs():
print(b['name'])


# Download all the blobs
blob_name = b['name'].split("/")[::-1][0]
blob = svc.get_blob_client(container=c['name'],blob=b['name'])
with open(blob_name,"wb") as f:
f.write(blob.download_blob().readall())

User delegation SAS

Ви можете забезпечити токен спільного доступу (SAS) для доступу до контейнера, каталогу або блобу, використовуючи або облікові дані Azure Active Directory (Azure AD), або ключ облікового запису. Щоб створити SAS делегування користувача, спочатку потрібно запитати ключ делегування користувача, який ви потім використовуєте для підписання SAS.

Підтримується SAS спільного доступу делегування користувача (SAS) як в Azure Blob Storage, так і в Azure Data Lake Storage Gen2. Однак важливо зазначити, що Збережені політики доступу не сумісні з SAS делегування користувача.

Зверніть увагу, що SAS делегування користувача забезпечується обліковими даними Azure AD замість ключів облікового запису зберігання. Це запобігає клієнтам/додаткам зберігати/отримувати ключі зберігання для створення SAS.

Service SAS

SAS сервісу забезпечується ключем облікового запису зберігання. SAS сервісу делегує доступ до ресурсу лише в одному з сервісів Azure Storage: Blob storage, Queue storage, Table storage або Azure Files. URI для SAS на рівні сервісу складається з URI до ресурсу, для якого SAS делегуватиме доступ, за яким слідує токен SAS.

Щоб використовувати облікові дані Azure Active Directory (Azure AD) для забезпечення SAS для контейнера або блобу, використовуйте SAS делегування користувача.

Account SAS

SAS облікового запису забезпечується одним з ключів облікового запису зберігання (їх є 2). SAS облікового запису делегує доступ до ресурсів в одному або кількох сервісах зберігання. Усі операції, доступні через SAS сервісу або SAS делегування користувача, також доступні через SAS облікового запису.

з документації: Створивши SAS облікового запису, ви можете:

  • Делегувати доступ до операцій на рівні сервісу, які наразі недоступні з SAS, специфічного для сервісу, таких як операції Get/Set Service Properties та Get Service Stats.

  • Делегувати доступ до більш ніж одного сервісу в обліковому записі зберігання одночасно. Наприклад, ви можете делегувати доступ до ресурсів як в Azure Blob Storage, так і в Azure Files, використовуючи SAS облікового запису.

  • Делегувати доступ до операцій запису та видалення для контейнерів, черг, таблиць та загальних файлів, які недоступні з SAS, специфічного для об'єкта.

  • Вказати IP-адресу або діапазон IP-адрес, з яких приймати запити.

  • Вказати HTTP-протокол, з якого приймати запити (або HTTPS, або HTTP/HTTPS).

Enumeration

# Get storage accounts
az storage account list #Get the account name from here

# Get keys to authenticate
az storage account keys list --account-name <name>

# Get shares
az storage share list --account-name <name> --account-key <key>

# Get dirs/files inside the share
az storage file list --account-name <name> --share-name <share-name> --account-key <key>
## If type is "dir", you can continue enumerationg files inside of it
az storage file list --account-name <name> --share-name <prev_dir/share-name> --account-key <key>

# Download a complete share (with directories and files inside of them)
az storage file download-batch -d . --source <share-name> --account-name <name> --account-key <key>

Посилання

Підтримати HackTricks

Last updated