AWS - S3 Unauthenticated Enum

htARTE (HackTricks AWS Red Team Expert) के साथ जीरो से हीरो तक AWS हैकिंग सीखें htARTE (HackTricks AWS Red Team Expert)!

HackTricks का समर्थन करने के अन्य तरीके:

S3 सार्वजनिक बकेट्स

एक बकेट को “सार्वजनिक” माना जाता है अगर कोई उपयोगकर्ता बकेट की सामग्री की सूची देख सकता है, और “निजी” अगर बकेट की सामग्री को केवल कुछ उपयोगकर्ताओं द्वारा सूचीबद्ध या लिखा जा सकता है

कंपनियां बकेट अनुमतियों को गलत रूप से कॉन्फ़िगर कर सकती हैं जो सब कुछ या किसी भी खाते में AWS में प्रमाणित सभी उपयोगकर्ताओं को पहुंच प्रदान कर सकती है। ध्यान दें, कि ऐसी गलत कॉन्फ़िगरेशन के साथ कुछ क्रियाएँ की जा सकती हैं क्योंकि बकेट्स के अपने एक्सेस नियंत्रण सूची (ACLs) हो सकते हैं।

AWS-S3 गलत कॉन्फ़िगरेशन के बारे में जानें यहाँ: http://flaws.cloud और http://flaws2.cloud/

AWS बकेट्स खोजना

वेबपेज जब AWS का उपयोग कर रहा होता है तो कुछ संसाधनों को स्टोरेज करने के लिए खोजने के विभिन्न तरीके:

एनुमरेशन और OSINT:

  • wappalyzer ब्राउज़र प्लगइन का उपयोग करना

  • burp का उपयोग करके (वेब को spidering करके) या पृष्ठ में मैन्युअल रूप से नेविगेट करके सभी संसाधन लोड किए जाएंगे जो इतिहास में सहेजे जाएंगे।

  • डोमेनों में से संसाधनों की जाँच करें:

http://s3.amazonaws.com/[bucket_name]/
http://[bucket_name].s3.amazonaws.com/
  • resources.domain.com के रूप में CNAMES की जाँच करें क्योंकि 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/

ब्रूट-फ़ोर्स

आप उस कंपनी से संबंधित नामों को ब्रूट-फ़ोर्सिंग करके बकेट्स खोज सकते हैं:

# परिणाम बनाने के लिए एक वर्डलिस्ट उत्पन्न करें
curl -s https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt > /tmp/words-s3.txt.temp
curl -s https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt >>/tmp/words-s3.txt.temp
cat /tmp/words-s3.txt.temp | sort -u > /tmp/words-s3.txt

# डोमेन और सबडोमेन्स के आधार पर टेस्ट करने के लिए एक वर्डलिस्ट उत्पन्न करें
## उन डोमेन और सबडोमेन्स को subdomains.txt में लिखें
cat subdomains.txt > /tmp/words-hosts-s3.txt
cat subdomains.txt | tr "." "-" >> /tmp/words-hosts-s3.txt
cat subdomains.txt | tr "." "\n" | sort -u >> /tmp/words-hosts-s3.txt

# हमले करने के लिए डोमेन और सबडोमेन्स के साथ एक सूची में आधारित परिणाम उत्पन्न करें
goaltdns -l /tmp/words-hosts-s3.txt -w /tmp/words-s3.txt -o /tmp/final-words-s3.txt.temp
## पिछला टूल सबडोमेन्स के लिए परिणाम उत्पन्न करने में विशेषज्ञ है, हम उस सूची को फ़िल्टर करेंगे
### ". से समाप्त होने वाली लाइनें हटाएं
cat /tmp/final-words-s3.txt.temp | grep -Ev "\.$" > /tmp/final-words-s3.txt.temp2
### TLD के बिना सूची बनाएं
cat /tmp/final-words-s3.txt.temp2 | sed -E 's/\.[a-zA-Z0-9]+$//' > /tmp/final-words-s3.txt.temp3
### डॉट के बिना सूची बनाएं
cat /tmp/final-words-s3.txt.temp3 | tr -d "." > /tmp/final-words-s3.txt.temp4http://phantom.s3.amazonaws.com/
### हाइफ़न के बिना सूची बनाएं
cat /tmp/final-words-s3.txt.temp3 | tr "." "-" > /tmp/final-words-s3.txt.temp5

## अंतिम वर्डलिस्ट उत्पन्न करें
cat /tmp/final-words-s3.txt.temp2 /tmp/final-words-s3.txt.temp3 /tmp/final-words-s3.txt.temp4 /tmp/final-words-s3.txt.temp5 | grep -v -- "-\." | awk '{print tolower($0)}' | sort -u > /tmp/final-words-s3.txt
## कॉल s3scanner
s3scanner --threads 100 scan --buckets-file /tmp/final-words-s3.txt  | grep bucket_exists

S3 Buckets की लूट

दिए गए S3 ओपन बकेट्स, BucketLoot स्वचालित रूप से रोचक जानकारी की खोज कर सकता है।

क्षेत्र खोजें

आप AWS द्वारा समर्थित सभी क्षेत्रों को https://docs.aws.amazon.com/general/latest/gr/s3.html में खोज सकते हैं।

DNS के द्वारा

आप dig और nslookup के साथ एक DNS अनुरोध करके बकेट का क्षेत्र प्राप्त कर सकते हैं:

dig flaws.cloud
;; ANSWER SECTION:
flaws.cloud.    5    IN    A    52.218.192.11

nslookup 52.218.192.11
Non-authoritative answer:
11.192.218.52.in-addr.arpa name = s3-website-us-west-2.amazonaws.com.

जांचें कि निर्धारित डोमेन में "वेबसाइट" शब्द है।\

आप स्टेटिक वेबसाइट तक पहुंच सकते हैं जाकर: flaws.cloud.s3-website-us-west-2.amazonaws.com या आप बकेट तक पहुंच सकते हैं जाकर: flaws.cloud.s3-us-west-2.amazonaws.com

प्रयास करके

यदि आप एक बकेट तक पहुंचने की कोशिश करते हैं, लेकिन डोमेन नाम में आप एक और क्षेत्र निर्दिष्ट करते हैं (उदाहरण के लिए बकेट bucket.s3.amazonaws.com में है लेकिन आप bucket.s3-website-us-west-2.amazonaws.com तक पहुंचने की कोशिश करते हैं), तो आपको सही स्थान का संकेत दिया जाएगा:

बकेट का लेखन

बकेट की खुलापन का परीक्षण करने के लिए एक उपयोगकर्ता अपने वेब ब्राउज़र में URL दर्ज कर सकता है। एक निजी बकेट "पहुंच निषेधित" के साथ प्रतिक्रिया देगा। एक सार्वजनिक बकेट पहले 1,000 ऑब्जेक्ट्स की सूची देगा जो संग्रहित किए गए हैं।

सभी के लिए खुला है:

निजी:

आप इसे क्लाइंट टूल के साथ भी जांच सकते हैं:

#Use --no-sign-request for check Everyones permissions
#Use --profile <PROFILE_NAME> to indicate the AWS profile(keys) that youwant to use: Check for "Any Authenticated AWS User" permissions
#--recursive if you want list recursivelyls
#Opcionally you can select the region if you now it
aws s3 ls s3://flaws.cloud/ [--no-sign-request] [--profile <PROFILE_NAME>] [ --recursive] [--region us-west-2]

यदि बकेट के पास एक डोमेन नाम नहीं है, तो उसे इनुमरेट करने की कोशिश करते समय, केवल बकेट नाम डालें और पूरा AWSs3 डोमेन नहीं। उदाहरण: s3://<BUCKETNAME>

सार्वजनिक URL टेम्पलेट

https://{user_provided}.s3.amazonaws.com

सार्वजनिक बकेट से खाता आईडी प्राप्त करें

एक AWS खाता को निर्धारित करना संभव है नए S3:ResourceAccount नीति स्थिति कुंजी का लाभ उठाकर। यह स्थिति S3 बकेट के आधार पर पहुंच की प्रतिबंधित करती है (अन्य खाता-आधारित नीतियाँ अनुरोधकर्ता प्रिंसिपल के खाते के आधार पर प्रतिबंधित करती हैं)। और क्योंकि नीति में वाइल्डकार्ड शामिल हो सकते हैं, इससे संभव है खाता संख्या केवल एक नंबर एक समय में पता लगाना।

यह उपकरण प्रक्रिया को स्वत: संचालित करता है:

# Installation
pipx install s3-account-search
pip install s3-account-search
# With a bucket
s3-account-search arn:aws:iam::123456789012:role/s3_read s3://my-bucket
# With an object
s3-account-search arn:aws:iam::123456789012:role/s3_read s3://my-bucket/path/to/object.ext

यह तकनीक API Gateway URLs, Lambda URLs, Data Exchange डेटा सेट्स के साथ भी काम करती है और यह टैग के मान को प्राप्त करने के लिए भी काम करती है (यदि आप टैग कुंजी को जानते हैं)। आप मूल शोध और उस उपकरण conditional-love में अधिक जानकारी पा सकते हैं जो इस शोषण को स्वचालित करने के लिए है।

संदर्भ

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

Last updated