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

Storage Privesc

Für weitere Informationen über Speicher siehe:

Az - Storage Accounts & Blobs

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.

bash
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:

bash
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.

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 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.

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>

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.

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

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.

bash
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):

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

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.

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

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.

bash
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

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