AWS - API Gateway 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)
Σύμφωνα με την ομιλία Attack Vectors for APIs Using AWS API Gateway Lambda Authorizers - Alexandre & Leonardo, οι Lambda Authorizers μπορούν να ρυθμιστούν χρησιμοποιώντας σύνταξη IAM για να δώσουν άδειες για την κλήση API endpoints. Αυτό προέρχεται από τα έγγραφα:
Το πρόβλημα με αυτόν τον τρόπο παροχής δικαιωμάτων για την κλήση endpoints είναι ότι το "*" υποδηλώνει "οτιδήποτε" και δεν υποστηρίζεται καμία άλλη σύνταξη 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
για παράδειγμα.
Πρέπει πάντα να έχετε σαφές τι θέλετε να επιτρέψετε να έχει πρόσβαση και στη συνέχεια να ελέγξετε αν είναι δυνατές άλλες καταστάσεις με τα παραχωρηθέντα δικαιώματα.
Για περισσότερες πληροφορίες, εκτός από τα docs, μπορείτε να βρείτε κώδικα για την υλοποίηση authorizers σε αυτό το επίσημο aws github.
Στην ίδια ομιλία εκτίθεται το γεγονός ότι αν ο κώδικας χρησιμοποιεί είσοδο χρήστη για να δημιουργήσει τις IAM πολιτικές, wildcards (και άλλα όπως "." ή συγκεκριμένες συμβολοσειρές) μπορούν να περιληφθούν εκεί με στόχο την παράκαμψη περιορισμών.
Ακριβώς όπως με τα S3 buckets, τα Data Exchange και τις διευθύνσεις URL των Lambda gateways, είναι δυνατό να βρείτε το ID λογαριασμού ενός λογαριασμού εκμεταλλευόμενοι το aws:ResourceAccount
Policy Condition Key από μια δημόσια διεύθυνση URL του API Gateway. Αυτό γίνεται βρίσκοντας το ID λογαριασμού ένα χαρακτήρα τη φορά εκμεταλλευόμενοι τα wildcard στην ενότητα aws:ResourceAccount
της πολιτικής.
Αυτή η τεχνική επιτρέπει επίσης να αποκτήσετε τιμές ετικετών αν γνωρίζετε το κλειδί της ετικέτας (υπάρχουν μερικές προεπιλεγμένες ενδιαφέρουσες).
Μπορείτε να βρείτε περισσότερες πληροφορίες στην αρχική έρευνα και το εργαλείο conditional-love για να αυτοματοποιήσετε αυτή την εκμετάλλευση.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)