# Az - Storage Privesc

{{#include ../../../banners/hacktricks-training.md}}

## Storage Privesc

Vir meer inligting oor berging, kyk:

{{#ref}}
../az-services/az-storage.md
{{#endref}}

### `Microsoft.Storage/storageAccounts/listkeys/action`

'n Hoofpersoon met hierdie toestemming sal in staat wees om die **toegang sleutels** van die berging rekeninge te lys (en die geheime waardes). Dit stel die hoofpersoon in staat om sy of haar voorregte oor die berging rekeninge te verhoog.
```bash
az storage account keys list --account-name <acc-name>
```
### `Microsoft.Storage/storageAccounts/regenerateKey/action`

'n Hoofpersoon met hierdie toestemming sal in staat wees om die nuwe geheime waarde van die **toegang sleutels** van die stoor rekeninge te hernu en te verkry. Dit stel die hoofpersoon in staat om sy/haar voorregte oor die stoor rekeninge te verhoog.

Boonop sal die gebruiker in die antwoord die waarde van die hernude sleutel en ook van die nie-hernuede sleutel ontvang:
```bash
az storage account keys renew --account-name <acc-name> --key key2
```
### `Microsoft.Storage/storageAccounts/write`

'n Hoofpersoon met hierdie toestemming sal in staat wees om 'n bestaande stoorrekening te skep of op te dateer deur enige instelling soos netwerkreëls of beleide op te dateer.
```bash
# 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 Spesifieke privesc

### `Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/write` | `Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/delete`

Die eerste toestemming laat toe om **immutability policies** in houers te **wysig** en die tweede om hulle te verwyder.

> [!NOTE]
> Let daarop dat as 'n immutability policy in 'n vergrendeltoestand is, jy nie een van beide kan doen nie.
```bash
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>
```
## Lêer gedeeltes spesifieke privesc

### `Microsoft.Storage/storageAccounts/fileServices/takeOwnership/action`

Dit behoort 'n gebruiker met hierdie toestemming in staat te stel om die eienaarskap van lêers binne die gedeelde lêerstelsel te neem.

### `Microsoft.Storage/storageAccounts/fileServices/fileshares/files/modifypermissions/action`

Dit behoort 'n gebruiker met hierdie toestemming in staat te stel om die toestemmings van lêers binne die gedeelde lêerstelsel te wysig.

### `Microsoft.Storage/storageAccounts/fileServices/fileshares/files/actassuperuser/action`

Dit behoort 'n gebruiker met hierdie toestemming in staat te stel om aksies binne 'n lêerstelsel as 'n supergebruiker uit te voer.

### `Microsoft.Storage/storageAccounts/localusers/write (Microsoft.Storage/storageAccounts/localusers/read)`

Met hierdie toestemming kan 'n aanvaller 'n nuwe plaaslike gebruiker vir 'n Azure Storage-rekening (gekonfigureer met hiërargiese naamruimte) skep en opdateer (indien hy die `Microsoft.Storage/storageAccounts/localusers/read` toestemming het), insluitend die spesifisering van die gebruiker se toestemmings en tuisgids. Hierdie toestemming is belangrik omdat dit die aanvaller in staat stel om hulself toegang tot 'n stoorrekening met spesifieke toestemmings soos lees (r), skryf (w), verwyder (d), en lys (l) en meer te verleen. Boonop kan die autentikasie metodes wat dit gebruik Azure-gegeneerde wagwoorde en SSH-sleutelpare wees. Daar is geen kontrole of 'n gebruiker reeds bestaan nie, so jy kan ander gebruikers wat reeds daar is oorskryf. Die aanvaller kan hul voorregte opgradeer en SSH-toegang tot die stoorrekening verkry, wat moontlik sensitiewe data blootstel of in gevaar stel.
```bash
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`

Met hierdie toestemming kan 'n aanvaller die wagwoord vir 'n plaaslike gebruiker in 'n Azure Storage-rekening hernu. Dit gee die aanvaller die vermoë om nuwe verifikasiekredens (soos 'n SSH of SFTP-wagwoord) vir die gebruiker te verkry. Deur hierdie kredensiale te benut, kan die aanvaller ongeoorloofde toegang tot die opslagrekening verkry, lêer oordragte uitvoer, of data binne die opslaghouers manipuleer. Dit kan lei tot datalek, korrupsie, of kwaadwillige wysiging van die inhoud van die opslagrekening.
```bash
az storage account local-user regenerate-password \
--account-name <STORAGE_ACCOUNT_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--name <LOCAL_USER_NAME>
```
Om toegang te verkry tot Azure Blob Storage via SFTP (is_hns_enabled moet waar wees) met 'n plaaslike gebruiker via SFTP kan jy (jy kan ook 'n ssh-sleutel gebruik om te verbind):
```bash
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`

Met hierdie toestemmings kan 'n aanvaller 'n verwyderde houer herstel deur sy verwyderde weergawe-ID te spesifiseer of spesifieke blobs binne 'n houer te onttrek, indien hulle voorheen sag-verwyder was. Hierdie privilige-eskalasie kan 'n aanvaller in staat stel om sensitiewe data te herstel wat bedoel was om permanent verwyder te word, wat moontlik kan lei tot ongemagtigde toegang.
```bash
#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`

Met hierdie toestemmings kan 'n aanvaller 'n verwyderde Azure-lêerdeling herstel deur sy verwyderde weergawe-ID te spesifiseer. Hierdie privilige-eskalasie kan 'n aanvaller in staat stel om sensitiewe data te herstel wat bedoel was om permanent verwyder te word, wat moontlik tot ongeoorloofde toegang kan lei.
```bash
az storage share-rm restore \
--storage-account <STORAGE_ACCOUNT_NAME> \
--name <FILE_SHARE_NAME> \
--deleted-version <VERSION>
```
## Ander interessante lykende toestemmings (TODO)

- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/manageOwnership/action: Verander eienaarskap van die blob
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/modifyPermissions/action: Wysig toestemmings van die blob
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action: Gee die resultaat van die blob opdrag
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/immutableStorage/runAsSuperUser/action

## Verwysings

- [https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/storage#microsoftstorage](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](https://learn.microsoft.com/en-us/azure/storage/blobs/secure-file-transfer-protocol-support)

{{#include ../../../banners/hacktricks-training.md}}
