GCP - AppEngine Privesc

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

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

App Engine

Για περισσότερες πληροφορίες σχετικά με το App Engine, ελέγξτε:

GCP - App Engine Enum

appengine.applications.get, appengine.instances.get, appengine.instances.list, appengine.operations.get, appengine.operations.list, appengine.services.get, appengine.services.list, appengine.versions.create, appengine.versions.get, appengine.versions.list, cloudbuild.builds.get,iam.serviceAccounts.actAs, resourcemanager.projects.get, storage.objects.create, storage.objects.list

Αυτές είναι οι απαιτούμενες άδειες για το ανέβασμα μιας εφαρμογής χρησιμοποιώντας το gcloud cli. Ίσως οι άδειες get και list να μπορούν να αποφευχθούν.

Μπορείτε να βρείτε παραδείγματα κώδικα σε Python στο https://github.com/GoogleCloudPlatform/python-docs-samples/tree/main/appengine

Από προεπιλογή, το όνομα της υπηρεσίας της εφαρμογής θα είναι default, και μπορεί να υπάρχει μόνο 1 παράδειγμα με το ίδιο όνομα. Για να το αλλάξετε και να δημιουργήσετε μια δεύτερη εφαρμογή, στο app.yaml, αλλάξτε την τιμή του κύριου κλειδιού σε κάτι όπως service: my-second-app

cd python-docs-samples/appengine/flexible/hello_world
gcloud app deploy #Upload and start application inside the folder

Δώστε του τουλάχιστον 10-15 λεπτά, αν δεν λειτουργεί καλέστε αναπτύξτε άλλες φορές και περιμένετε λίγα λεπτά.

Είναι δυνατόν να υποδείξετε τον Λογαριασμό Υπηρεσίας που θα χρησιμοποιηθεί, αλλά από προεπιλογή χρησιμοποιείται ο προεπιλεγμένος Λογαριασμός Υπηρεσίας του App Engine.

Η διεύθυνση URL της εφαρμογής είναι κάτι σαν https://<proj-name>.oa.r.appspot.com/ ή https://<service_name>-dot-<proj-name>.oa.r.appspot.com

appengine.instances.enableDebug, appengine.instances.get, appengine.instances.list, appengine.operations.get, appengine.services.get, appengine.services.list, appengine.versions.get, appengine.versions.list, compute.projects.get

Με αυτές τις άδειες, είναι δυνατό να συνδεθείτε μέσω ssh στις περιπτώσεις του App Engine τύπου ευέλικτο (όχι τυπικό). Ορισμένες από τις άδειες list και get μπορεί να μην είναι πραγματικά απαραίτητες.

gcloud app instances ssh --service <app-name> --version <version-id> <ID>

appengine.applications.update, appengine.operations.get

Νομίζω ότι αυτό απλά αλλάζει το υπόβαθρο του χρήστη υπηρεσίας που θα χρησιμοποιήσει η Google για να ρυθμίσει τις εφαρμογές, οπότε δεν νομίζω ότι μπορείς να καταχραστείς αυτό για να κλέψεις τον λογαριασμό υπηρεσίας.

gcloud app update --service-account=<sa_email>

appengine.versions.getFileContents, appengine.versions.update

Δεν είμαι σίγουρος πώς να χρησιμοποιήσω αυτές τις άδειες ή αν είναι χρήσιμες (σημειώστε ότι όταν αλλάζετε τον κώδικα, δημιουργείται μια νέα έκδοση, οπότε δεν ξέρω αν μπορείτε απλά να ενημερώσετε τον κώδικα ή τον ρόλο IAM ενός, αλλά υποθέτω ότι θα πρέπει να μπορείτε, ίσως αλλάζοντας τον κώδικα μέσα στο κάδο;;).

Εγγραφή πρόσβασης στα καδούς

Ακόμα και με εγγραφή πρόσβασης στους κάδους όπου βρίσκεται ο πηγαίος κώδικας, δεν ήταν δυνατή η εκτέλεση αυθαίρετου κώδικα τροποποιώντας τον πηγαίο κώδικα και το manifest.json. Ίσως αν παρακολουθείτε τον κάδο και ανιχνεύσετε τη στιγμή που δημιουργείται μια νέα έκδοση και ανεβαίνει ο πηγαίος κώδικας και το manifest, μπορεί να είναι δυνατή η αλλαγή τους έτσι ώστε η νέα έκδοση να χρησιμοποιεί τα προσβεβλημένα;;

Φαίνεται επίσης ότι οι στρώσεις του container αποθηκεύονται στον κάδο, ίσως να αλλάξετε αυτές;

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

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

Last updated