AWS - S3 Unauthenticated Enum
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)
एक बकेट को “सार्वजनिक” माना जाता है यदि कोई भी उपयोगकर्ता बकेट की सामग्री को सूचीबद्ध कर सकता है, और “निजी” यदि बकेट की सामग्री को केवल कुछ उपयोगकर्ताओं द्वारा सूचीबद्ध या लिखा जा सकता है।
कंपनियों के पास बकेट अनुमतियाँ गलत कॉन्फ़िगर की गई हो सकती हैं जो या तो सब कुछ या AWS में किसी भी खाते में प्रमाणित सभी को पहुँच देती हैं (तो किसी को भी)। ध्यान दें, कि ऐसी गलत कॉन्फ़िगरेशन के साथ भी कुछ क्रियाएँ नहीं की जा सकती हैं क्योंकि बकेट की अपनी पहुँच नियंत्रण सूचियाँ (ACLs) हो सकती हैं।
AWS-S3 गलत कॉन्फ़िगरेशन के बारे में यहाँ जानें: http://flaws.cloud और http://flaws2.cloud/
जब एक वेबपृष्ठ कुछ संसाधनों को स्टोर करने के लिए AWS का उपयोग कर रहा है, तो खोजने के विभिन्न तरीके:
wappalyzer ब्राउज़र प्लगइन का उपयोग करना
burp का उपयोग करना (वेब को स्पाइडर करना) या पृष्ठ के माध्यम से मैन्युअल रूप से नेविगेट करके सभी संसाधनों को लोड किया जाएगा जो इतिहास में सहेजे जाएंगे।
संसाधनों के लिए जाँच करें जैसे डोमेन में:
CNAMES के लिए जाँच करें क्योंकि resources.domain.com
में CNAME bucket.s3.amazonaws.com
हो सकता है
https://buckets.grayhatwarfare.com, एक वेब जो पहले से ही खुले बकेट खोज चुका है।
बकेट नाम और बकेट डोमेन नाम को एक समान होना चाहिए।
flaws.cloud IP 52.92.181.107 पर है और यदि आप वहां जाते हैं तो यह आपको https://aws.amazon.com/s3/ पर रीडायरेक्ट करता है। इसके अलावा, dig -x 52.92.181.107
s3-website-us-west-2.amazonaws.com
देता है।
यह जाँचने के लिए कि यह एक बकेट है, आप यहाँ भी जा सकते हैं https://flaws.cloud.s3.amazonaws.com/।
आप बकेट को कंपनी से संबंधित नामों को ब्रूट-फोर्स करके खोज सकते हैं जिसे आप पेंटेस्ट कर रहे हैं:
https://github.com/jordanpotti/AWSBucketDump (संभावित बकेट नामों की एक सूची शामिल है)
खुले S3 बकेट दिए जाने पर, BucketLoot स्वचालित रूप से दिलचस्प जानकारी के लिए खोज कर सकता है।
आप सभी समर्थित क्षेत्रों को AWS में https://docs.aws.amazon.com/general/latest/gr/s3.html पर पा सकते हैं।
आप dig
और nslookup
के साथ एक बकेट के क्षेत्र को प्राप्त कर सकते हैं, जो खोजे गए IP का DNS अनुरोध करके:
Check that the resolved domain have the word "website".
You can access the static website going to: flaws.cloud.s3-website-us-west-2.amazonaws.com
or you can access the bucket visiting: flaws.cloud.s3-us-west-2.amazonaws.com
If you try to access a bucket, but in the domain name you specify another region (for example the bucket is in bucket.s3.amazonaws.com
but you try to access bucket.s3-website-us-west-2.amazonaws.com
, then you will be indicated to the correct location:
To test the openness of the bucket a user can just enter the URL in their web browser. A private bucket will respond with "Access Denied". A public bucket will list the first 1,000 objects that have been stored.
Open to everyone:
Private:
You can also check this with the cli:
यदि बकेट का डोमेन नाम नहीं है, तो इसे सूचीबद्ध करने का प्रयास करते समय, केवल बकेट का नाम डालें और पूरे AWSs3 डोमेन को नहीं। उदाहरण: s3://<BUCKETNAME>
यह संभव है कि एक AWS खाता निर्धारित किया जाए S3:ResourceAccount
नीति स्थिति कुंजी का लाभ उठाकर। यह स्थिति एक खाते में S3 बकेट के आधार पर पहुंच को प्रतिबंधित करती है (अन्य खाता-आधारित नीतियाँ उस खाते के आधार पर प्रतिबंधित करती हैं जिसमें अनुरोध करने वाला प्रमुख है)।
और क्योंकि नीति में वाइल्डकार्ड हो सकते हैं, इसलिए खाता संख्या केवल एक संख्या में एक बार पाई जा सकती है।
यह उपकरण प्रक्रिया को स्वचालित करता है:
यह तकनीक API गेटवे URLs, Lambda URLs, डेटा एक्सचेंज डेटा सेट और यहां तक कि टैग के मान को प्राप्त करने के लिए भी काम करती है (यदि आप टैग कुंजी जानते हैं)। आप मूल शोध और इस शोषण को स्वचालित करने के लिए उपकरण conditional-love में अधिक जानकारी प्राप्त कर सकते हैं।
जैसा कि इस ब्लॉग पोस्ट में समझाया गया है, यदि आपके पास एक बकेट को सूचीबद्ध करने की अनुमति है तो यह संभव है कि आप एक खाताID की पुष्टि कर सकें जिससे बकेट संबंधित है, एक अनुरोध भेजकर जैसे:
यदि त्रुटि "Access Denied" है, तो इसका मतलब है कि खाता आईडी गलत थी।
जैसा कि इस ब्लॉग पोस्ट में समझाया गया है, यह जांचना संभव है कि क्या कोई ईमेल पता किसी AWS खाते से संबंधित है S3 बकेट पर ACLs के माध्यम से ईमेल को अनुमति देने की कोशिश करके। यदि यह त्रुटि को ट्रिगर नहीं करता है, तो इसका मतलब है कि ईमेल किसी AWS खाते का रूट उपयोगकर्ता है:
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)