Az - Storage Accounts & Blobs
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Azure Storage Accounts Microsoft Azure में मौलिक सेवाएँ हैं जो विभिन्न डेटा प्रकारों के लिए स्केलेबल, सुरक्षित और अत्यधिक उपलब्ध क्लाउड स्टोरेज प्रदान करती हैं, जिसमें ब्लॉब (बाइनरी बड़े ऑब्जेक्ट), फ़ाइलें, कतारें और तालिकाएँ शामिल हैं। ये एकल नामस्थान के तहत इन विभिन्न स्टोरेज सेवाओं को एक साथ समूहित करने के लिए कंटेनर के रूप में कार्य करते हैं।
मुख्य कॉन्फ़िगरेशन विकल्प:
प्रत्येक स्टोरेज खाता का Azure में सभी के बीच एक अद्वितीय नाम होना चाहिए।
प्रत्येक स्टोरेज खाता एक क्षेत्र या Azure विस्तारित क्षेत्र में तैनात किया जाता है।
बेहतर प्रदर्शन के लिए स्टोरेज खाते का प्रीमियम संस्करण चुनना संभव है।
रैक, ड्राइव और डेटा सेंटर की विफलताओं के खिलाफ सुरक्षा के लिए 4 प्रकार की पुनरावृत्ति में से चुनना संभव है।
सुरक्षा कॉन्फ़िगरेशन विकल्प:
REST API संचालन के लिए सुरक्षित ट्रांसफर की आवश्यकता: स्टोरेज के साथ किसी भी संचार में TLS की आवश्यकता होती है।
व्यक्तिगत कंटेनरों पर गुमनाम पहुंच सक्षम करने की अनुमति: यदि नहीं, तो भविष्य में गुमनाम पहुंच सक्षम करना संभव नहीं होगा।
स्टोरेज खाता कुंजी पहुंच सक्षम करें: यदि नहीं, तो साझा कुंजी के साथ पहुंच वर्जित होगी।
न्यूनतम TLS संस्करण।
कॉपी संचालन के लिए अनुमत दायरा: किसी भी स्टोरेज खाते से, उसी Entra टेनेन्ट से किसी भी स्टोरेज खाते से या उसी वर्चुअल नेटवर्क में निजी अंत बिंदुओं वाले स्टोरेज खाते से अनुमति दें।
ब्लॉब स्टोरेज विकल्प:
क्रॉस-टेनेन्ट पुनरावृत्ति की अनुमति दें।
एक्सेस स्तर: हॉट (बार-बार एक्सेस किया गया डेटा), कूल और कोल्ड (कभी-कभी एक्सेस किया गया डेटा)।
नेटवर्किंग विकल्प:
नेटवर्क एक्सेस:
सभी नेटवर्क से अनुमति दें।
चयनित वर्चुअल नेटवर्क और IP पते से अनुमति दें।
सार्वजनिक पहुंच को अक्षम करें और निजी पहुंच का उपयोग करें।
निजी अंत बिंदु: यह वर्चुअल नेटवर्क से स्टोरेज खाते के लिए एक निजी कनेक्शन की अनुमति देता है।
डेटा सुरक्षा विकल्प:
कंटेनरों के लिए समय-निर्धारित पुनर्स्थापना: पहले की स्थिति में कंटेनरों को पुनर्स्थापित करने की अनुमति देता है।
इसके लिए संस्करणन, परिवर्तन फ़ीड, और ब्लॉब सॉफ़्ट डिलीट सक्षम होना आवश्यक है।
ब्लॉब के लिए सॉफ़्ट डिलीट सक्षम करें: यह हटाए गए ब्लॉब (यहां तक कि ओवरराइट किए गए) के लिए दिनों में एक संरक्षण अवधि सक्षम करता है।
कंटेनरों के लिए सॉफ़्ट डिलीट सक्षम करें: यह हटाए गए कंटेनरों के लिए दिनों में एक संरक्षण अवधि सक्षम करता है।
फाइल शेयर के लिए सॉफ़्ट डिलीट सक्षम करें: यह हटाए गए फ़ाइल साझा के लिए दिनों में एक संरक्षण अवधि सक्षम करता है।
ब्लॉब के लिए संस्करणन सक्षम करें: आपके ब्लॉब के पिछले संस्करणों को बनाए रखें।
ब्लॉब परिवर्तन फ़ीड सक्षम करें: ब्लॉब में निर्माण, संशोधन, और हटाने के परिवर्तनों के लॉग रखें।
संस्करण-स्तरीय अपरिवर्तनीयता समर्थन सक्षम करें: आपको खाता स्तर पर समय-आधारित संरक्षण नीति सेट करने की अनुमति देता है जो सभी ब्लॉब संस्करणों पर लागू होगी।
संस्करण-स्तरीय अपरिवर्तनीयता समर्थन और कंटेनरों के लिए समय-निर्धारित पुनर्स्थापना को एक साथ सक्षम नहीं किया जा सकता है।
एन्क्रिप्शन कॉन्फ़िगरेशन विकल्प:
एन्क्रिप्शन प्रकार: Microsoft-प्रबंधित कुंजी (MMK) या ग्राहक-प्रबंधित कुंजी (CMK) का उपयोग करना संभव है।
इन्फ्रास्ट्रक्चर एन्क्रिप्शन सक्षम करें: डेटा को "अधिक सुरक्षा के लिए" डबल एन्क्रिप्ट करने की अनुमति देता है।
यदि "Allow Blob public access" सक्षम है (डिफ़ॉल्ट रूप से अक्षम), जब एक कंटेनर बनाया जाता है तो यह संभव है:
ब्लॉब पढ़ने के लिए सार्वजनिक पहुंच देना (आपको नाम जानना होगा)।
कंटेनर ब्लॉब की सूची बनाना और उन्हें पढ़ना।
इसे पूरी तरह से निजी बनाना।
यदि आप कोई स्टोरेज पाते हैं जिससे आप कनेक्ट कर सकते हैं, तो आप ऐसा करने के लिए Microsoft Azure Storage Explorer उपकरण का उपयोग कर सकते हैं।
स्टोरेज खातों तक पहुंच के लिए RBAC भूमिकाओं के साथ Entra ID प्रिंसिपल का उपयोग करना संभव है और यह अनुशंसित तरीका है।
स्टोरेज खातों में एक्सेस कुंजी होती हैं जिनका उपयोग इसे एक्सेस करने के लिए किया जा सकता है। यह स्टोरेज खाते तक पूर्ण पहुंच प्रदान करता है।
यह संभव है Shared Keys उत्पन्न करें जो एक्सेस कुंजियों के साथ हस्ताक्षरित होते हैं ताकि एक हस्ताक्षरित URL के माध्यम से कुछ संसाधनों तक पहुंच को अधिकृत किया जा सके।
Note that the CanonicalizedResource
part represents the storage services resource (URI). And if any part in the URL is encoded, it should also be encoded inside the CanonicalizedResource
.
This is used by default by az
cli to authenticate requests. To make it use the Entra ID principal credentials indicate the param --auth-mode login
.
यह ब्लॉब, कतार और फ़ाइल सेवाओं के लिए एक साझा कुंजी उत्पन्न करना संभव है, निम्नलिखित जानकारी पर हस्ताक्षर करके:
यह संभव है कि टेबल सेवाओं के लिए साझा कुंजी उत्पन्न की जाए निम्नलिखित जानकारी पर हस्ताक्षर करके:
यह ब्लॉब, कतार और फ़ाइल सेवाओं के लिए एक लाइट साझा कुंजी उत्पन्न करना संभव है, निम्नलिखित जानकारी पर हस्ताक्षर करके:
यह संभव है कि टेबल सेवाओं के लिए एक लाइट साझा कुंजी उत्पन्न की जाए निम्नलिखित जानकारी पर हस्ताक्षर करके:
फिर, कुंजी का उपयोग करने के लिए, इसे Authorization हेडर में निम्नलिखित सिंटैक्स का पालन करते हुए किया जा सकता है:
Shared Access Signatures (SAS) सुरक्षित, समय-सीमित URLs हैं जो Azure Storage खाते में संसाधनों तक पहुँचने के लिए विशिष्ट अनुमतियाँ प्रदान करती हैं बिना खाते की पहुँच कुंजियों को उजागर किए। जबकि पहुँच कुंजियाँ सभी संसाधनों तक पूर्ण प्रशासनिक पहुँच प्रदान करती हैं, SAS अनुमतियों (जैसे पढ़ना या लिखना) को निर्दिष्ट करके और समाप्ति समय को परिभाषित करके सूक्ष्म नियंत्रण की अनुमति देती है।
उपयोगकर्ता प्रतिनिधित्व SAS: यह एक Entra ID प्रमुख से बनाया जाता है जो SAS पर हस्ताक्षर करेगा और उपयोगकर्ता से SAS को अनुमतियाँ सौंपेगा। इसका उपयोग केवल blob और डेटा झील भंडारण के साथ किया जा सकता है (docs). सभी उत्पन्न उपयोगकर्ता प्रतिनिधित्व SAS को रद्द करना संभव है।
भले ही "अधिक" अनुमतियों के साथ एक प्रतिनिधित्व SAS उत्पन्न करना संभव है जो उपयोगकर्ता के पास हैं। हालाँकि, यदि प्रमुख के पास वे नहीं हैं, तो यह काम नहीं करेगा (कोई प्रिवेस्क नहीं)।
सेवा SAS: यह भंडारण खाते की एक पहुँच कुंजी का उपयोग करके हस्ताक्षरित होता है। इसका उपयोग एकल भंडारण सेवा में विशिष्ट संसाधनों तक पहुँच प्रदान करने के लिए किया जा सकता है। यदि कुंजी नवीनीकरण की जाती है, तो SAS काम करना बंद कर देगा।
खाता SAS: यह भी भंडारण खाते की एक पहुँच कुंजी के साथ हस्ताक्षरित होता है। यह भंडारण खाता सेवाओं (Blob, Queue, Table, File) में संसाधनों तक पहुँच प्रदान करता है और सेवा-स्तरीय संचालन को शामिल कर सकता है।
एक पहुँच कुंजी द्वारा हस्ताक्षरित 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
एक उपयोगकर्ता प्रतिनिधित्व के रूप में हस्ताक्षरित SAS URL इस तरह दिखता है:
https://<container_name>.blob.core.windows.net/testing-container?sp=r&st=2024-11-22T15:07:40Z&se=2024-11-22T23:07:40Z&skoid=d77c71a1-96e7-483d-bd51-bd753aa66e62&sktid=fdd066e1-ee37-49bc-b08f-d0e152119b04&skt=2024-11-22T15:07:40Z&ske=2024-11-22T23:07:40Z&sks=b&skv=2022-11-02&spr=https&sv=2022-11-02&sr=c&sig=7s5dJyeE6klUNRulUj9TNL0tMj2K7mtxyRc97xbYDqs%3D
कुछ http params पर ध्यान दें:
se
पैरामीटर SAS की समाप्ति तिथि को इंगित करता है
sp
पैरामीटर SAS की अनुमतियों को इंगित करता है
sig
SAS को मान्य करने वाला हस्ताक्षर है
SAS उत्पन्न करते समय यह आवश्यक है कि यह निर्दिष्ट किया जाए कि यह कौन सी अनुमतियाँ प्रदान करेगा। जिस वस्तु पर SAS उत्पन्न किया जा रहा है उसके आधार पर विभिन्न अनुमतियाँ शामिल की जा सकती हैं। उदाहरण के लिए:
(a)dd, (c)reate, (d)elete, (e)xecute, (f)ilter_by_tags, (i)set_immutability_policy, (l)ist, (m)ove, (r)ead, (t)ag, (w)rite, (x)delete_previous_version, (y)permanent_delete
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Blob storage
https://<storage-account>.blob.core.windows.net
https://<stg-acc>.blob.core.windows.net/<container-name>?restype=container&comp=list
Data Lake Storage
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