AWS - Lambda Enum

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

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

Lambda

Το Amazon Web Services (AWS) Lambda περιγράφεται ως ένα υπηρεσία υπολογισμού που επιτρέπει την εκτέλεση κώδικα χωρίς την ανάγκη για παροχή ή διαχείριση διακομιστή. Χαρακτηρίζεται από την ικανότητά του να χειρίζεται αυτόματα την κατανομή πόρων που απαιτούνται για την εκτέλεση του κώδικα, εξασφαλίζοντας χαρακτηριστικά όπως υψηλή διαθεσιμότητα, κλιμακωσιμότητα και ασφάλεια. Ένα σημαντικό στοιχείο του Lambda είναι το μοντέλο τιμολόγησής του, όπου οι χρεώσεις βασίζονται αποκλειστικά στον χρόνο υπολογισμού που χρησιμοποιείται, εξαλείφοντας την ανάγκη για αρχικές επενδύσεις ή μακροπρόθεσμες υποχρεώσεις.

Για να καλέσετε ένα lambda είναι δυνατόν να το καλέσετε όσο συχνά θέλετε (με το Cloudwatch), να εκθέσετε ένα URL σημείο εισόδου και να το καλέσετε, να το καλέσετε μέσω API Gateway ή ακόμα βασισμένο σε συμβάντα όπως αλλαγές στα δεδομένα ενός κάδου S3 ή ενημερώσεις σε έναν πίνακα DynamoDB.

Ο κώδικας ενός lambda αποθηκεύεται στο /var/task.

Βάρη ονομάτων Λειτουργιών

Ένα Lambda μπορεί να έχει πολλές εκδόσεις. Και μπορεί να έχει περισσότερες από 1 έκδοση που εκτίθεται μέσω ονομάτων. Τα βάρη των κάθε μιας από τις εκδόσεις που εκτίθενται μέσα σε ένα όνομα θα αποφασίσουν ποιο όνομα θα λάβει την κλήση (μπορεί να είναι 90%-10% για παράδειγμα). Εάν ο κώδικας μιας από τις εκδόσεις είναι ευάλωτος μπορείτε να στείλετε αιτήματα μέχρι η ευάλωτη έκδοση να λάβει την εκμετάλλευση.

Πολιτικές Πόρων

Οι πολιτικές πόρων του Lambda επιτρέπουν να δίνετε πρόσβαση σε άλλες υπηρεσίες/λογαριασμούς για να καλέσουν το lambda για παράδειγμα. Για παράδειγμα, αυτή είναι η πολιτική για να επιτρέψετε σε οποιονδήποτε να έχει πρόσβαση σε ένα lambda που εκτίθεται μέσω URL:

Ή αυτή για να επιτρέψετε σε ένα API Gateway να το καλέσει:

Η απαρίθμηση είναι η διαδικασία της συλλογής πληροφοριών για ένα σύστημα ή μια υπηρεσία. Κατά τη διάρκεια της απαρίθμησης, στόχος είναι να ανακαλυφθούν πληροφορίες όπως οι διαθέσιμες λειτουργίες, οι παραμετροποιήσεις, οι δικαιώματα πρόσβασης και οι ευπάθειες του συστήματος ή της υπηρεσίας.

Στο πλαίσιο της AWS Lambda, η απαρίθμηση περιλαμβάνει την εξέταση των διαθέσιμων συναρτήσεων, των παραμέτρων περιβάλλοντος, των δικαιωμάτων IAM και των ευπαθειών ασφαλείας. Με την απαρίθμηση, μπορούμε να ανακαλύψουμε πληροφορίες που μπορούν να χρησιμοποιηθούν για την εκμετάλλευση του συστήματος ή την εντοπισμό ευπαθειών ασφαλείας.

aws lambda get-account-settings

# List functions and get extra config info
aws lambda list-functions
aws lambda get-function --function-name <function_name>
aws lambda get-function-configuration --function-name <function_name>
aws lambda list-function-event-invoke-configs --function-name <function_name>
## Check for creds in env vars
aws lambda list-functions | jq '.Functions[].Environment'
## Download & check the source code
aws lambda get-function --function-name "<func_name>" --query 'Code.Location'
wget -O lambda-function.zip <url-from-previous-query>

# Get Lambda URL (if any)
aws lambda list-function-url-configs --function-name <function_name>
aws lambda get-function-url-config --function-name <function_name>

# Get who has permissions to invoke the Lambda
aws lambda get-policy --function-name <function_name>

# Versions and Aliases
aws lambda list-versions-by-function --function-name <func_name>
aws lambda list-aliases --function-name <func_name>

# List layers
aws lambda list-layers
aws lambda list-layer-versions --layer-name <name>
aws lambda get-layer-version --layer-name <name> --version-number <ver>
aws lambda get-layer-version-by-arn --arn <name> #Get external ARNs

# List other metadata
aws lambda list-event-source-mappings
aws lambda list-code-signing-configs
aws lambda list-functions-by-code-signing-config --code-signing-config-arn <arn>

Κλήση ενός lambda

Χειροκίνητα

# Invoke function
aws lambda invoke --function-name FUNCTION_NAME /tmp/out
## Some functions will expect parameters, they will access them with something like:
## target_policys = event['policy_names']
## user_name = event['user_name']
aws lambda invoke --function-name <name> --cli-binary-format raw-in-base64-out --payload '{"policy_names": ["AdministratorAccess], "user_name": "sdf"}' out.txt

Μέσω αποκαλυμμένου URL

Μια από τις πιο απλές μεθόδους για να εντοπίσετε ευάλωτες AWS Lambda συναρτήσεις είναι να αναζητήσετε αποκαλυμμένα URLs. Οι αποκαλυμμένοι σύνδεσμοι μπορεί να προκύψουν από λάθος ρυθμίσεις ασφαλείας ή από ανεπιθύμητη δημοσίευση των συναρτήσεων.

Για να εκτελέσετε αυτήν την επίθεση, ακολουθήστε τα παρακάτω βήματα:

  1. Αναζητήστε δημόσια διαθέσιμα URLs που πιθανόν να ανήκουν σε AWS Lambda συναρτήσεις.

  2. Ελέγξτε αν οι συνδέσεις απαιτούν εξουσιοδότηση ή είναι προσβάσιμες από το κοινό.

  3. Εάν οι συνδέσεις είναι προσβάσιμες, δοκιμάστε να ανακτήσετε πληροφορίες ή να εκτελέσετε κώδικα μέσω του αποκαλυμμένου URL.

Αυτή η μέθοδος είναι αποτελεσματική για την εντοπισμό ευάλωτων συναρτήσεων, αλλά απαιτεί την εύρεση δημόσιων URLs που ανήκουν σε AWS Lambda συναρτήσεις.

aws lambda list-function-url-configs --function-name <function_name> #Get lambda URL
aws lambda get-function-url-config   --function-name <function_name> #Get lambda URL

Κλήση συνάρτησης Lambda μέσω URL

Τώρα είναι η στιγμή να ανακαλύψουμε πιθανές συναρτήσεις Lambda προς εκτέλεση:

aws --region us-west-2 --profile level6 lambda list-functions

Διατίθεται μια συνάρτηση lambda με το όνομα "Level6". Ας δούμε πώς μπορούμε να την καλέσουμε:

aws --region us-west-2 --profile level6 lambda get-policy --function-name Level6

Τώρα που γνωρίζετε το όνομα και το ID, μπορείτε να πάρετε το όνομα:

aws --profile level6 --region us-west-2 apigateway get-stages --rest-api-id "s33ppypa75"

Και τέλος καλέστε τη συνάρτηση προσπελαύνοντας (παρατηρήστε ότι το ID, το όνομα και το όνομα της συνάρτησης εμφανίζονται στο URL): https://s33ppypa75.execute-api.us-west-2.amazonaws.com/Prod/level6

URL:https://<rest-api-id>.execute-api.<region>.amazonaws.com/<stageName>/<funcName>

Άλλες Ενεργοποιήσεις

Υπάρχουν πολλές άλλες πηγές που μπορούν να ενεργοποιήσουν μια λειτουργία

Ανέλιξη Προνομίων

Στην ακόλουθη σελίδα μπορείτε να ελέγξετε πώς να καταχραστείτε τα δικαιώματα της Lambda για να αναβαθμίσετε τα προνόμια:

pageAWS - Lambda Privesc

Μη Ταυτοποιημένη Πρόσβαση

pageAWS - Lambda Unauthenticated Access

Μετά την Εκμετάλλευση

pageAWS - Lambda Post Exploitation

Διατήρηση

pageAWS - Lambda Persistence

Αναφορές

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

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

Last updated