Az - Storage Privesc
Reading time: 7 minutes
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Storage Privesc
Für weitere Informationen über Speicher siehe:
Microsoft.Storage/storageAccounts/listkeys/action
Ein Principal mit dieser Berechtigung kann die Zugriffsschlüssel der Speicherkonten auflisten (und die geheimen Werte). Dies ermöglicht es dem Principal, seine Berechtigungen über die Speicherkonten zu eskalieren.
az storage account keys list --account-name <acc-name>
Microsoft.Storage/storageAccounts/regenerateKey/action
Ein Principal mit dieser Berechtigung kann die Zugriffsschlüssel der Speicherkonten erneuern und den neuen geheimen Wert abrufen. Dies ermöglicht es dem Principal, seine Berechtigungen über die Speicherkonten zu eskalieren.
Darüber hinaus erhält der Benutzer in der Antwort den Wert des erneuerten Schlüssels sowie den des nicht erneuerten Schlüssels:
az storage account keys renew --account-name <acc-name> --key key2
Microsoft.Storage/storageAccounts/write
Ein Principal mit dieser Berechtigung kann ein bestehendes Speicherkonto erstellen oder aktualisieren und dabei Einstellungen wie Netzwerkregeln oder Richtlinien ändern.
# 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 spezifische Privilegieneskalation
Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/write
| Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/delete
Die erste Berechtigung erlaubt es, Unveränderlichkeitspolitiken in Containern zu ändern und die zweite, sie zu löschen.
note
Beachten Sie, dass Sie, wenn sich eine Unveränderlichkeitspolitik im Sperrstatus befindet, keines von beidem tun können.
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>
Dateifreigaben spezifische Privilegieneskalation
Microsoft.Storage/storageAccounts/fileServices/takeOwnership/action
Dies sollte es einem Benutzer mit dieser Berechtigung ermöglichen, das Eigentum an Dateien im gemeinsamen Dateisystem zu übernehmen.
Microsoft.Storage/storageAccounts/fileServices/fileshares/files/modifypermissions/action
Dies sollte es einem Benutzer mit dieser Berechtigung ermöglichen, die Berechtigungen von Dateien im gemeinsamen Dateisystem zu ändern.
Microsoft.Storage/storageAccounts/fileServices/fileshares/files/actassuperuser/action
Dies sollte es einem Benutzer mit dieser Berechtigung ermöglichen, Aktionen innerhalb eines Dateisystems als Superuser auszuführen.
Microsoft.Storage/storageAccounts/localusers/write (Microsoft.Storage/storageAccounts/localusers/read)
Mit dieser Berechtigung kann ein Angreifer einen neuen lokalen Benutzer für ein Azure Storage-Konto (konfiguriert mit hierarchischem Namensraum) erstellen und aktualisieren (wenn er die Berechtigung Microsoft.Storage/storageAccounts/localusers/read
hat), einschließlich der Angabe der Berechtigungen und des Heimatverzeichnisses des Benutzers. Diese Berechtigung ist bedeutend, da sie dem Angreifer ermöglicht, sich selbst ein Speicher-Konto mit spezifischen Berechtigungen wie Lesen (r), Schreiben (w), Löschen (d) und Auflisten (l) und mehr zu gewähren. Zusätzlich können die Authentifizierungsmethoden, die hierfür verwendet werden, Azure-generierte Passwörter und SSH-Schlüsselpaare sein. Es gibt keine Überprüfung, ob ein Benutzer bereits existiert, sodass Sie andere Benutzer, die bereits vorhanden sind, überschreiben können. Der Angreifer könnte seine Privilegien eskalieren und SSH-Zugriff auf das Speicher-Konto erhalten, was potenziell sensible Daten offenlegen oder gefährden könnte.
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
Mit dieser Berechtigung kann ein Angreifer das Passwort für einen lokalen Benutzer in einem Azure Storage-Konto regenerieren. Dies gewährt dem Angreifer die Möglichkeit, neue Authentifizierungsanmeldeinformationen (wie ein SSH- oder SFTP-Passwort) für den Benutzer zu erhalten. Durch die Nutzung dieser Anmeldeinformationen könnte der Angreifer unbefugten Zugriff auf das Storage-Konto erlangen, Dateiübertragungen durchführen oder Daten innerhalb der Speicherkonten manipulieren. Dies könnte zu Datenlecks, -beschädigungen oder böswilligen Änderungen des Inhalts des Storage-Kontos führen.
az storage account local-user regenerate-password \
--account-name <STORAGE_ACCOUNT_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--name <LOCAL_USER_NAME>
Um auf Azure Blob Storage über SFTP zuzugreifen (is_hns_enabled sollte wahr sein), können Sie einen lokalen Benutzer über SFTP verwenden (Sie können auch einen SSH-Schlüssel zur Verbindung verwenden):
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
Mit diesen Berechtigungen kann ein Angreifer einen gelöschten Container wiederherstellen, indem er dessen gelöschte Versions-ID angibt, oder spezifische Blobs innerhalb eines Containers wiederherstellen, wenn sie zuvor weich gelöscht wurden. Diese Privilegieneskalation könnte es einem Angreifer ermöglichen, sensible Daten wiederherzustellen, die dauerhaft gelöscht werden sollten, was potenziell zu unbefugtem Zugriff führen könnte.
#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
Mit diesen Berechtigungen kann ein Angreifer einen gelöschten Azure-Dateifreigabe wiederherstellen, indem er dessen gelöschte Versions-ID angibt. Diese Privilegieneskalation könnte es einem Angreifer ermöglichen, sensible Daten wiederherzustellen, die dauerhaft gelöscht werden sollten, was potenziell zu unbefugtem Zugriff führen könnte.
az storage share-rm restore \
--storage-account <STORAGE_ACCOUNT_NAME> \
--name <FILE_SHARE_NAME> \
--deleted-version <VERSION>
Andere interessante Berechtigungen (TODO)
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/manageOwnership/action: Ändert den Besitz des Blobs
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/modifyPermissions/action: Ändert die Berechtigungen des Blobs
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action: Gibt das Ergebnis des Blob-Befehls zurück
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/immutableStorage/runAsSuperUser/action
Referenzen
- 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
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.