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

This commit is contained in:
Translator
2026-01-13 15:04:10 +00:00
parent c3eb77f4d5
commit 6c5b0a055a

View File

@@ -4,94 +4,114 @@
## Informazioni di base
Gli Azure Storage Accounts sono servizi fondamentali in Microsoft Azure che forniscono **storage cloud scalabile, sicuro e altamente disponibile per vari tipi di dati**, inclusi blob (oggetti binari di grandi dimensioni), file, code e tabelle. Servono come contenitori che raggruppano questi diversi servizi di storage sotto un unico namespace per una gestione facile.
Azure Storage Accounts sono servizi fondamentali in Microsoft Azure che forniscono storage cloud scalabile, sicuro e altamente disponibile per vari tipi di dati, inclusi blobs (oggetti binari di grandi dimensioni), file, queue e table. Servono come contenitori che raggruppano questi diversi servizi di storage sotto un unico namespace per una gestione semplice.
**Opzioni di configurazione principali**:
**Principali opzioni di configurazione**:
- Ogni storage account deve avere un **nome unico in tutti gli Azure**.
- Ogni storage account deve avere un **nome univoco in tutto Azure**.
- Ogni storage account è distribuito in una **regione** o in una zona estesa di Azure.
- È possibile selezionare la versione **premium** dello storage account per migliori prestazioni.
- È possibile scegliere tra **4 tipi di ridondanza per proteggere** contro guasti di rack, disco e datacenter.
- È possibile scegliere tra **4 tipi di ridondanza per proteggere** da guasti a livello di rack, disco e datacenter.
**Opzioni di configurazione della sicurezza**:
- **Richiedere trasferimento sicuro per le operazioni API REST**: Richiedere TLS in qualsiasi comunicazione con lo storage.
- **Consente di abilitare l'accesso anonimo su contenitori individuali**: In caso contrario, non sarà possibile abilitare l'accesso anonimo in futuro.
- **Abilitare l'accesso con chiave dello storage account**: In caso contrario, l'accesso con chiavi condivise sarà vietato.
- **Versione minima TLS**.
- **Ambito consentito per le operazioni di copia**: Consenti da qualsiasi storage account, da qualsiasi storage account dello stesso tenant Entra o da storage account con endpoint privati nella stessa rete virtuale.
- **Require secure transfer for REST API operations**: Richiede TLS in qualsiasi comunicazione con lo storage.
- **Allows enabling anonymous access on individual containers**: Se disabilitato, non sarà possibile abilitare l'accesso anonimo in futuro.
- **Enable storage account key access**: Se disabilitato, l'accesso con Shared Keys sarà proibito.
- **Minimum TLS version**
- **Permitted scope for copy operations**: Permette da qualsiasi storage account, da qualsiasi storage account dello stesso Entra tenant o da storage account con private endpoints nella stessa virtual network.
**Opzioni di Blob Storage**:
**Opzioni Blob Storage**:
- **Consenti replicazione cross-tenant**.
- **Livello di accesso**: Hot (dati accessibili frequentemente), Cool e Cold (dati raramente accessibili).
- **Allow cross-tenant replication**
- **Access tier**: Hot (dati accessati frequentemente), Cool e Cold (dati raramente accessati)
**Opzioni di rete**:
**Opzioni di networking**:
- **Accesso di rete**:
- Consenti da tutte le reti.
- Consenti da reti virtuali e indirizzi IP selezionati.
- Disabilita l'accesso pubblico e utilizza l'accesso privato.
- **Endpoint privati**: Consente una connessione privata allo storage account da una rete virtuale.
- **Network access**:
- Allow from all networks
- Allow from selected virtual networks and IP addresses
- Disable public access and use private access
- **Private endpoints**: Permette una connessione privata allo storage account da una virtual network
**Opzioni di protezione dei dati**:
- **Ripristino point-in-time per contenitori**: Consente di ripristinare i contenitori a uno stato precedente.
- Richiede versioning, change feed e blob soft delete per essere abilitati.
- **Abilitare soft delete per i blob**: Abilita un periodo di retention in giorni per i blob eliminati (anche sovrascritti).
- **Abilitare soft delete per i contenitori**: Abilita un periodo di retention in giorni per i contenitori eliminati.
- **Abilitare soft delete per le condivisioni di file**: Abilita un periodo di retention in giorni per le condivisioni di file eliminate.
- **Abilitare versioning per i blob**: Mantieni le versioni precedenti dei tuoi blob.
- **Abilitare blob change feed**: Tieni traccia dei log di creazione, modifica ed eliminazione dei blob.
- **Abilitare il supporto per l'immutabilità a livello di versione**: Consente di impostare una politica di retention basata sul tempo a livello di account che si applicherà a tutte le versioni dei blob.
- Il supporto per l'immutabilità a livello di versione e il ripristino point-in-time per i contenitori non possono essere abilitati simultaneamente.
- **Point-in-time restore for containers**: Consente di ripristinare i container a uno stato precedente.
- Richiede l'abilitazione di versioning, change feed e blob soft delete.
- **Enable soft delete for blobs**: Abilita un periodo di retention (in giorni) per i blob eliminati (anche sovrascritti).
- **Enable soft delete for containers**: Abilita un periodo di retention (in giorni) per i container eliminati.
- **Enable soft delete for file shares**: Abilita un periodo di retention (in giorni) per i file share eliminati.
- **Enable versioning for blobs**: Mantiene versioni precedenti dei tuoi blob.
- **Enable blob change feed**: Conserva log di create, modification e delete dei blob.
- **Enable version-level immutability support**: Consente di impostare una policy di retention basata sul tempo a livello di account che si applicherà a tutte le versioni dei blob.
- Version-level immutability support e point-in-time restore for containers non possono essere abilitati simultaneamente.
**Opzioni di configurazione della crittografia**:
**Opzioni di crittografia**:
- **Tipo di crittografia**: È possibile utilizzare chiavi gestite da Microsoft (MMK) o chiavi gestite dal cliente (CMK).
- **Abilitare la crittografia dell'infrastruttura**: Consente di crittografare i dati "per maggiore sicurezza".
- **Encryption type**: È possibile usare Microsoft-managed keys (MMK) o Customer-managed keys (CMK).
- **Enable infrastructure encryption**: Permette di cifrare i dati due volte "per maggiore sicurezza".
### Endpoint di storage
### Storage endpoints
<table data-header-hidden><thead><tr><th width="197">Servizio di storage</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>
<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>
### Esposizione pubblica
Se "Consenti accesso pubblico ai blob" è **abilitato** (disabilitato per impostazione predefinita), durante la creazione di un contenitore è possibile:
Se "Allow Blob public access" è **enabled** (disabled by default), quando si crea un container è possibile:
- Dare **accesso pubblico per leggere i blob** (è necessario conoscere il nome).
- **Elencare i blob del contenitore** e **leggerli**.
- Renderlo completamente **privato**.
- Dare **accesso pubblico in lettura ai blob** (è necessario conoscere il nome).
- **Listare i blob del container** e **leggerli**.
- Rendersi completamente **privato**.
<figure><img src="https://lh7-rt.googleusercontent.com/slidesz/AGV_vUfoetUnYBPWQpRrWNnnlbqWpl8Rdoaeg5uBrCVlvcNDlnKwQHjZe8nUb2SfPspBgbu-lCZLmUei-hFi_Jl2eKbaxUtBGTjdUSDmkrcwr90VZkmuMjk9tyh92p75btfyzGiUTa0-=s2048?key=m8TV59TrCFPlkiNnmhYx3aZt" alt=""><figcaption></figcaption></figure>
### Connettersi allo Storage
#### Auditing anonymous blob exposure
Se trovi qualche **storage** a cui puoi connetterti, puoi utilizzare lo strumento [**Microsoft Azure Storage Explorer**](https://azure.microsoft.com/es-es/products/storage/storage-explorer/) per farlo.
- **Individuare gli storage accounts** che possono esporre dati: `az storage account list | jq -r '.[] | select(.properties.allowBlobPublicAccess==true) | .name'`. Se `allowBlobPublicAccess` è `false` non puoi rendere i container pubblici.
- **Ispezionare gli account a rischio** per confermare il flag e altre impostazioni deboli: `az storage account show --name <acc> --query '{allow:properties.allowBlobPublicAccess, minTls:properties.minimumTlsVersion}'`.
- **Enumerare l'esposizione a livello di container** dove il flag è abilitato:
```bash
az storage container list --account-name <acc> \
--query '[].{name:name, access:properties.publicAccess}'
```
- `"Blob"`: letture anonime consentite **solo quando il nome del blob è noto** (nessuna enumerazione).
- `"Container"`: anonimo **elenco + lettura** di ogni blob.
- `null`: privato; autenticazione richiesta.
- **Dimostrare l'accesso** senza credenziali:
- Se `publicAccess` è `Container`, l'elenco anonimo funziona: `curl "https://<acc>.blob.core.windows.net/<container>?restype=container&comp=list"`.
- Per entrambi `Blob` e `Container`, il download anonimo del blob funziona quando il nome è noto:
```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>"
```
### Connettersi allo storage
## Accesso allo Storage <a href="#about-blob-storage" id="about-blob-storage"></a>
Se trovi uno **storage** a cui puoi connetterti, puoi usare lo strumento [**Microsoft Azure Storage Explorer**](https://azure.microsoft.com/es-es/products/storage/storage-explorer/) per farlo.
## Accesso allo storage <a href="#about-blob-storage" id="about-blob-storage"></a>
### RBAC
È possibile utilizzare i principi di Entra ID con **ruoli RBAC** per accedere agli storage account ed è il modo raccomandato.
È possibile usare i principal di Entra ID con i **ruoli RBAC** per accedere agli storage accounts ed è il metodo raccomandato.
### Chiavi di accesso
Gli storage account hanno chiavi di accesso che possono essere utilizzate per accedervi. Questo fornisce **accesso completo allo storage account.**
Gli account di storage dispongono di chiavi di accesso che possono essere usate per accederci. Questo fornisce l'**accesso completo all'account di storage.**
<figure><img src="../../../images/image (5).png" alt=""><figcaption></figcaption></figure>
### **Chiavi condivise & Chiavi condivise Lite**
### **Shared Keys & Lite Shared Keys**
È possibile [**generare Chiavi Condivise**](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key) firmate con le chiavi di accesso per autorizzare l'accesso a determinate risorse tramite un URL firmato.
È possibile [**generare Shared Keys**](https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-with-shared-key) firmate con le chiavi di accesso per autorizzare l'accesso a risorse specifiche tramite una URL firmata.
> [!NOTE]
> Nota che la parte `CanonicalizedResource` rappresenta la risorsa dei servizi di storage (URI). E se qualche parte nell'URL è codificata, dovrebbe essere codificata anche all'interno del `CanonicalizedResource`.
> Nota che la parte `CanonicalizedResource` rappresenta la risorsa del servizio di storage (URI). E se qualsiasi parte dell'URL è encoded, dovrebbe essere codificata anche dentro il `CanonicalizedResource`.
> [!NOTE]
> Questo è **utilizzato per impostazione predefinita da `az` cli** per autenticare le richieste. Per farlo utilizzare le credenziali del principale Entra ID, indica il parametro `--auth-mode login`.
> Questo è **usato di default dalla `az` cli** per autenticare le richieste. Per farla usare le credenziali del principal Entra ID indica il parametro `--auth-mode login`.
- È possibile generare una **chiave condivisa per i servizi blob, queue e file** firmando le seguenti informazioni:
- È possibile generare una **shared key per i servizi blob, queue e file** firmando le seguenti informazioni:
```bash
StringToSign = VERB + "\n" +
Content-Encoding + "\n" +
@@ -108,7 +128,7 @@ Range + "\n" +
CanonicalizedHeaders +
CanonicalizedResource;
```
- È possibile generare una **chiave condivisa per i servizi di tabella** firmando le seguenti informazioni:
- È possibile generare una **shared key for table services** firmando le seguenti informazioni:
```bash
StringToSign = VERB + "\n" +
Content-MD5 + "\n" +
@@ -116,7 +136,7 @@ Content-Type + "\n" +
Date + "\n" +
CanonicalizedResource;
```
- È possibile generare una **lite shared key per i servizi blob, queue e file** firmando le seguenti informazioni:
- È possibile generare una **lite shared key for blob, queue and file services** firmando le seguenti informazioni:
```bash
StringToSign = VERB + "\n" +
Content-MD5 + "\n" +
@@ -130,7 +150,7 @@ CanonicalizedResource;
StringToSign = Date + "\n"
CanonicalizedResource
```
Quindi, per utilizzare la chiave, può essere fatto nell'intestazione Authorization seguendo la sintassi:
Quindi, per usare la chiave, si può inserirla nell'header Authorization seguendo la sintassi:
```bash
Authorization="[SharedKey|SharedKeyLite] <AccountName>:<Signature>"
#e.g.
@@ -144,73 +164,76 @@ Content-Length: 0
```
### **Shared Access Signature** (SAS)
Le Shared Access Signatures (SAS) sono URL sicuri e limitati nel tempo che **concedono permessi specifici per accedere a risorse** in un account di Azure Storage senza esporre le chiavi di accesso dell'account. Mentre le chiavi di accesso forniscono accesso amministrativo completo a tutte le risorse, la SAS consente un controllo granulare specificando i permessi (come lettura o scrittura) e definendo un tempo di scadenza.
Shared Access Signatures (SAS) sono URL sicuri e limitati nel tempo che **concedono permessi specifici per accedere alle risorse** in un Azure Storage account senza esporre le access keys dell'account. Mentre le access keys forniscono accesso amministrativo completo a tutte le risorse, SAS permette un controllo granulare specificando i permessi (come read o write) e definendo un tempo di scadenza.
#### Tipi di SAS
#### SAS Types
- **User delegation SAS**: Questa viene creata da un **Entra ID principal** che firmerà la SAS e delega i permessi dall'utente alla SAS. Può essere utilizzata solo con **blob e data lake storage** ([docs](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas)). È possibile **revocare** tutte le SAS delegate generate dall'utente.
- Anche se è possibile generare una SAS di delega con "più" permessi di quelli che l'utente ha. Tuttavia, se il principal non li ha, non funzionerà (no privesc).
- **Service SAS**: Questa è firmata utilizzando una delle **chiavi di accesso** dell'account di storage. Può essere utilizzata per concedere accesso a risorse specifiche in un singolo servizio di storage. Se la chiave viene rinnovata, la SAS smetterà di funzionare.
- **Account SAS**: È anch'essa firmata con una delle **chiavi di accesso** dell'account di storage. Concede accesso a risorse attraverso i servizi di un account di storage (Blob, Queue, Table, File) e può includere operazioni a livello di servizio.
- **User delegation SAS**: Viene creato da un **Entra ID principal** che firmerà la SAS e delegherà i permessi dall'utente alla SAS. Può essere utilizzato solo con **blob and data lake storage** ([docs](https://learn.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas)). È possibile **revocare** tutte le user delegated SAS generate.
- È possibile generare una delegation SAS con permessi "maggiori" rispetto a quelli dell'utente. Tuttavia, se il principal non li possiede, non funzionerà (no privesc).
- **Service SAS**: È firmata usando una delle storage account **access keys**. Può essere usata per concedere accesso a risorse specifiche in un singolo servizio di storage. Se la key viene rinnovata, la SAS smetterà di funzionare.
- **Account SAS**: Anch'essa è firmata con una delle storage account **access keys**. Concede accesso a risorse attraverso i servizi dell'account di storage (Blob, Queue, Table, File) e può includere operazioni a livello di servizio.
Un URL SAS firmato da una **chiave di accesso** appare così:
A SAS URL signed by an **access key** looks like this:
- `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`
Un URL SAS firmato come **user delegation** appare così:
A SAS URL signed as a **user delegation** looks like this:
- `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`
Nota alcuni **parametri http**:
Note some **http params**:
- Il parametro **`se`** indica la **data di scadenza** della SAS
- Il parametro **`sp`** indica i **permessi** della SAS
- Il **`sig`** è la **firma** che convalida la SAS
- Il **`sig`** è la **signature** che valida la SAS
#### Permessi SAS
#### SAS permissions
Quando si genera una SAS è necessario indicare i permessi che dovrebbe concedere. A seconda dell'oggetto su cui viene generata la SAS, potrebbero essere inclusi permessi diversi. Ad esempio:
Quando si genera una SAS è necessario indicare i permessi che deve concedere. A seconda dell'oggetto su cui la SAS viene generata, possono essere inclusi permessi differenti. Per esempio:
- (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
## Supporto SFTP per Azure Blob Storage
## SFTP Support for Azure Blob Storage
Azure Blob Storage ora supporta il protocollo SSH File Transfer Protocol (SFTP), consentendo il trasferimento e la gestione sicura dei file direttamente su Blob Storage senza richiedere soluzioni personalizzate o prodotti di terze parti.
Azure Blob Storage ora supporta lo SSH File Transfer Protocol (SFTP), permettendo il trasferimento e la gestione sicuri dei file direttamente su Blob Storage senza richiedere soluzioni custom o prodotti di terze parti.
### Caratteristiche principali
### Key Features
- Supporto del protocollo: SFTP funziona con gli account di Blob Storage configurati con namespace gerarchico (HNS). Questo organizza i blob in directory e sottodirectory per una navigazione più semplice.
- Sicurezza: SFTP utilizza identità utente locali per l'autenticazione e non si integra con RBAC o ABAC. Ogni utente locale può autenticarsi tramite:
- Password generate da Azure
- Coppie di chiavi SSH pubbliche-private
- Permessi granulari: Permessi come Lettura, Scrittura, Cancellazione e Elenco possono essere assegnati agli utenti locali per un massimo di 100 contenitori.
- Considerazioni di rete: Le connessioni SFTP vengono effettuate tramite la porta 22. Azure supporta configurazioni di rete come firewall, endpoint privati o reti virtuali per proteggere il traffico SFTP.
- Protocol Support: SFTP funziona con account Blob Storage configurati con hierarchical namespace (HNS). Questo organizza i blob in directory e sottodirectory per una navigazione più semplice.
- Security: SFTP usa identità utente locali per l'autenticazione e non si integra con RBAC o ABAC. Ogni utente locale può autenticarsi tramite:
- Azure-generated passwords
- Public-private SSH key pairs
- Granular Permissions: Permessi come Read, Write, Delete e List possono essere assegnati agli utenti locali per fino a 100 container.
- Networking Considerations: Le connessioni SFTP avvengono tramite la porta 22. Azure supporta configurazioni di rete come firewall, private endpoints o virtual networks per proteggere il traffico SFTP.
### Requisiti di configurazione
### Setup Requirements
- Namespace gerarchico: L'HNS deve essere abilitato durante la creazione dell'account di storage.
- Crittografia supportata: Richiede algoritmi crittografici approvati dal Microsoft Security Development Lifecycle (SDL) (ad es., rsa-sha2-256, ecdsa-sha2-nistp256).
- Configurazione SFTP:
- Hierarchical Namespace: HNS deve essere abilitato durante la creazione dell'account di storage.
- Supported Encryption: Richiede algoritmi crittografici approvati dal Microsoft Security Development Lifecycle (SDL) (es. rsa-sha2-256, ecdsa-sha2-nistp256).
- SFTP Configuration:
- Abilitare SFTP sull'account di storage.
- Creare identità utente locali con permessi appropriati.
- Configurare le directory home per gli utenti per definire la loro posizione di partenza all'interno del contenitore.
- Configurare le home directory per gli utenti per definire la loro posizione iniziale all'interno del container.
### Permessi
### Permissions
| Permesso | Simbolo | Descrizione |
| --------------------- | ------- | ------------------------------------ |
| **Lettura** | `r` | Leggi il contenuto del file. |
| **Scrittura** | `w` | Carica file e crea directory. |
| **Elenco** | `l` | Elenca i contenuti delle directory. |
| **Cancellazione** | `d` | Cancella file o directory. |
| **Creazione** | `c` | Crea file o directory. |
| **Modifica proprietà**| `o` | Cambia l'utente o il gruppo proprietario. |
| **Modifica permessi** | `p` | Cambia le ACL su file o directory. |
| Permesso | Simbolo | Descrizione |
| ---------------------- | ------ | ------------------------------------ |
| **Read** | `r` | Legge il contenuto del file. |
| **Write** | `w` | Carica file e crea directory. |
| **List** | `l` | Elenca il contenuto delle directory. |
| **Delete** | `d` | Elimina file o directory. |
| **Create** | `c` | Crea file o directory. |
| **Modify Ownership** | `o` | Modifica l'utente o il gruppo proprietario. |
| **Modify Permissions** | `p` | Modifica le ACL su file o directory. |
## Enumerazione
{{#tabs }}
{{#tab name="az cli" }}
<details>
<summary>az cli enumerazione</summary>
```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 <storage-account-name> \
--resource-group <resource-group-name>
```
</details>
{{#endtab }}
{{#tab name="Az PowerShell" }}
```bash
<details>
<summary>Az PowerShell enumerazione</summary>
```powershell
# Get storage accounts
Get-AzStorageAccount | fl
# Get rules to access the storage account
@@ -387,16 +415,18 @@ New-AzStorageBlobSASToken `
-Permission racwdl `
-ExpiryTime (Get-Date "2024-12-31T23:59:00Z")
```
</details>
{{#endtab }}
{{#endtabs }}
### Condivisioni di File
### Condivisioni di file
{{#ref}}
az-file-shares.md
{{#endref}}
## Escalation dei Privilegi
## Privilege Escalation
{{#ref}}
../az-privilege-escalation/az-storage-privesc.md
@@ -408,7 +438,7 @@ az-file-shares.md
../az-post-exploitation/az-blob-storage-post-exploitation.md
{{#endref}}
## Persistenza
## Persistence
{{#ref}}
../az-persistence/az-storage-persistence.md
@@ -419,5 +449,9 @@ 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: 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}}