AWS - EMR Privesc

Support HackTricks

EMR

More info about EMR in:

iam:PassRole, elasticmapreduce:RunJobFlow

Un attaccante con questi permessi può eseguire un nuovo cluster EMR allegando ruoli EC2 e cercare di rubare le sue credenziali. Nota che per fare questo avresti bisogno di conoscere qualche chiave privata ssh importata nell'account o di importarne una, e di essere in grado di aprire la porta 22 nel nodo master (potresti essere in grado di farlo con gli attributi EmrManagedMasterSecurityGroup e/o ServiceAccessSecurityGroup all'interno di --ec2-attributes).

# 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 come un ruolo EMR è specificato in --service-role e un ruolo ec2 è specificato in --ec2-attributes all'interno di InstanceProfile. Tuttavia, questa tecnica consente solo di rubare le credenziali del ruolo EC2 (poiché ci si connetterà tramite ssh) ma non il ruolo IAM EMR.

Impatto Potenziale: Privesc al ruolo di servizio EC2 specificato.

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

Con questi permessi un attaccante può andare alla console AWS, creare un Notebook e accedervi per rubare il ruolo IAM.

Anche se attacchi un ruolo IAM all'istanza del notebook nei miei test ho notato che ero in grado di rubare credenziali gestite da AWS e non credenziali relative al ruolo IAM.

Impatto Potenziale: Privesc al ruolo gestito da AWS arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile

elasticmapreduce:OpenEditorInConsole

Solo con questo permesso un attaccante sarà in grado di accedere al Jupyter Notebook e rubare il ruolo IAM associato ad esso. L'URL del notebook è https://<notebook-id>.emrnotebooks-prod.eu-west-1.amazonaws.com/<notebook-id>/lab/

Anche se attacchi un ruolo IAM all'istanza del notebook nei miei test ho notato che ero in grado di rubare credenziali gestite da AWS e non credenziali relative al ruolo IAM.

Impatto Potenziale: Privesc al ruolo gestito da AWS arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile

Supporta HackTricks

Last updated