Az - Blob Storage

Support HackTricks

Basic Information

From the docs: Azure Blob storage माइक्रोसॉफ्ट का क्लाउड के लिए वस्तु संग्रहण समाधान है। Blob संग्रहण विशाल मात्रा में असंरचित डेटा संग्रहीत करने के लिए अनुकूलित है। असंरचित डेटा वह डेटा है जो किसी विशेष डेटा मॉडल या परिभाषा का पालन नहीं करता है, जैसे कि पाठ या बाइनरी डेटा।

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

  • स्टोरेज खाता (विशिष्ट नाम)

  • स्टोरेज खाते में एक कंटेनर (फोल्डर)

  • एक कंटेनर में एक ब्लॉब

Different types of storage

Access to Storage

  • Azure AD प्रिंसिपल का उपयोग करें RBAC भूमिकाओं के माध्यम से समर्थित।

  • एक्सेस कुंजी: स्टोरेज खाते की एक्सेस कुंजियों का उपयोग करें। यह स्टोरेज खाते तक पूर्ण पहुंच प्रदान करता है।

  • शेयर किए गए एक्सेस सिग्नेचर (SAS): समय सीमित और विशिष्ट अनुमतियाँ।

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

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

Public Exposure

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

  • ब्लॉब पढ़ने के लिए सार्वजनिक पहुंच देना (आपको नाम जानना होगा)।

  • कंटेनर ब्लॉब्स की सूची बनाना और उन्हें पढ़ना

Connect to Storage

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

SAS URLs

From the docs: एक साझा एक्सेस सिग्नेचर (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 का उपयोग करें या पायथन:

#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 पर हस्ताक्षर करने के लिए करेंगे।

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

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

Service SAS

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

कंटेनर या ब्लॉब के लिए SAS को सुरक्षित करने के लिए Azure Active Directory (Azure AD) क्रेडेंशियल्स का उपयोग करें, एक उपयोगकर्ता प्रतिनिधित्व 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