AWS - API Gateway Unauthenticated Enum
Παράκαμψη Κλήσης API
Σύμφωνα με την ομιλία Attack Vectors for APIs Using AWS API Gateway Lambda Authorizers - Alexandre & Leonardo, οι Lambda Authorizers μπορούν να ρυθμιστούν χρησιμοποιώντας τη σύνταξη IAM για να δώσουν δικαιώματα για την κλήση των σημείων άκρης του API. Αυτό προέρχεται από τα έγγραφα:
Το πρόβλημα με αυτόν τον τρόπο να δίνονται δικαιώματα για την εκκίνηση των σημείων πρόσβασης είναι ότι το "*" υπονοεί "οτιδήποτε" και δεν υποστηρίζεται πλέον σύνταξη regex.
Μερικά παραδείγματα:
Ένας κανόνας όπως
arn:aws:execute-apis:sa-east-1:accid:api-id/prod/*/dashboard/*
για να δώσει σε κάθε χρήστη πρόσβαση στο/dashboard/user/{username}
θα τους δώσει πρόσβαση και σε άλλα μονοπάτια όπως/admin/dashboard/createAdmin
για παράδειγμα.
Σημειώστε ότι το "*" δεν σταματάει να επεκτείνεται με κάθε κάθετο, επομένως, αν χρησιμοποιήσετε το "*" για παράδειγμα στο api-id, μπορεί επίσης να υποδεικνύει "οποιοδήποτε στάδιο" ή "οποιαδήποτε μέθοδο" όσο η τελική regex παραμένει έγκυρη.
Έτσι, arn:aws:execute-apis:sa-east-1:accid:*/prod/GET/dashboard/*
Μπορεί να επικυρώσει μια αίτηση post στο στάδιο δοκιμής στο μονοπάτι /prod/GET/dashboard/admin
για παράδειγμα.
Πρέπει πάντα να έχετε σαφώς τι θέλετε να επιτρέψετε στην πρόσβαση και στη συνέχεια να ελέγξετε αν είναι δυνατά και άλλα σενάρια με τα δικαιώματα που έχουν χορηγηθεί.
Για περισσότερες πληροφορίες, εκτός από τα έγγραφα, μπορείτε να βρείτε κώδικα για την υλοποίηση των εξουσιοδοτητών στο επίσημο αποθετήριο aws στο github.
Έγχυση Πολιτικής IAM
Στην ίδια ομιλία αποκαλύπτεται το γεγονός ότι αν ο κώδικας χρησιμοποιεί είσοδο χρήστη για να δημιουργήσει τις πολιτικές IAM, μπορούν να συμπεριληφθούν χαρακτήρες μπαλαντέρ (και άλλοι όπως "." ή συγκεκριμένες συμβολοσειρές) με σκοπό την αποφυγή περιορισμών.
Δημόσιος Πρότυπος URL
Λήψη του Αναγνωριστικού Λογαριασμού από δημόσιο URL API Gateway
Όπως και με τα S3 buckets, τα Data Exchange και τα Lambda URLs gateways, είναι δυνατόν να βρεθεί το αναγνωριστικό λογαριασμού ενός λογαριασμού καταχρώντας το aws:ResourceAccount
Policy Condition Key από ένα δημόσιο URL API Gateway. Αυτό επιτυγχάνεται βρίσκοντας το αναγνωριστικό λογαριασμού χαρακτήρα-χαρακτήρα καταχρώντας wildcards στο τμήμα aws:ResourceAccount
της πολιτικής.
Αυτή η τεχνική επίσης επιτρέπει την ανάκτηση τιμών ετικετών εάν γνωρίζετε το κλειδί της ετικέτας (υπάρχουν μερικές προεπιλεγμένες ενδιαφέρουσες).
Μπορείτε να βρείτε περισσότερες πληροφορίες στην αρχική έρευνα και στο εργαλείο conditional-love για την αυτοματοποίηση αυτής της εκμετάλλευσης.
Last updated