AWS - EMR Privesc

Aprende hacking en AWS desde cero hasta convertirte en un experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

EMR

Más información sobre EMR en:

pageAWS - EMR Enum

iam:PassRole, elasticmapreduce:RunJobFlow

Un atacante con estos permisos puede ejecutar un nuevo clúster EMR adjuntando roles de EC2 e intentar robar sus credenciales. Ten en cuenta que para hacer esto necesitarías conocer alguna clave privada ssh importada en la cuenta o importar una, y ser capaz de abrir el puerto 22 en el nodo maestro (podrías lograrlo 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

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

Impacto potencial: Escalada de privilegios al rol de servicio EC2 especificado.

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

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

Incluso si adjuntas un rol IAM a la instancia del notebook, en mis pruebas noté que pude robar credenciales administradas por AWS y no credenciales relacionadas con el rol IAM.

Impacto potencial: Escalada de privilegios al rol administrado por AWS arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile

elasticmapreduce:OpenEditorInConsole

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

Incluso si adjuntas un rol IAM a la instancia del notebook, en mis pruebas noté que pude robar credenciales administradas por AWS y no credenciales relacionadas con el rol IAM`.

Impacto potencial: Escalada de privilegios al rol administrado por AWS arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile

Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización