diff --git a/src/pentesting-cloud/azure-security/az-services/az-storage.md b/src/pentesting-cloud/azure-security/az-services/az-storage.md index e339cee49..a6373951e 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-storage.md +++ b/src/pentesting-cloud/azure-security/az-services/az-storage.md @@ -1,97 +1,117 @@ -# Az - Konta magazynowe i Bloby +# Az - Storage Accounts & Blobs {{#include ../../../banners/hacktricks-training.md}} -## Podstawowe informacje +## Basic Information -Konta magazynowe Azure to podstawowe usługi w Microsoft Azure, które zapewniają skalowalny, bezpieczny i wysoko dostępny magazyn w chmurze **dla różnych typów danych**, w tym blobów (dużych obiektów binarnych), plików, kolejek i tabel. Służą jako kontenery, które grupują te różne usługi magazynowe pod jednym przestrzenią nazw dla łatwego zarządzania. +Azure Storage Accounts są podstawową usługą w Microsoft Azure, która zapewnia skalowalną, bezpieczną i wysoce dostępną chmurową **przestrzeń storage dla różnych typów danych**, w tym bloby (duże obiekty binarne), pliki, kolejki i tabele. Służą jako kontenery grupujące te różne usługi storage pod jedną przestrzenią nazw, co ułatwia zarządzanie. **Główne opcje konfiguracji**: -- Każde konto magazynowe musi mieć **unikalną nazwę w całym Azure**. -- Każde konto magazynowe jest wdrażane w **regionie** lub w rozszerzonej strefie Azure. -- Możliwe jest wybranie **wersji premium** konta magazynowego dla lepszej wydajności. -- Możliwe jest wybranie spośród **4 typów redundancji, aby chronić** przed awariami szafek, dysków i centrów danych. +- Każde konto storage musi mieć **unikalną nazwę w całym Azure**. +- Każde konto storage jest wdrażane w **regionie** lub w rozszerzonej strefie Azure. +- Można wybrać wersję **premium** konta storage dla lepszej wydajności. +- Można wybrać spośród **4 typów redundancji** chroniących przed awariami rack, dysku i centrum danych. -**Opcje konfiguracji bezpieczeństwa**: +**Opcje konfiguracji zabezpieczeń**: -- **Wymagaj bezpiecznego transferu dla operacji REST API**: Wymagaj TLS w każdej komunikacji z magazynem. -- **Zezwalaj na włączenie dostępu anonimowego do poszczególnych kontenerów**: Jeśli nie, nie będzie możliwe włączenie dostępu anonimowego w przyszłości. -- **Włącz dostęp do klucza konta magazynowego**: Jeśli nie, dostęp za pomocą kluczy współdzielonych będzie zabroniony. -- **Minimalna wersja TLS**. -- **Dozwolony zakres dla operacji kopiowania**: Zezwól z dowolnego konta magazynowego, z dowolnego konta magazynowego z tej samej dzierżawy Entra lub z konta magazynowego z prywatnymi punktami końcowymi w tej samej sieci wirtualnej. +- **Require secure transfer for REST API operations**: Wymaga TLS w każdej komunikacji ze storage. +- **Allows enabling anonymous access on individual containers**: Jeśli nie, nie będzie można w przyszłości włączyć dostępu anonimowego. +- **Enable storage account key access**: Jeśli nie, dostęp przy użyciu Shared Keys będzie zabroniony. +- **Minimum TLS version** +- **Permitted scope for copy operations**: Zezwól z dowolnego konta storage, z dowolnego konta storage z tego samego Entra tenant lub z konta storage z private endpoints w tej samej virtual network. -**Opcje przechowywania blobów**: +**Opcje Blob Storage**: -- **Zezwalaj na replikację między dzierżawami**. -- **Poziom dostępu**: Gorący (często dostępne dane), Chłodny i Zimny (rzadko dostępne dane). +- **Allow cross-tenant replication** +- **Access tier**: Hot (dane często dostępne), Cool i Cold (dane rzadko dostępne) **Opcje sieciowe**: -- **Dostęp do sieci**: -- Zezwól z wszystkich sieci. -- Zezwól z wybranych sieci wirtualnych i adresów IP. -- Wyłącz dostęp publiczny i użyj dostępu prywatnego. -- **Prywatne punkty końcowe**: Umożliwia prywatne połączenie z kontem magazynowym z sieci wirtualnej. +- **Network access**: +- Zezwalaj ze wszystkich sieci +- Zezwalaj z wybranych virtual networks i adresów IP +- Wyłącz dostęp publiczny i użyj dostępu prywatnego +- **Private endpoints**: Pozwala na prywatne połączenie do konta storage z virtual network **Opcje ochrony danych**: -- **Przywracanie w punkcie czasowym dla kontenerów**: Umożliwia przywrócenie kontenerów do wcześniejszego stanu. -- Wymaga włączenia wersjonowania, zmiany feedu i miękkiego usuwania blobów. -- **Włącz miękkie usuwanie dla blobów**: Umożliwia okres przechowywania w dniach dla usuniętych blobów (nawet nadpisanych). -- **Włącz miękkie usuwanie dla kontenerów**: Umożliwia okres przechowywania w dniach dla usuniętych kontenerów. -- **Włącz miękkie usuwanie dla współdzielonych plików**: Umożliwia okres przechowywania w dniach dla usuniętych współdzielonych plików. -- **Włącz wersjonowanie dla blobów**: Utrzymuj poprzednie wersje swoich blobów. -- **Włącz feed zmian blobów**: Zachowuj logi tworzenia, modyfikacji i usuwania zmian w blobach. -- **Włącz wsparcie dla niezmienności na poziomie wersji**: Umożliwia ustawienie polityki przechowywania opartej na czasie na poziomie konta, która będzie miała zastosowanie do wszystkich wersji blobów. -- Wsparcie dla niezmienności na poziomie wersji i przywracanie w punkcie czasowym dla kontenerów nie mogą być włączone jednocześnie. +- **Point-in-time restore for containers**: Pozwala odtworzyć kontenery do wcześniejszego stanu +- Wymaga włączenia versioning, change feed oraz blob soft delete. +- **Enable soft delete for blobs**: Włącza okres przechowywania (w dniach) dla usuniętych blobów (nawet nadpisanych) +- **Enable soft delete for containers**: Włącza okres przechowywania (w dniach) dla usuniętych kontenerów +- **Enable soft delete for file shares**: Włącza okres przechowywania (w dniach) dla usuniętych udostępnień plików +- **Enable versioning for blobs**: Przechowuje poprzednie wersje blobów +- **Enable blob change feed**: Zachowuje logi tworzenia, modyfikacji i usuwania blobów +- **Enable version-level immutability support**: Pozwala ustawić politykę retencji opartą na czasie na poziomie konta, która będzie miała zastosowanie do wszystkich wersji blobów. +- Version-level immutability support i point-in-time restore for containers nie mogą być włączone jednocześnie. -**Opcje konfiguracji szyfrowania**: +**Opcje szyfrowania**: -- **Typ szyfrowania**: Możliwe jest użycie kluczy zarządzanych przez Microsoft (MMK) lub kluczy zarządzanych przez klienta (CMK). -- **Włącz szyfrowanie infrastruktury**: Umożliwia podwójne szyfrowanie danych "dla większego bezpieczeństwa". +- **Encryption type**: Można użyć Microsoft-managed keys (MMK) lub Customer-managed keys (CMK) +- **Enable infrastructure encryption**: Pozwala podwójnie zaszyfrować dane „dla większego bezpieczeństwa” -### Punkty końcowe magazynu +### Storage endpoints -
Usługa magazynowaPunkt końcowy
Magazyn blobówhttps://.blob.core.windows.net

https://.blob.core.windows.net/?restype=container&comp=list
Magazyn Data Lakehttps://.dfs.core.windows.net
Azure Fileshttps://.file.core.windows.net
Magazyn kolejekhttps://.queue.core.windows.net
Magazyn tabelhttps://.table.core.windows.net
+
Storage ServiceEndpoint
Blob storagehttps://.blob.core.windows.net

https://.blob.core.windows.net/?restype=container&comp=list
Data Lake Storagehttps://.dfs.core.windows.net
Azure Fileshttps://.file.core.windows.net
Queue storagehttps://.queue.core.windows.net
Table storagehttps://.table.core.windows.net
-### Ekspozycja publiczna +### Public Exposure -Jeśli "Zezwalaj na publiczny dostęp do blobów" jest **włączone** (domyślnie wyłączone), podczas tworzenia kontenera można: +Jeśli "Allow Blob public access" jest **włączone** (domyślnie wyłączone), podczas tworzenia kontenera można: -- Umożliwić **publiczny dostęp do odczytu blobów** (musisz znać nazwę). +- Nadać **publiczny dostęp do odczytu blobów** (trzeba znać nazwę). - **Wylistować bloby kontenera** i **odczytać** je. -- Uczynić go całkowicie **prywatnym**. +- Uczynić go całkowicie **private**
-### Połączenie z magazynem +#### Auditing anonymous blob exposure -Jeśli znajdziesz jakikolwiek **magazyn**, do którego możesz się połączyć, możesz użyć narzędzia [**Microsoft Azure Storage Explorer**](https://azure.microsoft.com/es-es/products/storage/storage-explorer/) do tego. +- **Locate storage accounts** that can expose data: `az storage account list | jq -r '.[] | select(.properties.allowBlobPublicAccess==true) | .name'`. If `allowBlobPublicAccess` is `false` you cannot turn containers public. +- **Inspect risky accounts** to confirm the flag and other weak settings: `az storage account show --name --query '{allow:properties.allowBlobPublicAccess, minTls:properties.minimumTlsVersion}'`. +- **Enumerate container-level exposure** where the flag is enabled: +```bash +az storage container list --account-name \ +--query '[].{name:name, access:properties.publicAccess}' +``` +- `"Blob"`: anonimowy odczyt dozwolony **tylko gdy nazwa blobu jest znana** (brak możliwości listowania). +- `"Container"`: anonimowe **listowanie + odczyt** każdego bloba. +- `null`: prywatne; wymagane uwierzytelnienie. +- **Udowodnij dostęp** bez poświadczeń: +- Jeśli `publicAccess` jest `Container`, anonimowe listowanie działa: `curl "https://.blob.core.windows.net/?restype=container&comp=list"`. +- Dla obu `Blob` i `Container`, anonimowe pobieranie bloba działa, gdy nazwa jest znana: +```bash +az storage blob download -c -n --account-name --file /dev/stdout +# or via raw HTTP +curl "https://.blob.core.windows.net//" +``` +### Połącz się z magazynem + +Jeśli znajdziesz jakikolwiek **magazyn**, z którym możesz się połączyć, możesz użyć narzędzia [**Microsoft Azure Storage Explorer**](https://azure.microsoft.com/es-es/products/storage/storage-explorer/) do tego. ## Dostęp do magazynu ### RBAC -Możliwe jest użycie zasad Entra ID z **rolami RBAC** do uzyskania dostępu do kont magazynowych i jest to zalecany sposób. +Można użyć principali Entra ID z **rolami RBAC** do uzyskania dostępu do kont storage i jest to zalecany sposób. ### Klucze dostępu -Konta magazynowe mają klucze dostępu, które można wykorzystać do uzyskania dostępu. Zapewnia to **pełny dostęp do konta magazynowego.** +Konta storage mają klucze dostępu, które można wykorzystać do uzyskania dostępu. To zapewnia **pełny dostęp do konta storage.**
-### **Klucze współdzielone i lekkie klucze współdzielone** +### **Shared Keys & Lite Shared Keys** -Możliwe jest [**generowanie kluczy współdzielonych**](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key) podpisanych kluczami dostępu, aby autoryzować dostęp do określonych zasobów za pomocą podpisanego URL. +Możliwe jest [**generate Shared Keys**](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key) podpisanych kluczami dostępu, aby autoryzować dostęp do niektórych zasobów za pomocą podpisanego URL. > [!NOTE] -> Zauważ, że część `CanonicalizedResource` reprezentuje zasób usług magazynowych (URI). A jeśli jakakolwiek część w URL jest zakodowana, powinna być również zakodowana wewnątrz `CanonicalizedResource`. +> Zwróć uwagę, że część `CanonicalizedResource` reprezentuje zasób usług magazynowania (URI). Jeśli jakakolwiek część w URL jest zakodowana, powinna być również zakodowana wewnątrz `CanonicalizedResource`. > [!NOTE] -> To jest **używane domyślnie przez `az` cli** do uwierzytelniania żądań. Aby użyć poświadczeń głównych Entra ID, wskaż parametr `--auth-mode login`. +> To jest **używane domyślnie przez `az` cli** do uwierzytelniania żądań. Aby wymusić użycie poświadczeń principala Entra ID, podaj parametr `--auth-mode login`. -- Możliwe jest wygenerowanie **klucza współdzielonego dla usług blobów, kolejek i plików**, podpisując następujące informacje: +- Możliwe jest wygenerowanie **shared key dla usług blob, queue i file** podpisując następujące informacje: ```bash StringToSign = VERB + "\n" + Content-Encoding + "\n" + @@ -108,7 +128,7 @@ Range + "\n" + CanonicalizedHeaders + CanonicalizedResource; ``` -- Możliwe jest wygenerowanie **klucza współdzielonego dla usług tabel** podpisując następujące informacje: +- Można wygenerować **shared key for table services** podpisując następujące informacje: ```bash StringToSign = VERB + "\n" + Content-MD5 + "\n" + @@ -116,7 +136,7 @@ Content-Type + "\n" + Date + "\n" + CanonicalizedResource; ``` -- Możliwe jest wygenerowanie **lite shared key dla usług blob, queue i file** podpisując następujące informacje: +- Możliwe jest wygenerowanie **lite shared key for blob, queue and file services** podpisując następujące informacje: ```bash StringToSign = VERB + "\n" + Content-MD5 + "\n" + @@ -125,12 +145,12 @@ Date + "\n" + CanonicalizedHeaders + CanonicalizedResource; ``` -- Możliwe jest wygenerowanie **lite shared key dla usług tabelowych** podpisując następujące informacje: +- Możliwe jest wygenerowanie **lite shared key for table services** podpisując następujące informacje: ```bash StringToSign = Date + "\n" CanonicalizedResource ``` -Aby użyć klucza, można to zrobić w nagłówku Authorization, stosując składnię: +Aby użyć klucza, można to zrobić w nagłówku Authorization, stosując następującą składnię: ```bash Authorization="[SharedKey|SharedKeyLite] :" #e.g. @@ -144,73 +164,76 @@ Content-Length: 0 ``` ### **Shared Access Signature** (SAS) -Shared Access Signatures (SAS) to bezpieczne, ograniczone czasowo adresy URL, które **przyznają określone uprawnienia do dostępu do zasobów** w koncie Azure Storage bez ujawniania kluczy dostępu do konta. Podczas gdy klucze dostępu zapewniają pełny dostęp administracyjny do wszystkich zasobów, SAS pozwala na szczegółową kontrolę poprzez określenie uprawnień (takich jak odczyt lub zapis) i zdefiniowanie czasu wygaśnięcia. +Shared Access Signatures (SAS) to bezpieczne, ograniczone czasowo URL-e, które **przyznają konkretne uprawnienia do zasobów** w koncie Azure Storage bez ujawniania kluczy dostępowych konta. Podczas gdy klucze dostępu dają pełny dostęp administracyjny do wszystkich zasobów, SAS umożliwia granulowaną kontrolę przez określenie uprawnień (np. read czy write) oraz czasu wygaśnięcia. -#### Typy SAS +#### SAS Types -- **User delegation SAS**: Jest tworzony z **Entra ID principal**, który podpisuje SAS i deleguje uprawnienia od użytkownika do SAS. Może być używany tylko z **blob i data lake storage** ([docs](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas)). Możliwe jest **cofnięcie** wszystkich wygenerowanych SAS delegowanych przez użytkownika. -- Nawet jeśli możliwe jest wygenerowanie SAS delegacji z "większymi" uprawnieniami niż te, które ma użytkownik. Jednak jeśli principal ich nie ma, nie zadziała (brak privesc). -- **Service SAS**: Jest podpisywany za pomocą jednego z **kluczy dostępu** do konta storage. Może być używany do przyznawania dostępu do określonych zasobów w pojedynczej usłudze storage. Jeśli klucz zostanie odnowiony, SAS przestanie działać. -- **Account SAS**: Jest również podpisywany jednym z **kluczy dostępu** do konta storage. Przyznaje dostęp do zasobów w ramach usług konta storage (Blob, Queue, Table, File) i może obejmować operacje na poziomie usługi. +- **User delegation SAS**: Tworzony jest z użyciem **Entra ID principal**, który podpisze SAS i przekaże uprawnienia od użytkownika do SAS. Można go używać tylko z **blob and data lake storage** ([docs](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas)). Możliwe jest **unieważnienie** wszystkich wygenerowanych user delegated SAS. +- Nawet jeśli można wygenerować delegation SAS z „większymi” uprawnieniami niż te, które ma użytkownik, to jeśli principal ich nie posiada, to nie zadziała (no privesc). +- **Service SAS**: Podpisywany jest przy użyciu jednego z **access keys** konta storage. Może być użyty do przyznania dostępu do konkretnych zasobów w pojedynczej usłudze storage. Jeśli klucz zostanie odnowiony, SAS przestanie działać. +- **Account SAS**: Również podpisywany za pomocą jednego z **access keys** konta storage. Przyznaje dostęp do zasobów w ramach usług konta storage (Blob, Queue, Table, File) i może obejmować operacje na poziomie usług. -Adres URL SAS podpisany przez **klucz dostępu** wygląda tak: +A SAS URL podpisany przez **access key** wygląda tak: - `https://.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` -Adres URL SAS podpisany jako **user delegation** wygląda tak: +A SAS URL podpisany jako **user delegation** wygląda tak: - `https://.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` -Zauważ niektóre **parametry http**: +Zwróć uwagę na niektóre **parametry http**: -- Parametr **`se`** wskazuje na **datę wygaśnięcia** SAS -- Parametr **`sp`** wskazuje na **uprawnienia** SAS +- Parametr **`se`** wskazuje **datę wygaśnięcia** SAS +- Parametr **`sp`** wskazuje **uprawnienia** SAS - **`sig`** to **podpis** weryfikujący SAS -#### Uprawnienia SAS +#### SAS permissions -Podczas generowania SAS należy wskazać uprawnienia, które powinny być przyznawane. W zależności od obiektu, na którym generowany jest SAS, mogą być uwzględnione różne uprawnienia. Na przykład: +Przy generowaniu SAS trzeba określić uprawnienia, które ma przyznawać. W zależności od obiektu, dla którego SAS jest generowany, mogą być uwzględnione różne uprawnienia. Na przykład: - (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 teraz obsługuje protokół SSH File Transfer Protocol (SFTP), umożliwiając bezpieczny transfer i zarządzanie plikami bezpośrednio do Blob Storage bez potrzeby stosowania rozwiązań niestandardowych lub produktów firm trzecich. +Azure Blob Storage teraz wspiera SSH File Transfer Protocol (SFTP), umożliwiając bezpieczny transfer plików i zarządzanie bez konieczności używania niestandardowych rozwiązań czy produktów third-party. -### Kluczowe funkcje +### Key Features -- Wsparcie protokołu: SFTP działa z kontami Blob Storage skonfigurowanymi z hierarchiczną przestrzenią nazw (HNS). To organizuje bloby w katalogi i podkatalogi dla łatwiejszej nawigacji. -- Bezpieczeństwo: SFTP używa lokalnych tożsamości użytkowników do uwierzytelniania i nie integruje się z RBAC ani ABAC. Każdy lokalny użytkownik może uwierzytelnić się za pomocą: -- Haseł generowanych przez Azure -- Par kluczy SSH publicznych-prywatnych -- Szczegółowe uprawnienia: Uprawnienia takie jak Odczyt, Zapis, Usunięcie i Lista mogą być przypisane lokalnym użytkownikom do maksymalnie 100 kontenerów. -- Rozważania dotyczące sieci: Połączenia SFTP są realizowane przez port 22. Azure wspiera konfiguracje sieciowe, takie jak zapory, prywatne punkty końcowe lub sieci wirtualne, aby zabezpieczyć ruch SFTP. +- Protocol Support: SFTP działa z kontami Blob Storage skonfigurowanymi z hierarchical namespace (HNS). Organizuje to bloby w katalogi i podkatalogi, ułatwiając nawigację. +- Security: SFTP używa lokalnych tożsamości użytkowników do uwierzytelniania i nie integruje się z RBAC ani ABAC. Każdy lokalny użytkownik może uwierzytelniać się przez: +- Azure-generated passwords +- Public-private SSH key pairs +- Granular Permissions: Uprawnienia takie jak Read, Write, Delete i List można przypisać lokalnym użytkownikom dla maksymalnie 100 kontenerów. +- Networking Considerations: Połączenia SFTP odbywają się przez port 22. Azure wspiera konfiguracje sieciowe takie jak firewalle, private endpoints czy virtual networks w celu zabezpieczenia ruchu SFTP. -### Wymagania dotyczące konfiguracji +### Setup Requirements -- Hierarchiczna przestrzeń nazw: HNS musi być włączona podczas tworzenia konta storage. -- Obsługiwane szyfrowanie: Wymaga zatwierdzonych przez Microsoft Security Development Lifecycle (SDL) algorytmów kryptograficznych (np. rsa-sha2-256, ecdsa-sha2-nistp256). -- Konfiguracja SFTP: -- Włącz SFTP na koncie storage. +- Hierarchical Namespace: HNS musi być włączony podczas tworzenia storage account. +- Supported Encryption: Wymagane są algorytmy kryptograficzne zatwierdzone przez Microsoft Security Development Lifecycle (SDL) (np. rsa-sha2-256, ecdsa-sha2-nistp256). +- SFTP Configuration: +- Włącz SFTP na storage account. - Utwórz lokalne tożsamości użytkowników z odpowiednimi uprawnieniami. -- Skonfiguruj katalogi domowe dla użytkowników, aby zdefiniować ich miejsce startowe w kontenerze. +- Skonfiguruj home directories dla użytkowników, aby określić ich lokalizację startową w ramach kontenera. -### Uprawnienia +### Permissions -| Uprawnienie | Symbol | Opis | -| --------------------- | ------ | ------------------------------------- | -| **Odczyt** | `r` | Odczyt zawartości pliku. | -| **Zapis** | `w` | Przesyłanie plików i tworzenie katalogów. | -| **Lista** | `l` | Lista zawartości katalogów. | -| **Usunięcie** | `d` | Usunięcie plików lub katalogów. | -| **Utworzenie** | `c` | Tworzenie plików lub katalogów. | -| **Zmiana właściciela**| `o` | Zmiana użytkownika lub grupy właściciela. | -| **Zmiana uprawnień** | `p` | Zmiana ACL na plikach lub katalogach. | +| Permission | Symbol | Description | +| ---------------------- | ------ | ------------------------------------ | +| **Read** | `r` | Odczyt zawartości pliku. | +| **Write** | `w` | Wysyłanie plików i tworzenie katalogów. | +| **List** | `l` | Wyświetlanie zawartości katalogów. | +| **Delete** | `d` | Usuwanie plików lub katalogów. | +| **Create** | `c` | Tworzenie plików lub katalogów. | +| **Modify Ownership** | `o` | Zmiana właściciela użytkownika lub grupy. | +| **Modify Permissions** | `p` | Zmiana ACL na plikach lub katalogach. | ## Enumeration {{#tabs }} {{#tab name="az cli" }} + +
+enumeracja az cli ```bash # Get storage accounts az storage account list #Get the account name from here @@ -327,10 +350,15 @@ az storage account local-user list \ --account-name \ --resource-group ``` +
+ {{#endtab }} {{#tab name="Az PowerShell" }} -```bash + +
+Enumeracja Az PowerShell +```powershell # Get storage accounts Get-AzStorageAccount | fl # Get rules to access the storage account @@ -387,6 +415,8 @@ New-AzStorageBlobSASToken ` -Permission racwdl ` -ExpiryTime (Get-Date "2024-12-31T23:59:00Z") ``` +
+ {{#endtab }} {{#endtabs }} @@ -396,13 +426,13 @@ New-AzStorageBlobSASToken ` az-file-shares.md {{#endref}} -## Eskalacja uprawnień +## Podwyższanie uprawnień {{#ref}} ../az-privilege-escalation/az-storage-privesc.md {{#endref}} -## Po eksploatacji +## Działania po eksploatacji {{#ref}} ../az-post-exploitation/az-blob-storage-post-exploitation.md @@ -414,10 +444,14 @@ az-file-shares.md ../az-persistence/az-storage-persistence.md {{#endref}} -## Odniesienia +## Źródła - [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: 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) +- [https://learn.microsoft.com/en-us/cli/azure/storage/blob](https://learn.microsoft.com/en-us/cli/azure/storage/blob) {{#include ../../../banners/hacktricks-training.md}}