Az - Storage Privesc
Reading time: 10 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
Storage Privesc
ストレージに関する詳細情報は、以下を確認してください:
Microsoft.Storage/storageAccounts/listkeys/action
この権限を持つプリンシパルは、ストレージアカウントのアクセスキーのリスト(および秘密値)を表示できるようになります。これにより、プリンシパルはストレージアカウントに対する権限を昇格させることができます。
az storage account keys list --account-name <acc-name>
Microsoft.Storage/storageAccounts/regenerateKey/action
この権限を持つプリンシパルは、ストレージアカウントのアクセスキーの新しい秘密値を更新および取得することができます。これにより、プリンシパルはストレージアカウントに対する権限を昇格させることができます。
さらに、レスポンスには更新されたキーの値と更新されていないキーの値も含まれます:
az storage account keys renew --account-name <acc-name> --key key2
Microsoft.Storage/storageAccounts/write
この権限を持つプリンシパルは、ネットワークルールやポリシーなどの設定を更新して、既存のストレージアカウントを作成または更新することができます。
# 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
最初の権限はコンテナ内の不変ポリシーを変更することを許可し、2番目はそれらを削除することを許可します。
note
不変ポリシーがロック状態にある場合、どちらの操作も行えないことに注意してください。
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>
ファイル共有特有の特権昇格
Microsoft.Storage/storageAccounts/fileServices/takeOwnership/action
この権限を持つユーザーは、共有ファイルシステム内のファイルの所有権を取得できるはずです。
Microsoft.Storage/storageAccounts/fileServices/fileshares/files/modifypermissions/action
この権限を持つユーザーは、共有ファイルシステム内のファイルの権限を変更できるはずです。
Microsoft.Storage/storageAccounts/fileServices/fileshares/files/actassuperuser/action
この権限を持つユーザーは、スーパーユーザーとしてファイルシステム内でアクションを実行できるはずです。
Microsoft.Storage/storageAccounts/localusers/write (Microsoft.Storage/storageAccounts/localusers/read)
この権限を持つ攻撃者は、Azure Storage アカウント(階層名前空間で構成されている)用の新しいローカルユーザーを作成および更新(Microsoft.Storage/storageAccounts/localusers/read
権限がある場合)できます。これには、ユーザーの権限やホームディレクトリを指定することが含まれます。この権限は、攻撃者が読み取り(r)、書き込み(w)、削除(d)、リスト(l)などの特定の権限を持つストレージアカウントを自分に付与できるため、重要です。さらに、これに使用される認証方法は、Azure生成のパスワードやSSHキーのペアです。ユーザーがすでに存在するかどうかのチェックはないため、既存の他のユーザーを上書きすることができます。攻撃者は特権を昇格させ、ストレージアカウントへのSSHアクセスを取得し、機密データを露出または侵害する可能性があります。
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
この権限を持つ攻撃者は、Azure Storage アカウント内のローカルユーザーのパスワードを再生成できます。これにより、攻撃者はユーザーの新しい認証情報(SSH または SFTP パスワードなど)を取得する能力を得ます。これらの認証情報を利用することで、攻撃者はストレージアカウントへの不正アクセスを行ったり、ファイル転送を行ったり、ストレージコンテナ内のデータを操作したりすることができます。これにより、データの漏洩、破損、またはストレージアカウントの内容の悪意のある変更が発生する可能性があります。
az storage account local-user regenerate-password \
--account-name <STORAGE_ACCOUNT_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--name <LOCAL_USER_NAME>
Azure Blob StorageにSFTPを介してアクセスするには(is_hns_enabledはtrueである必要があります)、ローカルユーザーを介してSFTPを使用できます(接続するためにsshキーを使用することもできます):
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
これらの権限を持つ攻撃者は、削除されたバージョンIDを指定することで削除されたコンテナを復元したり、以前にソフト削除された場合にコンテナ内の特定のBlobを復元したりすることができます。この特権昇格により、攻撃者は永久に削除される予定だった機密データを回復できる可能性があり、無許可のアクセスにつながる可能性があります。
#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
これらの権限を持つ攻撃者は、削除されたバージョンIDを指定することで削除されたAzureファイル共有を復元できます。この特権の昇格により、攻撃者は永久に削除される予定だった機密データを回復できる可能性があり、無許可のアクセスにつながる可能性があります。
az storage share-rm restore \
--storage-account <STORAGE_ACCOUNT_NAME> \
--name <FILE_SHARE_NAME> \
--deleted-version <VERSION>
その他の興味深い権限 (TODO)
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/manageOwnership/action: ブロブの所有権を変更します
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/modifyPermissions/action: ブロブの権限を変更します
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action: ブロブコマンドの結果を返します
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/immutableStorage/runAsSuperUser/action
参考文献
- 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
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。