AWS - API Gateway Unauthenticated Enum
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
API Invoke bypass
Σύμφωνα με την ομιλία Attack Vectors for APIs Using AWS API Gateway Lambda Authorizers - Alexandre & Leonardo, Lambda Authorizers μπορούν να ρυθμιστούν using IAM syntax ώστε να παρέχουν δικαιώματα για invoke των API endpoints. Αυτό προέρχεται from the docs:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Permission",
"Action": ["execute-api:Execution-operation"],
"Resource": [
"arn:aws:execute-api:region:account-id:api-id/stage/METHOD_HTTP_VERB/Resource-path"
]
}
]
}
Το πρόβλημα με αυτόν τον τρόπο χορήγησης δικαιωμάτων για την κλήση endpoints είναι ότι το “*” συνεπάγεται “anything” και δεν υποστηρίζεται πλέον σύνταξη regex.
Μερικά παραδείγματα:
- Ένας κανόνας όπως
arn:aws:execute-apis:sa-east-1:accid:api-id/prod/*/dashboard/*προκειμένου να δώσει σε κάθε χρήστη πρόσβαση στο/dashboard/user/{username}θα τους δώσει πρόσβαση και σε άλλες διαδρομές όπως/admin/dashboard/createAdminγια παράδειγμα.
Warning
Σημειώστε ότι “*” δεν σταματά να επεκτείνεται με slashes, επομένως, αν χρησιμοποιήσετε “*” στο api-id για παράδειγμα, μπορεί επίσης να υποδηλώνει “any stage” ή “any method” όσο το τελικό regex παραμένει έγκυρο.
Soarn:aws:execute-apis:sa-east-1:accid:*/prod/GET/dashboard/*
Can validate a post request to test stage to the path/prod/GET/dashboard/adminfor example.
Πρέπει πάντα να είναι σαφές τι θέλετε να επιτρέψετε και στη συνέχεια να ελέγξετε αν υπάρχουν άλλα σενάρια που γίνονται δυνατά με τα παραχωρημένα δικαιώματα.
Για περισσότερες πληροφορίες, πέρα από τα docs, μπορείτε να βρείτε κώδικα για την υλοποίηση authorizers στο this official aws github.
IAM Policy Injection
Στην ίδια talk αποκαλύπτεται το γεγονός ότι αν ο κώδικας χρησιμοποιεί user input για να generate the IAM policies, wildcards (και άλλα όπως “.” ή συγκεκριμένα strings) μπορούν να συμπεριληφθούν εκεί με στόχο το bypassing restrictions.
Πρότυπο δημόσιου URL
https://{random_id}.execute-api.{region}.amazonaws.com/{user_provided}
Λήψη Account ID από public API Gateway URL
Όπως με τα S3 buckets, Data Exchange και Lambda URLs gateways, είναι δυνατό να βρεις το Account ID ενός λογαριασμού εκμεταλλευόμενος το aws:ResourceAccount Policy Condition Key από ένα public API Gateway URL. Αυτό γίνεται βρίσκοντας το Account ID χαρακτήρα-χαρακτήρα εκμεταλλευόμενοι wildcards στην ενότητα aws:ResourceAccount της policy.
Αυτή η τεχνική επιτρέπει επίσης την ανάκτηση των values of tags εάν γνωρίζεις το tag key (υπάρχουν μερικά προεπιλεγμένα ενδιαφέροντα).
Μπορείτε να βρείτε περισσότερες πληροφορίες στην original research και στο εργαλείο conditional-love για να αυτοματοποιήσετε αυτήν την εκμετάλλευση.
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
HackTricks Cloud

