Az - Storage Privesc

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

Storage Privesc

Depolama hakkında daha fazla bilgi için kontrol edin:

Az - Storage Accounts & Blobs

Microsoft.Storage/storageAccounts/listkeys/action

Bu izne sahip bir yetkili, depolama hesaplarının erişim anahtarlarının (ve gizli değerlerinin) listesini alabilecektir. Bu, yetkilinin depolama hesapları üzerindeki ayrıcalıklarını artırmasına olanak tanır.

az storage account keys list --account-name <acc-name>

Microsoft.Storage/storageAccounts/regenerateKey/action

Bu izne sahip bir yetkili, depolama hesaplarının erişim anahtarlarının yeni gizli değerini yenileme ve alma yeteneğine sahip olacaktır. Bu, yetkilinin depolama hesapları üzerindeki ayrıcalıklarını artırmasına olanak tanır.

Ayrıca, yanıtında kullanıcı, yenilenen anahtarın değerini ve yenilenmeyen anahtarın değerini de alacaktır:

az storage account keys renew --account-name <acc-name> --key key2

Microsoft.Storage/storageAccounts/write

Bu izne sahip bir kullanıcı, mevcut bir depolama hesabını oluşturabilir veya güncelleyebilir ve ağ kuralları veya politikalar gibi herhangi bir ayarı güncelleyebilir.

# 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 Özel privesc

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

İlk izin, konteynerlerde değiştirilemezlik politikalarını değiştirmeye, ikincisi ise bunları silmeye olanak tanır.

Note

Bir değiştirilemezlik politikası kilit durumundaysa, her ikisini de yapamazsınız.

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>

Dosya paylaşımlarına özgü privesc

Microsoft.Storage/storageAccounts/fileServices/takeOwnership/action

Bu, bu izne sahip bir kullanıcının paylaşılan dosya sistemindeki dosyaların sahipliğini alabilmesini sağlamalıdır.

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

Bu, bu izne sahip bir kullanıcının paylaşılan dosya sistemindeki dosyaların izinlerini değiştirebilmesini sağlamalıdır.

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

Bu, bu izne sahip bir kullanıcının bir dosya sisteminde süper kullanıcı olarak işlem yapabilmesini sağlamalıdır.

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

Bu izinle, bir saldırgan, bir Azure Storage hesabı için yeni bir yerel kullanıcı oluşturabilir ve güncelleyebilir (eğer Microsoft.Storage/storageAccounts/localusers/read iznine sahipse), kullanıcının izinlerini ve ana dizinini belirleyebilir. Bu izin önemlidir çünkü saldırgana, okuma (r), yazma (w), silme (d) ve listeleme (l) gibi belirli izinlere sahip bir depolama hesabına kendine yetki verme imkanı tanır. Ayrıca, bunun kullandığı kimlik doğrulama yöntemleri Azure tarafından üretilen şifreler ve SSH anahtar çiftleri olabilir. Zaten var olan bir kullanıcının kontrolü yapılmaz, bu nedenle mevcut diğer kullanıcıların üzerine yazabilirsiniz. Saldırgan, ayrıcalıklarını artırabilir ve depolama hesabına SSH erişimi kazanarak hassas verileri açığa çıkarabilir veya tehlikeye atabilir.

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

Bu izinle, bir saldırgan Azure Storage hesabındaki bir yerel kullanıcı için şifreyi yeniden oluşturabilir. Bu, saldırgana kullanıcı için yeni kimlik doğrulama bilgileri (örneğin, bir SSH veya SFTP şifresi) elde etme yetkisi verir. Bu kimlik bilgilerini kullanarak, saldırgan depolama hesabına yetkisiz erişim sağlayabilir, dosya transferleri gerçekleştirebilir veya depolama konteynerleri içindeki verileri manipüle edebilir. Bu, veri sızıntısına, bozulmaya veya depolama hesabı içeriğinin kötü niyetli bir şekilde değiştirilmesine yol açabilir.

az storage account local-user regenerate-password \
--account-name <STORAGE_ACCOUNT_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--name <LOCAL_USER_NAME>

Azure Blob Storage’a SFTP üzerinden erişmek için (is_hns_enabled true olmalıdır) yerel bir kullanıcı aracılığıyla SFTP kullanarak (bağlanmak için ssh anahtarı da kullanabilirsiniz):

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

Bu izinlerle bir saldırgan, silinmiş bir konteyneri silinmiş sürüm kimliğini belirterek geri yükleyebilir veya daha önce yumuşak bir şekilde silinmişse bir konteyner içindeki belirli blob’ları geri alabilir. Bu ayrıcalık yükseltmesi, bir saldırganın kalıcı olarak silinmesi gereken hassas verilere erişimini geri kazanmasına izin verebilir ve bu da yetkisiz erişime yol açabilir.

#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

Bu izinlerle, bir saldırgan silinmiş bir Azure dosya paylaşımını silinmiş sürüm kimliğini belirterek geri yükleyebilir. Bu ayrıcalık yükseltmesi, bir saldırganın kalıcı olarak silinmesi gereken hassas verilere erişimini geri kazanmasına olanak tanıyabilir ve bu da yetkisiz erişime yol açabilir.

az storage share-rm restore \
--storage-account <STORAGE_ACCOUNT_NAME> \
--name <FILE_SHARE_NAME> \
--deleted-version <VERSION>

Diğer ilginç görünen izinler (TODO)

  • Microsoft.Storage/storageAccounts/blobServices/containers/blobs/manageOwnership/action: Blob’un sahipliğini değiştirir
  • Microsoft.Storage/storageAccounts/blobServices/containers/blobs/modifyPermissions/action: Blob’un izinlerini değiştirir
  • Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action: Blob komutunun sonucunu döndürür
  • Microsoft.Storage/storageAccounts/blobServices/containers/blobs/immutableStorage/runAsSuperUser/action

Referanslar

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin