AWS - Lambda Enum
Last updated
Last updated
Το 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 και των ευπαθειών ασφαλείας. Με την απαρίθμηση, μπορούμε να ανακαλύψουμε πληροφορίες που μπορούν να χρησιμοποιηθούν για την εκμετάλλευση του συστήματος ή την εντοπισμό ευπαθειών ασφαλείας.
Χειροκίνητα
Μέσω αποκαλυμμένου URL
Μια από τις πιο απλές μεθόδους για να εντοπίσετε ευάλωτες AWS Lambda συναρτήσεις είναι να αναζητήσετε αποκαλυμμένα URLs. Οι αποκαλυμμένοι σύνδεσμοι μπορεί να προκύψουν από λάθος ρυθμίσεις ασφαλείας ή από ανεπιθύμητη δημοσίευση των συναρτήσεων.
Για να εκτελέσετε αυτήν την επίθεση, ακολουθήστε τα παρακάτω βήματα:
Αναζητήστε δημόσια διαθέσιμα URLs που πιθανόν να ανήκουν σε AWS Lambda συναρτήσεις.
Ελέγξτε αν οι συνδέσεις απαιτούν εξουσιοδότηση ή είναι προσβάσιμες από το κοινό.
Εάν οι συνδέσεις είναι προσβάσιμες, δοκιμάστε να ανακτήσετε πληροφορίες ή να εκτελέσετε κώδικα μέσω του αποκαλυμμένου URL.
Αυτή η μέθοδος είναι αποτελεσματική για την εντοπισμό ευάλωτων συναρτήσεων, αλλά απαιτεί την εύρεση δημόσιων URLs που ανήκουν σε AWS Lambda συναρτήσεις.
Κλήση συνάρτησης Lambda μέσω URL
Τώρα είναι η στιγμή να ανακαλύψουμε πιθανές συναρτήσεις Lambda προς εκτέλεση:
Διατίθεται μια συνάρτηση lambda με το όνομα "Level6". Ας δούμε πώς μπορούμε να την καλέσουμε:
Τώρα που γνωρίζετε το όνομα και το ID, μπορείτε να πάρετε το όνομα:
Και τέλος καλέστε τη συνάρτηση προσπελαύνοντας (παρατηρήστε ότι το 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 για να αναβαθμίσετε τα προνόμια:
AWS - Lambda Privesc