Az - Blob Storage

htARTE (HackTricks AWS Red Team 전문가)로부터 AWS 해킹을 처음부터 전문가까지 배우세요!

HackTricks를 지원하는 다른 방법:

기본 정보

문서에서: Azure Blob storage는 Microsoft의 클라우드용 객체 저장 솔루션입니다. Blob storage는 대량의 비구조화 데이터를 저장하는 데 최적화되어 있습니다. 비구조화 데이터는 특정 데이터 모델이나 정의에 따르지 않는 데이터로, 텍스트 또는 이진 데이터와 같은 데이터입니다.

Blob storage는 세 가지 유형의 리소스를 제공합니다:

  • 스토리지 계정 (고유한 이름)

  • 스토리지 계정의 컨테이너 (폴더)

  • 컨테이너 내의 Blob

다양한 유형의 저장소

Blob storage

https://<storage-account>.blob.core.windows.net https://<stg-acc>.blob.core.windows.net/<container-name>?restype=container&comp=list

Azure Data Lake Storage Gen2

https://<storage-account>.dfs.core.windows.net

Azure Files

https://<storage-account>.file.core.windows.net

Queue storage

https://<storage-account>.queue.core.windows.net

Table storage

https://<storage-account>.table.core.windows.net

저장소 액세스

  • RBAC 역할을 통해 Azure AD 주체를 사용합니다.

  • 액세스 키: 스토리지 계정의 액세스 키를 사용합니다. 이는 스토리지 계정에 대한 완전한 액세스를 제공합니다.

  • 공유 액세스 서명 (SAS): 시간 제한 및 특정 권한을 제공합니다.

  • 액세스 키로 SAS URL을 생성할 수 있습니다 (탐지하기 더 복잡함).

  • SAS는 액세스 키에서 생성되므로 갱신되면 SAS가 작동을 중지합니다.

공개 노출

"Blob 공개 액세스 허용"이 활성화되어 있으면 (기본적으로 비활성화됨), 다음이 가능합니다:

  • Blob 읽기에 대한 공개 액세스 부여 (이름을 알아야 함).

  • 컨테이너 Blob을 목록하고 읽기.

저장소에 연결

찾은 저장소에 연결할 수 있다면 Microsoft Azure Storage Explorer 도구를 사용할 수 있습니다.

SAS URL

문서에서: 공유 액세스 서명(SAS)은 스토리지 계정의 리소스에 안전한 위임 액세스를 제공합니다. SAS를 사용하면 클라이언트가 데이터에 액세스하는 방법을 세밀하게 제어할 수 있습니다. 예를 들어:

  • 클라이언트가 액세스할 수 있는 리소스

  • 해당 리소스에 대한 권한

  • SAS의 유효 기간

SAS URL은 다음과 같습니다: https://<container_name>.blob.core.windows.net/newcontainer?sp=r&st=2021-09-26T18:15:21Z&se=2021-10-27T02:14:21Z&spr=https&sv=2021-07-08&sr=c&sig=7S%2BZySOgy4aA3Dk0V1cJyTSIf1cW%2Fu3WFkhHV32%2B4PE%3D

데이터에 액세스하려면 Storage Explorer 또는 python을 사용하세요:

#pip3 install azure-storage-blob
from azure.storage.blob import BlobServiceClient

# List containers
conn_str="<SAS URL>"
svc = BlobServiceClient.from_connection_string(conn_str=conn_str)
for c in svc.list_containers():
print(c['name']

# List blobs inside conteiner
container = svc.get_container_client(container="<container_name>")
for b in container.list_blobs():
print(b['name']

# Download file
blob = svc.get_blob_client(container="<container_name>",blob="<blob_name>")
with open("download.out","wb") as f:
f.write(blob.download_blob().readall())
# Get storage accounts
Get-AzStorageAccount | fl
# Get rules to access the storage account
Get-AzStorageAccount | select -ExpandProperty NetworkRuleSet
# Get IPs
(Get-AzStorageAccount | select -ExpandProperty NetworkRuleSet).IPRules
# Get containers of a storage account
Get-AzStorageContainer -Context (Get-AzStorageAccount -name <NAME> -ResourceGroupName <NAME>).context
# Get blobs inside container
Get-AzStorageBlob -Container epbackup-planetary -Context (Get-AzStorageAccount -name <name> -ResourceGroupName <name>).context
# Get a blob from a container
Get-AzStorageBlobContent -Container <NAME> -Context (Get-AzStorageAccount -name <NAME> -ResourceGroupName <NAME>).context -Blob <blob_name> -Destination .\Desktop\filename.txt

참고 자료

htARTE (HackTricks AWS Red Team Expert)를 통해 제로부터 영웅이 될 때까지 AWS 해킹을 배우세요!

HackTricks를 지원하는 다른 방법:

最終更新