AWS Codebuild - Token Leakage
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)
Πρώτα, ελέγξτε αν υπάρχουν οποιαδήποτε διαπιστευτήρια πηγής ρυθμισμένα που θα μπορούσατε να διαρρεύσετε:
Αν διαπιστώσετε ότι η αυθεντικοποίηση για παράδειγμα στο Github είναι ρυθμισμένη στον λογαριασμό, μπορείτε να exfiltrate αυτήν την access (GH token ή OAuth token) κάνοντάς το Codebuild να χρησιμοποιήσει μια συγκεκριμένη εικόνα docker για να εκτελέσει την κατασκευή του έργου.
Για αυτόν τον σκοπό μπορείτε να δημιουργήσετε ένα νέο έργο Codebuild ή να αλλάξετε το περιβάλλον ενός υπάρχοντος για να ρυθμίσετε την εικόνα Docker.
Η εικόνα Docker που μπορείτε να χρησιμοποιήσετε είναι https://github.com/carlospolop/docker-mitm. Αυτή είναι μια πολύ βασική εικόνα Docker που θα ρυθμίσει τις env μεταβλητές https_proxy
, http_proxy
και SSL_CERT_FILE
. Αυτό θα σας επιτρέψει να παγιδεύσετε το μεγαλύτερο μέρος της κίνησης του host που υποδεικνύεται στο https_proxy
και http_proxy
και να εμπιστευτείτε το SSL CERT που υποδεικνύεται στο SSL_CERT_FILE
.
Create & Upload your own Docker MitM image
Ακολουθήστε τις οδηγίες του repo για να ρυθμίσετε τη διεύθυνση IP του proxy σας και να ρυθμίσετε το SSL cert σας και να κατασκευάσετε την εικόνα docker.
ΜΗ ΡΥΘΜΙΣΕΤΕ το http_proxy
για να μην παγιδεύσετε αιτήματα προς το endpoint μεταδεδομένων.
Μπορείτε να χρησιμοποιήσετε ngrok
όπως ngrok tcp 4444
για να ρυθμίσετε το proxy στον host σας.
Μόλις έχετε κατασκευάσει την εικόνα Docker, ανεβάστε την σε ένα δημόσιο repo (Dockerhub, ECR...)
Set the environment
Δημιουργήστε ένα νέο έργο Codebuild ή τροποποιήστε το περιβάλλον ενός υπάρχοντος.
Ρυθμίστε το έργο να χρησιμοποιεί την προηγουμένως παραγόμενη εικόνα Docker.
Set the MitM proxy in your host
Όπως υποδεικνύεται στο Github repo μπορείτε να χρησιμοποιήσετε κάτι σαν:
Η έκδοση mitmproxy που χρησιμοποιήθηκε ήταν 9.0.1, αναφέρθηκε ότι με την έκδοση 10 αυτό μπορεί να μην λειτουργήσει.
Εκτέλεση της κατασκευής & καταγραφή των διαπιστευτηρίων
Μπορείτε να δείτε το token στην κεφαλίδα Authorization:
Αυτό θα μπορούσε επίσης να γίνει από το aws cli με κάτι σαν
Codebuild έργα έχουν μια ρύθμιση που ονομάζεται insecureSsl
που είναι κρυμμένη στο διαδίκτυο και μπορείτε να την αλλάξετε μόνο μέσω του API.
Ενεργοποιώντας αυτό, επιτρέπει στο Codebuild να συνδεθεί με το αποθετήριο χωρίς να ελέγχει το πιστοποιητικό που προσφέρεται από την πλατφόρμα.
Πρώτα πρέπει να καταγράψετε την τρέχουσα ρύθμιση με κάτι σαν:
Στη συνέχεια, με τις συγκεντρωμένες πληροφορίες μπορείτε να ενημερώσετε τις ρυθμίσεις του έργου insecureSsl
σε True
. Ακολουθεί ένα παράδειγμα της ενημέρωσής μου για ένα έργο, παρατηρήστε το insecureSsl=True
στο τέλος (αυτό είναι το μόνο που χρειάζεται να αλλάξετε από τη συγκεντρωμένη διαμόρφωση).
Επιπλέον, προσθέστε επίσης τις μεταβλητές περιβάλλοντος http_proxy και https_proxy που δείχνουν στο tcp ngrok σας όπως:
Στη συνέχεια, εκτελέστε το βασικό παράδειγμα από https://github.com/synchronizing/mitm στην θύρα που υποδεικνύεται από τις μεταβλητές proxy (http_proxy και https_proxy)
Τέλος, κάντε κλικ στο Build the project, τα credentials θα σταλούν σε καθαρό κείμενο (base64) στη θύρα mitm:
Αυτή η ευπάθεια διορθώθηκε από την AWS κάποια στιγμή την εβδομάδα της 20ης Φεβρουαρίου 2023 (νομίζω την Παρασκευή). Έτσι, ένας επιτιθέμενος δεν μπορεί να την εκμεταλλευτεί πια :)
Ένας επιτιθέμενος με υψηλά δικαιώματα σε έναν CodeBuild θα μπορούσε να διαρρεύσει το token Github/Bitbucket που έχει ρυθμιστεί ή αν τα δικαιώματα είχαν ρυθμιστεί μέσω OAuth, το ** προσωρινό OAuth token που χρησιμοποιείται για την πρόσβαση στον κώδικα**.
Ένας επιτιθέμενος θα μπορούσε να προσθέσει τις μεταβλητές περιβάλλοντος http_proxy και https_proxy στο έργο CodeBuild που να δείχνουν στη μηχανή του (για παράδειγμα http://5.tcp.eu.ngrok.io:14972
).
Στη συνέχεια, αλλάξτε τη διεύθυνση URL του αποθετηρίου github για να χρησιμοποιεί HTTP αντί για HTTPS, για παράδειγμα: http://github.com/carlospolop-forks/TestActions
Στη συνέχεια, εκτελέστε το βασικό παράδειγμα από https://github.com/synchronizing/mitm στη θύρα που υποδεικνύεται από τις μεταβλητές proxy (http_proxy και https_proxy)
Τέλος, κάντε κλικ στο Build the project, τα credentials θα σταλούν σε καθαρό κείμενο (base64) στην θύρα mitm:
Τώρα ένας επιτιθέμενος θα μπορεί να χρησιμοποιήσει το token από τον υπολογιστή του, να καταγράψει όλα τα δικαιώματα που έχει και να (καταχραστεί) πιο εύκολα από το να χρησιμοποιήσει απευθείας την υπηρεσία CodeBuild.
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)