AWS - S3 Unauthenticated Enum
S3 Public Buckets
एक bucket को “public” माना जाता है यदि कोई भी उपयोगकर्ता bucket की सामग्री को सूचीबद्ध कर सकता है, और “private” यदि bucket की सामग्री को केवल कुछ उपयोगकर्ताओं द्वारा सूचीबद्ध या लिखा जा सकता है।
कंपनियों के पास buckets permissions गलत-संविधान हो सकते हैं जो या तो सब कुछ या किसी भी खाते में AWS में प्रमाणित सभी को पहुंच प्रदान करते हैं (इसलिए किसी को भी)। ध्यान दें, कि ऐसी गलत-संविधान के बावजूद कुछ क्रियाएं नहीं की जा सकती हैं क्योंकि buckets के पास अपनी स्वयं की access control lists (ACLs) हो सकती हैं।
AWS-S3 गलत-संविधान के बारे में यहाँ जानें: http://flaws.cloud और http://flaws2.cloud/
AWS Buckets ढूंढना
जब कोई वेबपेज कुछ संसाधनों को संग्रहीत करने के लिए AWS का उपयोग कर रहा है, तो उसे ढूंढने के विभिन्न तरीके:
Enumeration & OSINT:
wappalyzer ब्राउज़र प्लगइन का उपयोग करना
burp का उपयोग करना (वेब को spidering करना) या पृष्ठ के माध्यम से मैन्युअल रूप से नेविगेट करके सभी संसाधन लोड किए गए इतिहास में सहेजे जाएंगे।
संसाधनों की जाँच करें जैसे डोमेन में:
CNAMES की जाँच करें जैसे
resources.domain.com
का CNAMEbucket.s3.amazonaws.com
हो सकता हैhttps://buckets.grayhatwarfare.com की जाँच करें, एक वेब जिसमें पहले से खुले buckets खोजे गए हैं।
bucket name और bucket domain name को समान होना चाहिए।
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
देता है।यह जांचने के लिए कि यह एक bucket है, आप https://flaws.cloud.s3.amazonaws.com/ पर भी जा सकते हैं।
Brute-Force
आप कंपनी से संबंधित नामों को brute-forcing करके buckets पा सकते हैं जिसे आप pentesting कर रहे हैं:
https://github.com/jordanpotti/AWSBucketDump (संभावित bucket नामों की सूची शामिल है)
Loot S3 Buckets
S3 open buckets को देखते हुए, BucketLoot स्वचालित रूप से रोचक जानकारी खोज सकता है।
Region ढूंढें
आप https://docs.aws.amazon.com/general/latest/gr/s3.html में AWS द्वारा समर्थित सभी regions पा सकते हैं।
DNS द्वारा
आप dig
और nslookup
के साथ एक bucket का region प्राप्त कर सकते हैं, खोजे गए IP का DNS अनुरोध करके:
Resolved domain में "website" शब्द है यह जांचें।
आप static website को यहाँ जाकर access कर सकते हैं: flaws.cloud.s3-website-us-west-2.amazonaws.com
या आप bucket को यहाँ visit करके access कर सकते हैं: flaws.cloud.s3-us-west-2.amazonaws.com
कोशिश करके
यदि आप एक bucket को access करने की कोशिश करते हैं, लेकिन domain name में आप दूसरी region specify करते हैं (उदाहरण के लिए bucket bucket.s3.amazonaws.com
में है लेकिन आप bucket.s3-website-us-west-2.amazonaws.com
को access करने की कोशिश करते हैं), तो आपको सही location की ओर निर्देशित किया जाएगा:
Bucket को Enumerate करना
Bucket की openness को test करने के लिए, एक user बस अपने web browser में URL enter कर सकता है। एक private bucket "Access Denied" के साथ respond करेगा। एक public bucket पहले 1,000 objects को list करेगा जो stored हैं।
सभी के लिए खुला:
Private:
आप इसे cli के साथ भी check कर सकते हैं:
यदि बकेट का डोमेन नाम नहीं है, तो इसे एन्यूमरेट करने की कोशिश करते समय, केवल बकेट नाम डालें और पूरा AWSs3 डोमेन नहीं। उदाहरण: s3://<BUCKETNAME>
Public URL template
Get Account ID from public Bucket
यह संभव है कि एक AWS खाता निर्धारित किया जा सके नए S3:ResourceAccount
Policy Condition Key का लाभ उठाकर। यह स्थिति S3 बकेट के आधार पर पहुंच को प्रतिबंधित करती है जिसमें एक खाता है (अन्य खाता-आधारित नीतियां उस खाते के आधार पर प्रतिबंधित करती हैं जिसमें अनुरोध करने वाला प्रिंसिपल है)।
और क्योंकि नीति में वाइल्डकार्ड्स हो सकते हैं, यह संभव है कि खाता संख्या सिर्फ एक संख्या एक समय में पाई जा सके।
यह टूल प्रक्रिया को स्वचालित करता है:
यह तकनीक API Gateway URLs, Lambda URLs, Data Exchange डेटा सेट्स और यहां तक कि टैग्स के मूल्य प्राप्त करने के लिए भी काम करती है (यदि आपको टैग कुंजी पता है)। आप अधिक जानकारी मूल शोध और इस शोषण को स्वचालित करने के लिए टूल conditional-love में पा सकते हैं।
पुष्टि करना कि एक बकेट एक AWS खाते से संबंधित है
जैसा कि इस ब्लॉग पोस्ट में समझाया गया है, यदि आपके पास एक बकेट को सूचीबद्ध करने की अनुमतियाँ हैं तो यह संभव है कि एक accountID की पुष्टि की जा सके कि बकेट किस खाते से संबंधित है, एक अनुरोध भेजकर:
यदि त्रुटि "Access Denied" है, तो इसका मतलब है कि खाता ID गलत थी।
Root account enumeration के रूप में उपयोग किए गए Emails
जैसा कि इस ब्लॉग पोस्ट में समझाया गया है, यह जांचना संभव है कि कोई ईमेल पता किसी AWS खाते से संबंधित है या नहीं, एक S3 bucket पर ACLs के माध्यम से ईमेल अनुमतियाँ देने का प्रयास करके। यदि इससे कोई त्रुटि उत्पन्न नहीं होती है, तो इसका मतलब है कि ईमेल किसी AWS खाते का root user है:
References
Last updated