AWS - EMR Privesc

Reading time: 4 minutes

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks

EMR

Ulteriori info su EMR in:

AWS - EMR Enum

iam:PassRole, elasticmapreduce:RunJobFlow

Un attaccante con questi permessi può eseguire un nuovo cluster EMR allegando ruoli EC2 e cercare di rubare le sue credenziali.
Nota che per fare questo avresti bisogno di conoscere qualche chiave privata ssh importata nell'account o di importarne una, e di essere in grado di aprire la porta 22 nel nodo master (potresti essere in grado di farlo con gli attributi EmrManagedMasterSecurityGroup e/o ServiceAccessSecurityGroup all'interno di --ec2-attributes).

bash
# 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

Nota come un ruolo EMR è specificato in --service-role e un ruolo ec2 è specificato in --ec2-attributes all'interno di InstanceProfile. Tuttavia, questa tecnica consente solo di rubare le credenziali del ruolo EC2 (poiché ci si connetterà tramite ssh) ma non il ruolo IAM EMR.

Impatto Potenziale: Privesc al ruolo di servizio EC2 specificato.

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

Con questi permessi un attaccante può accedere alla console AWS, creare un Notebook e accedervi per rubare il ruolo IAM.

caution

Anche se attacchi un ruolo IAM all'istanza del notebook nei miei test ho notato che ero in grado di rubare credenziali gestite da AWS e non credenziali relative al ruolo IAM.

Impatto Potenziale: Privesc al ruolo gestito da AWS arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile

elasticmapreduce:OpenEditorInConsole

Solo con questo permesso un attaccante sarà in grado di accedere al Jupyter Notebook e rubare il ruolo IAM associato ad esso.
L'URL del notebook è https://<notebook-id>.emrnotebooks-prod.eu-west-1.amazonaws.com/<notebook-id>/lab/

caution

Anche se attacchi un ruolo IAM all'istanza del notebook nei miei test ho notato che ero in grado di rubare credenziali gestite da AWS e non credenziali relative al ruolo IAM.

Impatto Potenziale: Privesc al ruolo gestito da AWS arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks