Az - Storage Privesc
Reading time: 6 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 깃허브 리포지토리에 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
첫 번째 권한은 컨테이너의 불변성 정책을 수정할 수 있게 해주고, 두 번째는 이를 삭제할 수 있게 해줍니다.
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를 지정하거나 이전에 소프트 삭제된 경우 컨테이너 내의 특정 블롭을 복원하여 삭제된 컨테이너를 복원할 수 있습니다. 이 권한 상승은 공격자가 영구적으로 삭제될 예정이었던 민감한 데이터를 복구할 수 있게 하여, 잠재적으로 무단 접근으로 이어질 수 있습니다.
#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 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.