Az - Storage Privesc
Reading time: 7 minutes
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
Storage Privesc
Per ulteriori informazioni sullo storage, controlla:
Microsoft.Storage/storageAccounts/listkeys/action
Un principale con questo permesso sarà in grado di elencare (e i valori segreti) delle chiavi di accesso degli account di storage. Consentendo al principale di elevare i propri privilegi sugli account di storage.
az storage account keys list --account-name <acc-name>
Microsoft.Storage/storageAccounts/regenerateKey/action
Un principale con questo permesso sarà in grado di rinnovare e ottenere il nuovo valore segreto delle chiavi di accesso degli account di archiviazione. Consentendo al principale di aumentare i propri privilegi sugli account di archiviazione.
Inoltre, nella risposta, l'utente riceverà il valore della chiave rinnovata e anche di quella non rinnovata:
az storage account keys renew --account-name <acc-name> --key key2
Microsoft.Storage/storageAccounts/write
Un principale con questo permesso sarà in grado di creare o aggiornare un account di archiviazione esistente aggiornando qualsiasi impostazione come regole di rete o politiche.
# e.g. set default action to allow so network restrictions are avoided
az storage account update --name <acc-name> --default-action Allow
# e.g. allow an IP address
az storage account update --name <acc-name> --add networkRuleSet.ipRules value=<ip-address>
Blobs Specific privesc
Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/write
| Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/delete
Il primo permesso consente di modificare le politiche di immutabilità nei contenitori e il secondo di eliminarle.
note
Nota che se una politica di immutabilità è in stato di blocco, non puoi fare nessuna delle due cose.
az storage container immutability-policy delete \
--account-name <STORAGE_ACCOUNT_NAME> \
--container-name <CONTAINER_NAME> \
--resource-group <RESOURCE_GROUP>
az storage container immutability-policy update \
--account-name <STORAGE_ACCOUNT_NAME> \
--container-name <CONTAINER_NAME> \
--resource-group <RESOURCE_GROUP> \
--period <NEW_RETENTION_PERIOD_IN_DAYS>
File shares specific privesc
Microsoft.Storage/storageAccounts/fileServices/takeOwnership/action
Questo dovrebbe consentire a un utente con questo permesso di poter prendere possesso dei file all'interno del filesystem condiviso.
Microsoft.Storage/storageAccounts/fileServices/fileshares/files/modifypermissions/action
Questo dovrebbe consentire a un utente con questo permesso di poter modificare i permessi dei file all'interno del filesystem condiviso.
Microsoft.Storage/storageAccounts/fileServices/fileshares/files/actassuperuser/action
Questo dovrebbe consentire a un utente con questo permesso di poter eseguire azioni all'interno di un filesystem come superutente.
Microsoft.Storage/storageAccounts/localusers/write (Microsoft.Storage/storageAccounts/localusers/read)
Con questo permesso, un attaccante può creare e aggiornare (se ha il permesso Microsoft.Storage/storageAccounts/localusers/read
) un nuovo utente locale per un account Azure Storage (configurato con namespace gerarchico), inclusa la specifica dei permessi e della directory home dell'utente. Questo permesso è significativo perché consente all'attaccante di concedere a se stesso l'accesso a un account di archiviazione con permessi specifici come lettura (r), scrittura (w), eliminazione (d) e elenco (l) e altro ancora. Inoltre, i metodi di autenticazione che utilizza possono essere password generate da Azure e coppie di chiavi SSH. Non c'è alcun controllo se un utente esiste già, quindi è possibile sovrascrivere altri utenti già presenti. L'attaccante potrebbe elevare i propri privilegi e ottenere accesso SSH all'account di archiviazione, esponendo o compromettendo potenzialmente dati sensibili.
az storage account local-user create \
--account-name <STORAGE_ACCOUNT_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--name <LOCAL_USER_NAME> \
--permission-scope permissions=rwdl service=blob resource-name=<CONTAINER_NAME> \
--home-directory <HOME_DIRECTORY> \
--has-ssh-key false/true # Depends on the auth method to use
Microsoft.Storage/storageAccounts/localusers/regeneratePassword/action
Con questo permesso, un attaccante può rigenerare la password per un utente locale in un account Azure Storage. Questo concede all'attaccante la possibilità di ottenere nuove credenziali di autenticazione (come una password SSH o SFTP) per l'utente. Sfruttando queste credenziali, l'attaccante potrebbe ottenere accesso non autorizzato all'account di archiviazione, eseguire trasferimenti di file o manipolare i dati all'interno dei contenitori di archiviazione. Ciò potrebbe comportare perdite di dati, corruzione o modifica malevola del contenuto dell'account di archiviazione.
az storage account local-user regenerate-password \
--account-name <STORAGE_ACCOUNT_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--name <LOCAL_USER_NAME>
Per accedere ad Azure Blob Storage tramite SFTP (is_hns_enabled dovrebbe essere true) utilizzando un utente locale tramite SFTP puoi (puoi anche utilizzare una chiave ssh per connetterti):
sftp <storage-account-name>.<local-user-name>@<storage-account-name>.blob.core.windows.net
#regenerated-password
Microsoft.Storage/storageAccounts/restoreBlobRanges/action
, Microsoft.Storage/storageAccounts/blobServices/containers/read
, Microsoft.Storage/storageAccounts/read
&& Microsoft.Storage/storageAccounts/listKeys/action
Con queste autorizzazioni, un attaccante può ripristinare un contenitore eliminato specificando il suo ID di versione eliminata o annullare l'eliminazione di specifici blob all'interno di un contenitore, se erano stati precedentemente eliminati in modo soft. Questa escalation di privilegi potrebbe consentire a un attaccante di recuperare dati sensibili che dovevano essere eliminati permanentemente, portando potenzialmente a accessi non autorizzati.
#Restore the soft deleted container
az storage container restore \
--account-name <STORAGE_ACCOUNT_NAME> \
--name <CONTAINER_NAME> \
--deleted-version <VERSION>
#Restore the soft deleted blob
az storage blob undelete \
--account-name <STORAGE_ACCOUNT_NAME> \
--container-name <CONTAINER_NAME> \
--name "fileName.txt"
Microsoft.Storage/storageAccounts/fileServices/shares/restore/action
&& Microsoft.Storage/storageAccounts/read
Con questi permessi, un attaccante può ripristinare una condivisione file di Azure eliminata specificando il suo ID versione eliminata. Questa escalation di privilegi potrebbe consentire a un attaccante di recuperare dati sensibili che dovevano essere eliminati permanentemente, portando potenzialmente a un accesso non autorizzato.
az storage share-rm restore \
--storage-account <STORAGE_ACCOUNT_NAME> \
--name <FILE_SHARE_NAME> \
--deleted-version <VERSION>
Altre autorizzazioni interessanti (TODO)
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/manageOwnership/action: Cambia la proprietà del blob
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/modifyPermissions/action: Modifica le autorizzazioni del blob
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action: Restituisce il risultato del comando blob
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/immutableStorage/runAsSuperUser/action
Riferimenti
- https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/storage#microsoftstorage
- https://learn.microsoft.com/en-us/azure/storage/blobs/secure-file-transfer-protocol-support
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.