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) का उपयोग करना संभव है।
इन्फ्रास्ट्रक्चर एन्क्रिप्शन सक्षम करें: डेटा को "अधिक सुरक्षा" के लिए दो बार एन्क्रिप्ट करने की अनुमति देता है।
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
यदि "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
.
यह ब्लॉब, कतार और फ़ाइल सेवाओं के लिए एक साझा कुंजी उत्पन्न करना संभव है, निम्नलिखित जानकारी पर हस्ताक्षर करके:
यह संभव है कि टेबल सेवाओं के लिए साझा कुंजी उत्पन्न की जाए निम्नलिखित जानकारी पर हस्ताक्षर करके:
यह ब्लॉब, कतार और फ़ाइल सेवाओं के लिए एक लाइट साझा कुंजी उत्पन्न करना संभव है, निम्नलिखित जानकारी पर हस्ताक्षर करके:
यह टेबल सेवाओं के लिए एक लाइट साझा कुंजी उत्पन्न करना संभव है निम्नलिखित जानकारी पर हस्ताक्षर करके:
फिर, कुंजी का उपयोग करने के लिए, इसे अधिकृतता हेडर में निम्नलिखित सिंटैक्स का पालन करते हुए किया जा सकता है:
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
Azure Blob Storage अब SSH फ़ाइल ट्रांसफर प्रोटोकॉल (SFTP) का समर्थन करता है, जो सुरक्षित फ़ाइल ट्रांसफर और प्रबंधन को सीधे Blob Storage में सक्षम बनाता है बिना कस्टम समाधानों या तृतीय-पक्ष उत्पादों की आवश्यकता के।
प्रोटोकॉल समर्थन: SFTP उन Blob Storage खातों के साथ काम करता है जो हायरार्किकल नेमस्पेस (HNS) के साथ कॉन्फ़िगर किए गए हैं। यह ब्लॉब्स को निर्देशिकाओं और उपनिर्देशिकाओं में व्यवस्थित करता है ताकि नेविगेशन आसान हो सके।
सुरक्षा: SFTP प्रमाणीकरण के लिए स्थानीय उपयोगकर्ता पहचान का उपयोग करता है और RBAC या ABAC के साथ एकीकृत नहीं होता है। प्रत्येक स्थानीय उपयोगकर्ता प्रमाणीकरण कर सकता है:
Azure-जनित पासवर्ड
सार्वजनिक-निजी SSH कुंजी जोड़े
सूक्ष्म अनुमतियाँ: पढ़ने, लिखने, हटाने और सूची बनाने जैसी अनुमतियाँ स्थानीय उपयोगकर्ताओं को 100 कंटेनरों तक सौंपे जा सकती हैं।
नेटवर्किंग विचार: SFTP कनेक्शन पोर्ट 22 के माध्यम से बनाए जाते हैं। Azure SFTP ट्रैफ़िक को सुरक्षित करने के लिए फ़ायरवॉल, निजी एंडपॉइंट या वर्चुअल नेटवर्क जैसी नेटवर्क कॉन्फ़िगरेशन का समर्थन करता है।
हायरार्किकल नेमस्पेस: भंडारण खाता बनाते समय HNS सक्षम होना चाहिए।
समर्थित एन्क्रिप्शन: Microsoft सुरक्षा विकास जीवनचक्र (SDL) द्वारा अनुमोदित क्रिप्टोग्राफिक एल्गोरिदम की आवश्यकता होती है (जैसे, rsa-sha2-256, ecdsa-sha2-nistp256)।
SFTP कॉन्फ़िगरेशन:
भंडारण खाते पर SFTP सक्षम करें।
उचित अनुमतियों के साथ स्थानीय उपयोगकर्ता पहचान बनाएं।
उपयोगकर्ताओं के लिए होम निर्देशिकाएँ कॉन्फ़िगर करें ताकि वे कंटेनर के भीतर अपनी प्रारंभिक स्थिति को परिभाषित कर सकें।
पढ़ें
r
फ़ाइल सामग्री पढ़ें।
लिखें
w
फ़ाइलें अपलोड करें और निर्देशिकाएँ बनाएं।
सूची
l
निर्देशिकाओं की सामग्री सूचीबद्ध करें।
हटाएँ
d
फ़ाइलें या निर्देशिकाएँ हटाएँ।
बनाएँ
c
फ़ाइलें या निर्देशिकाएँ बनाएं।
स्वामित्व संशोधित करें
o
स्वामित्व उपयोगकर्ता या समूह बदलें।
अनुमतियाँ संशोधित करें
p
फ़ाइलों या निर्देशिकाओं पर ACL बदलें।
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)