AWS - EMR Privesc

Tip

Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks

EMR

Más info sobre EMR en:

AWS - EMR Enum

iam:PassRole, elasticmapreduce:RunJobFlow

Un atacante con estos permisos puede ejecutar un nuevo clúster EMR adjuntando roles de EC2 y tratar de robar sus credenciales.
Ten en cuenta que para hacer esto necesitarías conocer alguna ssh priv key importada en la cuenta o importar una, y poder abrir el puerto 22 en el nodo master (podrías ser capaz de hacer esto con los atributos EmrManagedMasterSecurityGroup y/o ServiceAccessSecurityGroup dentro de --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

Observe cómo se especifica un EMR role en --service-role y un ec2 role en --ec2-attributes dentro de InstanceProfile. Sin embargo, esta técnica solo permite robar las credenciales del role EC2 (ya que te conectarás via ssh) pero no el IAM Role de EMR.

Impacto potencial: Privesc al EC2 service role especificado.

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

Con estos permisos un atacante puede ir a la AWS console, crear un Notebook y acceder a él para robar el IAM Role.

Caution

Incluso si adjuntas un IAM role a la instancia del notebook, en mis pruebas observé que pude robar AWS managed credentials y no las credenciales relacionadas con el IAM role adjunto.

Impacto potencial: Privesc to AWS managed role arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile

elasticmapreduce:OpenEditorInConsole

Solo con este permiso un atacante podrá acceder al Jupyter Notebook y robar el IAM Role asociado a él.
La URL del notebook es https://<notebook-id>.emrnotebooks-prod.eu-west-1.amazonaws.com/<notebook-id>/lab/

Caution

Incluso si adjuntas un IAM role a la instancia del notebook, en mis pruebas observé que pude robar AWS managed credentials y no las credenciales relacionadas con el IAM role adjunto

Impacto potencial: Privesc to AWS managed role arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile

Tip

Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks