Az - Blob Storage

Support HackTricks

Basic Information

डॉक्स से: Azure Blob storage Microsoft का object storage solution for the cloud है। Blob storage को massive amounts of unstructured data को स्टोर करने के लिए optimized किया गया है। Unstructured data वह डेटा है जो किसी विशेष डेटा मॉडल या परिभाषा का पालन नहीं करता, जैसे कि टेक्स्ट या बाइनरी डेटा।

Blob storage तीन प्रकार के संसाधन प्रदान करता है:

  • storage account (अद्वितीय नाम)

  • storage account में एक container (फोल्डर)

  • एक container में एक blob

विभिन्न प्रकार के storage

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

Storage तक पहुंच

  • Azure AD principals का उपयोग करें RBAC roles समर्थित।

  • Access Keys: storage account की access keys का उपयोग करें। यह storage account तक पूर्ण पहुंच प्रदान करता है।

  • Shared Access Signature (SAS): समय सीमित और विशिष्ट अनुमतियाँ।

  • आप एक SAS url एक access key के साथ उत्पन्न कर सकते हैं (पता लगाना अधिक जटिल)।

  • चूंकि SAS access key से उत्पन्न होता है, यदि इसे नवीनीकृत किया जाता है तो SAS काम करना बंद कर देता है।

Public Exposure

यदि "Allow Blob public access" सक्षम है (डिफ़ॉल्ट रूप से अक्षम), तो यह संभव है:

  • public access to read blobs दें (आपको नाम जानना होगा)।

  • List container blobs और उन्हें पढ़ें

Storage से कनेक्ट करें

यदि आपको कोई storage मिलती है जिससे आप कनेक्ट कर सकते हैं तो आप ऐसा करने के लिए Microsoft Azure Storage Explorer टूल का उपयोग कर सकते हैं।

SAS URLs

डॉक्स से: एक shared access signature (SAS) आपके storage account में संसाधनों तक सुरक्षित प्रतिनिधि पहुंच प्रदान करता है। एक 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 the containers
container = svc.get_container_client(container=c['name'])

for b in container.list_blobs():
print(b['name'])


# Download all the blobs
blob_name = b['name'].split("/")[::-1][0]
blob = svc.get_blob_client(container=c['name'],blob=b['name'])
with open(blob_name,"wb") as f:
f.write(blob.download_blob().readall())

User delegation SAS

आप एक कंटेनर, डायरेक्टरी, या ब्लॉब तक पहुंच के लिए साझा एक्सेस सिग्नेचर (SAS) टोकन को Azure Active Directory (Azure AD) क्रेडेंशियल्स या एकाउंट की का उपयोग करके सुरक्षित कर सकते हैं। एक यूजर डेलीगेशन SAS बनाने के लिए, आपको पहले एक यूजर डेलीगेशन की का अनुरोध करना होगा, जिसे आप फिर SAS पर हस्ताक्षर करने के लिए उपयोग करते हैं।

यूजर डेलीगेशन साझा एक्सेस सिग्नेचर (SAS) के लिए समर्थन Azure Blob Storage और Azure Data Lake Storage Gen2 दोनों में प्रदान किया गया है। हालांकि, यह महत्वपूर्ण है कि स्टोर्ड एक्सेस पॉलिसीज यूजर डेलीगेशन SAS के साथ संगत नहीं हैं।

ध्यान दें कि यूजर डेलीगेशन SAS स्टोरेज एकाउंट कीज के बजाय Azure AD क्रेडेंशियल्स के साथ सुरक्षित है। यह क्लाइंट्स/एप्लिकेशंस को SAS बनाने के लिए स्टोरेज कीज को स्टोर/रिट्रीव करने से रोकता है।

Service SAS

एक सर्विस SAS स्टोरेज एकाउंट की के साथ सुरक्षित है। एक सर्विस SAS Azure Storage सेवाओं में से केवल एक संसाधन तक पहुंच को डेलीगेट करता है: Blob storage, Queue storage, Table storage, या Azure Files। एक सर्विस-लेवल SAS के लिए URI उस संसाधन के URI से बना होता है जिसके लिए SAS पहुंच को डेलीगेट करेगा, इसके बाद SAS टोकन होता है।

Azure Active Directory (Azure AD) क्रेडेंशियल्स का उपयोग करके एक कंटेनर या ब्लॉब के लिए SAS को सुरक्षित करने के लिए, एक यूजर डेलीगेशन SAS का उपयोग करें।

Account SAS

एक एकाउंट SAS दो में से एक स्टोरेज एकाउंट कीज (2 हैं) के साथ सुरक्षित है। एक एकाउंट SAS एक या अधिक स्टोरेज सेवाओं में संसाधनों तक पहुंच को डेलीगेट करता है। एक सर्विस या यूजर डेलीगेशन SAS के माध्यम से उपलब्ध सभी ऑपरेशंस एक एकाउंट SAS के माध्यम से भी उपलब्ध हैं।

डॉक्स से: एक एकाउंट SAS बनाकर, आप:

  • उन सर्विस-लेवल ऑपरेशंस तक पहुंच को डेलीगेट कर सकते हैं जो वर्तमान में एक सर्विस-विशिष्ट SAS के साथ उपलब्ध नहीं हैं, जैसे कि Get/Set Service Properties और Get Service Stats ऑपरेशंस।

  • एक समय में एक स्टोरेज एकाउंट में एक से अधिक सेवा तक पहुंच को डेलीगेट कर सकते हैं। उदाहरण के लिए, आप एक एकाउंट SAS का उपयोग करके Azure Blob Storage और Azure Files दोनों में संसाधनों तक पहुंच को डेलीगेट कर सकते हैं।

  • कंटेनर्स, क्वीज़, टेबल्स, और फाइल शेयरों के लिए लिखने और हटाने के ऑपरेशंस तक पहुंच को डेलीगेट कर सकते हैं, जो एक ऑब्जेक्ट-विशिष्ट SAS के साथ उपलब्ध नहीं हैं।

  • एक IP पता या IP पतों की एक रेंज निर्दिष्ट कर सकते हैं जिससे अनुरोध स्वीकार किए जाएंगे।

  • HTTP प्रोटोकॉल निर्दिष्ट कर सकते हैं जिससे अनुरोध स्वीकार किए जाएंगे (या तो HTTPS या HTTP/HTTPS)।

Enumeration

# Get storage accounts
az storage account list #Get the account name from here

# Get keys to authenticate
az storage account keys list --account-name <name>

# Get shares
az storage share list --account-name <name> --account-key <key>

# Get dirs/files inside the share
az storage file list --account-name <name> --share-name <share-name> --account-key <key>
## If type is "dir", you can continue enumerationg files inside of it
az storage file list --account-name <name> --share-name <prev_dir/share-name> --account-key <key>

# Download a complete share (with directories and files inside of them)
az storage file download-batch -d . --source <share-name> --account-name <name> --account-key <key>

संदर्भ

HackTricks को समर्थन दें

Last updated