AWS - EMR Privesc

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

EMR

Περισσότερες πληροφορίες για EMR στο:

AWS - EMR Enum

iam:PassRole, elasticmapreduce:RunJobFlow

Ένας επιτιθέμενος με αυτά τα δικαιώματα μπορεί να τρέξει ένα νέο EMR cluster επισυνάπτοντας EC2 roles και να προσπαθήσει να κλέψει τα διαπιστευτήριά του.
Σημειώστε ότι για να το κάνετε αυτό θα χρειαστεί να γνωρίζετε κάποιο ssh priv key που έχει εισαχθεί στον λογαριασμό ή να εισάγετε ένα, και να μπορείτε να ανοίξετε το port 22 στον master node (μπορεί να καταφέρετε να το κάνετε αυτό με τα attributes EmrManagedMasterSecurityGroup και/ή ServiceAccessSecurityGroup μέσα στο --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

Σημειώστε πώς ένα EMR role ορίζεται στο --service-role και ένα ec2 role ορίζεται στο --ec2-attributes μέσα στο InstanceProfile. Ωστόσο, αυτή η τεχνική επιτρέπει μόνο την κλοπή των credentials του EC2 role (καθώς θα συνδεθείτε μέσω ssh) και όχι του EMR IAM Role.

Πιθανός Αντίκτυπος: Privesc στο EC2 service role που ορίζεται.

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

Με αυτά τα δικαιώματα, ένας επιτιθέμενος μπορεί να εισέλθει στο AWS console, να δημιουργήσει ένα Notebook και να αποκτήσει πρόσβαση σε αυτό για να κλέψει τον IAM Role.

Caution

Ακόμα κι αν επισυνάψετε έναν IAM role στην notebook instance, στις δοκιμές μου παρατήρησα ότι κατάφερα να κλέψω AWS managed credentials και όχι creds που σχετίζονται με τον IAM role.

Πιθανός Αντίκτυπος: Privesc σε AWS managed role arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile

elasticmapreduce:OpenEditorInConsole

Μόνο με αυτή την άδεια, ένας επιτιθέμενος θα μπορεί να έχει πρόσβαση στο Jupyter Notebook και να κλέψει τον IAM role που του αντιστοιχεί.
The URL of the notebook is https://<notebook-id>.emrnotebooks-prod.eu-west-1.amazonaws.com/<notebook-id>/lab/

Caution

Ακόμα κι αν επισυνάψετε έναν IAM role στην notebook instance, στις δοκιμές μου παρατήρησα ότι κατάφερα να κλέψω AWS managed credentials και όχι creds που σχετίζονται με τον IAM role.

Πιθανός Αντίκτυπος: Privesc σε AWS managed role arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks