AWS - S3 Unauthenticated Enum

Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (Ειδικός Ερυθρού Συνεργείου HackTricks AWS)!

Άλλοι τρόποι υποστήριξης του HackTricks:

Δημόσια Buckets S3

Ένα bucket θεωρείται "δημόσιο" αν οποιοσδήποτε χρήστης μπορεί να απαριθμήσει το περιεχόμενο του bucket, και "ιδιωτικό" αν το περιεχόμενο του bucket μπορεί να απαριθμηθεί ή να γραφτεί μόνο από συγκεκριμένους χρήστες.

Οι εταιρείες μπορεί να έχουν κακώς ρυθμισμένες άδειες buckets που παρέχουν πρόσβαση είτε σε όλα είτε σε όλους τους εξουσιοδοτημένους χρήστες στο AWS σε οποιοδήποτε λογαριασμό (έτσι σε οποιονδήποτε). Σημειώστε ότι ακόμα και με τέτοιες κακές ρυθμίσεις, ορισμένες ενέργειες ενδέχεται να μην είναι δυνατό να πραγματοποιηθούν καθώς τα buckets μπορεί να έχουν τις δικές τους λίστες ελέγχου πρόσβασης (ACLs).

Μάθετε για την κακώς ρυθμισμένη AWS-S3 εδώ: http://flaws.cloud και http://flaws2.cloud/

Εύρεση Buckets AWS

Διαφορετικές μέθοδοι για να βρείτε όταν μια ιστοσελίδα χρησιμοποιεί το AWS για την αποθήκευση ορισμένων πόρων:

Απαρίθμηση & OSINT:

  • Χρησιμοποιώντας το πρόσθετο προγράμματος περιήγησης wappalyzer

  • Χρησιμοποιώντας το burp (ανάρριχηση του web) ή με τη χειροκίνητη περιήγηση στη σελίδα όλοι οι φορτωμένοι πόροι θα αποθηκευτούν στο Ιστορικό.

  • Ελέγξτε τους πόρους σε τομείς όπως:

http://s3.amazonaws.com/[bucket_name]/
http://[bucket_name].s3.amazonaws.com/
  • Ελέγξτε τα CNAMES καθώς το resources.domain.com ενδέχεται να έχει το CNAME bucket.s3.amazonaws.com

  • Ελέγξτε το https://buckets.grayhatwarfare.com, μια ιστοσελίδα με ήδη ανακαλυμμένα ανοικτά buckets.

  • Το όνομα του bucket και το όνομα του τομέα του bucket πρέπει να είναι τα ίδια.

  • Το 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/.

Βίαιη Δύναμη

Μπορείτε να βρείτε buckets με το βίαιο δύναμη ονόματα που σχετίζονται με την εταιρεία που ελέγχετε:

# Δημιουργία λίστας λέξεων για τη δημιουργία περιστροφών
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 buckets, το BucketLoot μπορεί αυτόματα να αναζητήσει ενδιαφέρουσες πληροφορίες.

Βρείτε την Περιοχή

Μπορείτε να βρείτε όλες τις υποστηριζόμενες περιοχές από το AWS στο https://docs.aws.amazon.com/general/latest/gr/s3.html

Μέσω DNS

Μπορείτε να βρείτε την περιοχή ενός bucket με ένα dig και nslookup κάνοντας μια DNS αίτηση της ανακαλυφθείσας IP:

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.

Ελέγξτε ότι το αναγνωρισμένο domain έχει τη λέξη "website". Μπορείτε να έχετε πρόσβαση στον στατικό ιστότοπο πηγαίνοντας στο: flaws.cloud.s3-website-us-west-2.amazonaws.com ή μπορείτε να έχετε πρόσβαση στο bucket επισκεπτόμενο: flaws.cloud.s3-us-west-2.amazonaws.com

Δοκιμάζοντας

Αν προσπαθήσετε να έχετε πρόσβαση σε ένα bucket, αλλά στο όνομα domain που καθορίζετε μια άλλη περιοχή (για παράδειγμα το bucket είναι στο bucket.s3.amazonaws.com αλλά προσπαθείτε να έχετε πρόσβαση στο bucket.s3-website-us-west-2.amazonaws.com), τότε θα σας κατευθύνει στη σωστή τοποθεσία:

Απαρίθμηση του bucket

Για να δοκιμάσετε τον βαθμό προσβασιμότητας του bucket, ένας χρήστης μπορεί απλά να εισάγει το URL στον περιηγητή του ιστού. Ένα ιδιωτικό bucket θα απαντήσει με "Απορρίφθηκε η πρόσβαση". Ένα δημόσιο bucket θα εμφανίσει τα πρώτα 1.000 αντικείμενα που έχουν αποθηκευτεί.

Ανοιχτό σε όλους:

Ιδιωτικό:

Μπορείτε επίσης να το ελέγξετε αυτό με το cli:

#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]

Δημόσιος πρότυπος URL

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

Λήψη του Αναγνωριστικού Λογαριασμού από δημόσιο Bucket

Είναι δυνατόν να προσδιοριστεί ένας λογαριασμός AWS εκμεταλλευόμενος το νέο S3:ResourceAccount Policy Condition Key. Αυτή η συνθήκη περιορίζει την πρόσβαση με βάση το S3 bucket στον οποίο ανήκει ένας λογαριασμός (άλλες πολιτικές που βασίζονται σε λογαριασμούς περιορίζουν βάσει του λογαριασμού στον οποίο ανήκει ο αιτούντας υποκείμενος). Και επειδή η πολιτική μπορεί να περιέχει μπαλαντέρ είναι δυνατόν να βρεθεί ο αριθμός λογαριασμού μόνο έναν αριθμό κάθε φορά.

Αυτό το εργαλείο αυτοματοποιεί τη διαδικασία:

# 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

Αυτή η τεχνική λειτουργεί επίσης με τα URL της API Gateway, τα URL των Lambda, τα σύνολα δεδομένων του Data Exchange και ακόμη και για να πάρετε την τιμή των ετικετών (εάν γνωρίζετε το κλειδί της ετικέτας). Μπορείτε να βρείτε περισσότερες πληροφορίες στην αρχική έρευνα και το εργαλείο conditional-love για να αυτοματοποιήσετε αυτήν την εκμετάλλευση.

Αναφορές

Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι υποστήριξης του HackTricks:

Last updated