AWS - EMR Privesc

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks :

EMR

Plus d'informations sur EMR dans :

pageAWS - EMR Enum

iam:PassRole, elasticmapreduce:RunJobFlow

Un attaquant avec ces autorisations peut exécuter un nouveau cluster EMR en attachant des rôles EC2 et essayer de voler ses informations d'identification. Notez que pour ce faire, vous auriez besoin de connaître une clé privée ssh importée dans le compte ou d'en importer une, et de pouvoir ouvrir le port 22 dans le nœud maître (vous pourriez être en mesure de le faire avec les attributs EmrManagedMasterSecurityGroup et/ou ServiceAccessSecurityGroup à l'intérieur 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

Notez comment un rôle EMR est spécifié dans --service-role et un rôle ec2 est spécifié dans --ec2-attributes à l'intérieur de InstanceProfile. Cependant, cette technique ne permet que de voler les informations d'identification du rôle EC2 (car vous vous connecterez via ssh) mais pas le rôle IAM EMR.

Impact potentiel : Élévation de privilèges vers le rôle de service EC2 spécifié.

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

Avec ces autorisations, un attaquant peut accéder à la console AWS, créer un Notebook et y accéder pour voler le rôle IAM.

Même si vous attachez un rôle IAM à l'instance du notebook, dans mes tests, j'ai remarqué que j'ai pu voler des informations d'identification gérées par AWS et non des informations d'identification liées au rôle IAM.

Impact potentiel : Élévation de privilèges vers le rôle géré par AWS arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile

elasticmapreduce:OpenEditorInConsole

Avec cette autorisation seule, un attaquant pourra accéder au Jupyter Notebook et voler le rôle IAM qui lui est associé. L'URL du notebook est https://<notebook-id>.emrnotebooks-prod.eu-west-1.amazonaws.com/<notebook-id>/lab/

Même si vous attachez un rôle IAM à l'instance du notebook, dans mes tests, j'ai remarqué que j'ai pu voler des informations d'identification gérées par AWS et non des informations d'identification liées au rôle IAM`.

Impact potentiel : Élévation de privilèges vers le rôle géré par AWS arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile

Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres façons de soutenir HackTricks :

Dernière mise à jour