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

This commit is contained in:
Translator
2026-01-18 15:04:31 +00:00
parent 630c3f4df6
commit b4c4c4c81e
@@ -2,24 +2,24 @@
{{#include ../../../banners/hacktricks-training.md}}
## Basic Information
## Podstawowe informacje
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.
Azure Storage Accounts są podstawowymi usługami w Microsoft Azure, które zapewnia skalowalne, bezpieczne i wysoko dostępne chmurowe **przechowywanie dla różnych typów danych**, w tym blobs (binary large objects), plików, kolejek i tabel. Służą jako kontenery grupujące te różne usługi przechowywania pod jedną przestrzenią nazw dla łatwego zarządzania.
**Główne opcje konfiguracji**:
- 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.
- Każde storage account musi mieć **unikalną nazwę w całym Azure**.
- Każde storage account jest wdrażane w **regionie** lub w Azure extended zone.
- Można wybrać wersję **premium** storage account dla lepszej wydajności.
- Można wybrać spośród **4 typów redundancji**, aby chronić przed awariami szafy (rack), dysku i centrum danych.
**Opcje konfiguracji zabezpieczeń**:
**Opcje konfiguracji bezpieczeństwa**:
- **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.
- **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, w przyszłości nie będzie można 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.
- **Permitted scope for copy operations**: Allow from any storage account, from any storage account from the same Entra tenant or from storage account with private endpoints in the same virtual network.
**Opcje Blob Storage**:
@@ -29,89 +29,104 @@ Azure Storage Accounts są podstawową usługą w Microsoft Azure, która zapewn
**Opcje sieciowe**:
- **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
- Allow from all networks
- Allow from selected virtual networks and IP addresses
- Disable public access and use private access
- **Private endpoints**: Umożliwia prywatne połączenie do storage account z virtual network
**Opcje ochrony danych**:
- **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
- **Point-in-time restore for containers**: Pozwala przywrócić kontenery do wcześniejszego stanu
- Wymaga włączenia versioning, change feed i blob soft delete.
- **Enable soft delete for blobs**: Włącza okres retencji (dni) dla usuniętych blobów (nawet nadpisanych)
- **Enable soft delete for containers**: Włącza okres retencji (dni) dla usuniętych kontenerów
- **Enable soft delete for file shares**: Włącza okres retencji (dni) dla usuniętych file shares
- **Enable versioning for blobs**: Utrzymuje wcześniejsze wersje blobów
- **Enable blob change feed**: Przechowuje logi utworzeń, modyfikacji i usunięć 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 szyfrowania**:
**Opcje konfiguracji szyfrowania**:
- **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
- **Enable infrastructure encryption**: Pozwala podwójnie szyfrować dane (dla większego bezpieczeństwa)
### Storage endpoints
<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
### Ekspozycja publiczna
Jeśli "Allow Blob public access" jest **włączone** (domyślnie wyłączone), podczas tworzenia kontenera można:
Jeśli opcja "Allow Blob public access" jest **włączona** (domyślnie wyłączona), podczas tworzenia kontenera można:
- Nadać **publiczny dostęp do odczytu blobów** (trzeba znać nazwę).
- **Wylistować bloby kontenera** i **odczytać** je.
- Uczynić go całkowicie **private**
- Udzielić **public access to read blobs** (trzeba znać nazwę).
- Wypisać bloby kontenera i odczytać je.
- Uczynić go całkowicie prywatnym
<figure><img src="https://lh7-rt.googleusercontent.com/slidesz/AGV_vUfoetUnYBPWQpRrWNnnlbqWpl8Rdoaeg5uBrCVlvcNDlnKwQHjZe8nUb2SfPspBgbu-lCZLmUei-hFi_Jl2eKbaxUtBGTjdUSDmkrcwr90VZkmuMjk9tyh92p75btfyzGiUTa0-=s2048?key=m8TV59TrCFPlkiNnmhYx3aZt" alt=""><figcaption></figcaption></figure>
#### Auditing anonymous blob exposure
### Static website (`$web`) exposure & leaked secrets
- **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 <acc> --query '{allow:properties.allowBlobPublicAccess, minTls:properties.minimumTlsVersion}'`.
- **Enumerate container-level exposure** where the flag is enabled:
- **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
```
### Audyt anonimowego dostępu do blobów
- **Zlokalizuj storage accounts** które mogą ujawniać dane: `az storage account list | jq -r '.[] | select(.properties.allowBlobPublicAccess==true) | .name'`. Jeśli `allowBlobPublicAccess` jest `false` nie możesz ustawić kontenerów jako publicznych.
- **Zbadaj ryzykowne konta** aby potwierdzić flagę i inne słabe ustawienia: `az storage account show --name <acc> --query '{allow:properties.allowBlobPublicAccess, minTls:properties.minimumTlsVersion}'`.
- **Wyenumeruj ekspozycję na poziomie kontenerów** tam, gdzie flaga jest włączona:
```bash
az storage container list --account-name <acc> \
--query '[].{name:name, access:properties.publicAccess}'
```
- `"Blob"`: anonimowy odczyt dozwolony **tylko gdy nazwa blobu jest znana** (brak możliwości listowania).
- `"Blob"`: anonimowy odczyt dozwolony **tylko gdy nazwa bloba jest znana** (brak 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://<acc>.blob.core.windows.net/<container>?restype=container&comp=list"`.
- Jeśli `publicAccess` ma wartość `Container`, anonimowe listowanie działa: `curl "https://<acc>.blob.core.windows.net/<container>?restype=container&comp=list"`.
- Dla obu `Blob` i `Container`, anonimowe pobieranie bloba działa, gdy nazwa jest znana:
```bash
az storage blob download -c <container> -n <blob> --account-name <acc> --file /dev/stdout
# or via raw HTTP
curl "https://<acc>.blob.core.windows.net/<container>/<blob>"
```
### Połącz się z magazynem
### Połącz się ze Storage
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.
Jeśli znajdziesz jakiekolwiek **storage**, 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 <a href="#about-blob-storage" id="about-blob-storage"></a>
## Dostęp do Storage <a href="#about-blob-storage" id="about-blob-storage"></a>
### RBAC
Można użyć principali Entra ID z **rolami RBAC** do uzyskania dostępu do kont storage i jest to zalecany sposób.
Można użyć tożsamości Entra ID z rolami **RBAC** do uzyskania dostępu do kont storage jest to zalecany sposób.
### Klucze dostępu
Konta storage mają klucze dostępu, które można wykorzystać do uzyskania dostępu. To zapewnia **pełny dostęp do konta storage.**
Konta storage mają klucze dostępu, które można wykorzystać do uzyskania dostępu. Zapewnia to **pełen dostęp do konta storage.**
<figure><img src="../../../images/image (5).png" alt=""><figcaption></figcaption></figure>
### **Shared Keys & Lite Shared Keys**
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.
Można [**generate Shared Keys**](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key) podpisane kluczami dostępu, aby autoryzować dostęp do określonych zasobów za pomocą podpisanego URL.
> [!NOTE]
> 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`.
> Należy pamiętać, że część `CanonicalizedResource` reprezentuje zasób usługi storage (URI). Jeśli jakaś 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 wymusić użycie poświadczeń principala Entra ID, podaj parametr `--auth-mode login`.
> To jest **domyślnie używane przez `az` cli** do uwierzytelniania żądań. Aby użyć poświadczeń principala Entra ID, podaj parametr `--auth-mode login`.
- Możliwe jest wygenerowanie **shared key dla usług blob, queue i file** podpisując następujące informacje:
- Możliwe jest wygenerowanie **shared key for blob, queue and file services** poprzez podpisanie następujących informacji:
```bash
StringToSign = VERB + "\n" +
Content-Encoding + "\n" +
@@ -128,7 +143,7 @@ Range + "\n" +
CanonicalizedHeaders +
CanonicalizedResource;
```
- Można wygenerować **shared key for table services** podpisując następujące informacje:
- Możliwe jest wygenerowanie **wspólnego klucza dla usług tabelowych** poprzez podpisanie następujących informacji:
```bash
StringToSign = VERB + "\n" +
Content-MD5 + "\n" +
@@ -150,7 +165,7 @@ CanonicalizedResource;
StringToSign = Date + "\n"
CanonicalizedResource
```
Aby użyć klucza, można to zrobić w nagłówku Authorization, stosując następującą składnię:
Następnie, aby użyć klucza, można to zrobić w nagłówku Authorization, stosując składnię:
```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
```
### **Shared Access Signature** (SAS)
### **Wspólny podpis dostępu** (SAS)
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.
Shared Access Signatures (SAS) to bezpieczne, ograniczone czasowo adresy URL, które **przyznają określone uprawnienia dostępu do zasobów** w koncie Azure Storage bez ujawniania kluczy dostępu konta. Podczas gdy access keys zapewniają pełny dostęp administracyjny do wszystkich zasobów, SAS pozwala na precyzyjną kontrolę poprzez określenie uprawnień (np. read lub write) i ustawienie czasu wygaśnięcia.
#### SAS Types
- **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.
- **User delegation SAS**: Tworzony jest z użyciem **Entra ID principal**, który podpisze SAS i przekaże uprawnienia z użytkownika do SAS. Może być używany tylko z **blob and data lake storage** ([docs](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas)). Możliwe jest **odwołanie** wszystkich wygenerowanych user delegated SAS.
- Nawet jeśli można wygenerować delegation SAS z "większymi" uprawnieniami niż te, które posiada użytkownik, jeśli principal ich nie ma, to nie zadziała (no privesc).
- **Service SAS**: Podpisywany jest przy użyciu jednego z storage account **access keys**. 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 jednym z storage account **access keys**. 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.
A SAS URL podpisany przez **access key** wygląda tak:
SAS URL podpisany za pomocą **access key** wygląda tak:
- `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`
A SAS URL podpisany jako **user delegation** wygląda tak:
SAS URL podpisany jako **user delegation** wygląda tak:
- `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`
Zwróć uwagę na niektóre **parametry http**:
- Parametr **`se`** wskazuje **datę wygaśnięcia** SAS
- Parametr **`sp`** wskazuje **uprawnienia** SAS
- **`sig`** to **podpis** weryfikujący SAS
- The **`se`** param wskazuje **datę wygaśnięcia** SAS
- The **`sp`** param wskazuje **uprawnienia** SAS
- The **`sig`** to **podpis** walidujący SAS
#### SAS permissions
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:
Podczas generowania SAS trzeba określić uprawnienia, które ma nadawać. W zależności od obiektu, dla którego generowany jest SAS, 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 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.
Azure Blob Storage obsługuje teraz SSH File Transfer Protocol (SFTP), umożliwiając bezpieczny transfer plików i zarządzanie bezpośrednio do Blob Storage bez konieczności stosowania rozwiązań niestandardowych lub produktów firm trzecich.
### Key Features
- 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.
- Security: SFTP wykorzystuje lokalne 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ę za pomocą:
- Azure-generated passwords
- Public-private SSH key pairs
- Granular Permissions: Uprawnienia takie jak Read, Write, Delete i List mogą być przypisane lokalnym użytkownikom dla maksymalnie 100 kontenerów.
- Networking Considerations: Połączenia SFTP są realizowane przez port 22. Azure obsługuje konfiguracje sieciowe takie jak firewalle, private endpoints lub virtual networks w celu zabezpieczenia ruchu SFTP.
### Setup Requirements
- 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).
- Hierarchical Namespace: HNS musi być włączony przy tworzeniu konta storage.
- Supported Encryption: Wymaga kryptograficznych algorytmów zatwierdzonych 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 home directories dla użytkowników, aby określić ich lokalizację startową w ramach kontenera.
- 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` | Odczyt zawartości pliku. |
| **Write** | `w` | Wysyłanie plików i tworzenie katalogów. |
| **Write** | `w` | Przesył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
## Enumeracja
{{#tabs }}
{{#tab name="az cli" }}
<details>
<summary>enumeracja az cli</summary>
<summary>az cli enumeracja</summary>
```bash
# Get storage accounts
az storage account list #Get the account name from here
@@ -420,25 +435,25 @@ New-AzStorageBlobSASToken `
{{#endtab }}
{{#endtabs }}
### Udostępnianie plików
### Udziały plików
{{#ref}}
az-file-shares.md
{{#endref}}
## Podwyższanie uprawnień
## Privilege Escalation
{{#ref}}
../az-privilege-escalation/az-storage-privesc.md
{{#endref}}
## Działania po eksploatacji
## Post Exploitation
{{#ref}}
../az-post-exploitation/az-blob-storage-post-exploitation.md
{{#endref}}
## Utrzymywanie dostępu
## 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)