Az - Storage Accounts & Blobs
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Облікові записи Azure Storage є основними службами в Microsoft Azure, які забезпечують масштабоване, безпечне та високо доступне хмарне сховище для різних типів даних, включаючи блоби (великі двійкові об'єкти), файли, черги та таблиці. Вони слугують контейнерами, які групують ці різні служби зберігання під єдиним простором імен для зручного управління.
Основні параметри конфігурації:
Кожен обліковий запис зберігання повинен мати унікальне ім'я серед усіх Azure.
Кожен обліковий запис зберігання розгортається в регіоні або в розширеній зоні Azure.
Можна вибрати преміум версію облікового запису зберігання для кращої продуктивності.
Можна вибрати серед 4 типів надмірності для захисту від відмов в стійках, дисках та дата-центрах.
Параметри конфігурації безпеки:
Вимагати безпечну передачу для операцій REST API: Вимагати TLS у будь-якому спілкуванні зі сховищем.
Дозволяє ввімкнути анонімний доступ до окремих контейнерів: Якщо ні, у майбутньому не буде можливості ввімкнути анонімний доступ.
Увімкнути доступ за ключем облікового запису зберігання: Якщо ні, доступ з використанням спільних ключів буде заборонено.
Мінімальна версія TLS.
Дозволений обсяг для операцій копіювання: Дозволити з будь-якого облікового запису зберігання, з будь-якого облікового запису зберігання з того ж орендаря Entra або з облікового запису зберігання з приватними кінцевими точками в тій же віртуальній мережі.
Параметри Blob Storage:
Дозволити крос-орендаторну реплікацію.
Рівень доступу: Гарячий (часто доступні дані), Холодний і Ледачий (рідко доступні дані).
Параметри мережі:
Доступ до мережі:
Дозволити з усіх мереж.
Дозволити з вибраних віртуальних мереж та IP-адрес.
Вимкнути публічний доступ і використовувати приватний доступ.
Приватні кінцеві точки: Дозволяє приватне з'єднання з обліковим записом зберігання з віртуальної мережі.
Параметри захисту даних:
Відновлення на момент часу для контейнерів: Дозволяє відновити контейнери до попереднього стану.
Це вимагає ввімкнення версійності, зміни потоку та м'якого видалення блобів.
Увімкнути м'яке видалення для блобів: Дозволяє період зберігання в днях для видалених блобів (навіть перезаписаних).
Увімкнути м'яке видалення для контейнерів: Дозволяє період зберігання в днях для видалених контейнерів.
Увімкнути м'яке видалення для загальних файлів: Дозволяє період зберігання в днях для видалених загальних файлів.
Увімкнути версійність для блобів: Зберігати попередні версії ваших блобів.
Увімкнути зміну потоку блобів: Зберігати журнали створення, модифікації та видалення змін до блобів.
Увімкнути підтримку незмінності на рівні версії: Дозволяє встановити політику зберігання на основі часу на рівні облікового запису, яка буде застосовуватися до всіх версій блобів.
Підтримка незмінності на рівні версії та відновлення на момент часу для контейнерів не можуть бути увімкнені одночасно.
Параметри конфігурації шифрування:
Тип шифрування: Можна використовувати ключі, керовані Microsoft (MMK) або ключі, керовані клієнтом (CMK).
Увімкнути шифрування інфраструктури: Дозволяє подвоїти шифрування даних "для більшої безпеки".
Blob storage
https://<storage-account>.blob.core.windows.net
https://<stg-acc>.blob.core.windows.net/<container-name>?restype=container&comp=list
Data Lake Storage
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
Якщо "Дозволити публічний доступ до блобів" увімкнено (за замовчуванням вимкнено), при створенні контейнера можна:
Надати публічний доступ для читання блобів (необхідно знати ім'я).
Переглядати блоби контейнера та читати їх.
Зробити його повністю приватним.
Якщо ви знайдете будь-яке сховище, до якого можете підключитися, ви можете використовувати інструмент Microsoft Azure Storage Explorer для цього.
Можна використовувати принципи Entra ID з ролями RBAC для доступу до облікових записів зберігання, і це рекомендований спосіб.
Облікові записи зберігання мають ключі доступу, які можна використовувати для доступу до них. Це забезпечує повний доступ до облікового запису зберігання.
Можна генерувати спільні ключі, підписані ключами доступу, для авторизації доступу до певних ресурсів через підписане URL.
Зверніть увагу, що частина CanonicalizedResource
представляє ресурс служби зберігання (URI). І якщо будь-яка частина в URL закодована, вона також повинна бути закодована всередині CanonicalizedResource
.
Це використовується за замовчуванням az
cli для аутентифікації запитів. Щоб використовувати облікові дані принципу Entra ID, вкажіть параметр --auth-mode login
.
Можна згенерувати спільний ключ для блобів, черг і файлових служб, підписавши таку інформацію:
Можливо згенерувати спільний ключ для сервісів таблиць, підписавши таку інформацію:
Можливо згенерувати легкий спільний ключ для сервісів blob, queue та file, підписавши таку інформацію:
Можливо згенерувати легкий спільний ключ для сервісів таблиць, підписуючи таку інформацію:
Тоді, щоб використовувати ключ, це можна зробити в заголовку Authorization, дотримуючись синтаксису:
Shared Access Signatures (SAS) - це безпечні, обмежені за часом URL-адреси, які надають конкретні дозволи для доступу до ресурсів в обліковому записі Azure Storage без розкриття ключів доступу облікового запису. Хоча ключі доступу надають повний адміністративний доступ до всіх ресурсів, SAS дозволяє здійснювати детальний контроль, вказуючи дозволи (наприклад, читання або запис) і визначаючи час закінчення терміну дії.
User delegation SAS: Це створюється з Entra ID principal, який підпише SAS і делегує дозволи від користувача до SAS. Його можна використовувати лише з blob і data lake storage (docs). Можливо анулювати всі згенеровані SAS для делегованих користувачів.
Навіть якщо можливо згенерувати делегований SAS з "більшими" дозволами, ніж ті, які має користувач. Однак, якщо у принципала їх немає, це не спрацює (без підвищення привілеїв).
Service SAS: Це підписується за допомогою одного з ключів доступу облікового запису. Його можна використовувати для надання доступу до конкретних ресурсів в одному сервісі зберігання. Якщо ключ буде оновлено, SAS перестане працювати.
Account SAS: Він також підписується одним з ключів доступу облікового запису. Він надає доступ до ресурсів через сервіси облікового запису зберігання (Blob, Queue, Table, File) і може включати операції на рівні сервісу.
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
URL-адреса SAS, підписана як user delegation, виглядає так:
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:
Параметр se
вказує на дату закінчення терміну дії SAS
Параметр sp
вказує на дозволи SAS
sig
- це підпис, що підтверджує 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
Azure Blob Storage тепер підтримує SSH File Transfer Protocol (SFTP), що дозволяє безпечну передачу файлів і управління ними безпосередньо до Blob Storage без необхідності в кастомних рішеннях або продуктах третіх сторін.
Підтримка протоколу: SFTP працює з обліковими записами Blob Storage, налаштованими з ієрархічним простором імен (HNS). Це організовує блоби в каталоги та підкаталоги для зручнішої навігації.
Безпека: SFTP використовує локальні ідентичності користувачів для аутентифікації і не інтегрується з RBAC або ABAC. Кожен локальний користувач може аутентифікуватися через:
Паролі, згенеровані Azure
Пара ключів SSH (публічний-приватний)
Детальні дозволи: Дозволи, такі як Читання, Запис, Видалення та Список, можуть бути призначені локальним користувачам для до 100 контейнерів.
Мережеві міркування: З'єднання SFTP здійснюються через порт 22. Azure підтримує мережеві конфігурації, такі як брандмауери, приватні кінцеві точки або віртуальні мережі для захисту трафіку SFTP.
Ієрархічний простір імен: HNS повинен бути увімкнений під час створення облікового запису зберігання.
Підтримуване шифрування: Потрібні криптографічні алгоритми, схвалені Microsoft Security Development Lifecycle (SDL) (наприклад, rsa-sha2-256, ecdsa-sha2-nistp256).
Налаштування SFTP:
Увімкніть SFTP на обліковому записі зберігання.
Створіть локальні ідентичності користувачів з відповідними дозволами.
Налаштуйте домашні каталоги для користувачів, щоб визначити їхнє початкове місце розташування в контейнері.
Читання
r
Читати вміст файлу.
Запис
w
Завантажувати файли та створювати каталоги.
Список
l
Переглядати вміст каталогів.
Видалення
d
Видаляти файли або каталоги.
Створення
c
Створювати файли або каталоги.
Змінити власність
o
Змінити користувача або групу, що володіє.
Змінити дозволи
p
Змінити ACL на файлах або каталогах.
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)