AWS - Steal Lambda Requests
Last updated
Last updated
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Slicer είναι μια διαδικασία εκτός του κοντέινερ που στέλνει κλήσεις στη διαδικασία init.
Η διαδικασία init ακούει στη θύρα 9001 εκθέτοντας μερικά ενδιαφέροντα endpoints:
/2018-06-01/runtime/invocation/next
– λάβετε το επόμενο γεγονός κλήσης
/2018-06-01/runtime/invocation/{invoke-id}/response
– επιστρέψτε την απάντηση του χειριστή για την κλήση
/2018-06-01/runtime/invocation/{invoke-id}/error
– επιστρέψτε ένα σφάλμα εκτέλεσης
bootstrap.py έχει έναν βρόχο που λαμβάνει κλήσεις από τη διαδικασία init και καλεί τον κώδικα των χρηστών για να τις διαχειριστεί (/next
).
Τέλος, το bootstrap.py στέλνει στην init την απάντηση
Σημειώστε ότι το bootstrap φορτώνει τον κώδικα του χρήστη ως module, οπότε οποιαδήποτε εκτέλεση κώδικα που πραγματοποιείται από τον κώδικα των χρηστών συμβαίνει στην πραγματικότητα σε αυτή τη διαδικασία.
Ο στόχος αυτής της επίθεσης είναι να εκτελέσει ο κώδικας του χρήστη μια κακόβουλη διαδικασία bootstrap.py
μέσα στη διαδικασία bootstrap.py
που διαχειρίζεται το ευάλωτο αίτημα. Με αυτόν τον τρόπο, η κακόβουλη bootstrap διαδικασία θα αρχίσει να επικοινωνεί με τη διαδικασία init για να διαχειριστεί τα αιτήματα ενώ η νόμιμη bootstrap είναι παγιδευμένη εκτελώντας την κακόβουλη, οπότε δεν θα ζητήσει αιτήματα από τη διαδικασία init.
Αυτή είναι μια απλή εργασία για να επιτευχθεί καθώς ο κώδικας του χρήστη εκτελείται από τη νόμιμη διαδικασία bootstrap.py
. Έτσι, ο επιτιθέμενος θα μπορούσε:
Να στείλει ένα ψεύτικο αποτέλεσμα της τρέχουσας κλήσης στη διαδικασία init, ώστε η init να νομίζει ότι η διαδικασία bootstrap περιμένει περισσότερες κλήσεις.
Ένα αίτημα πρέπει να σταλεί στο /${invoke-id}/response
Το invoke-id μπορεί να αποκτηθεί από τη στοίβα της νόμιμης διαδικασίας bootstrap.py
χρησιμοποιώντας το inspect python module (όπως προτάθηκε εδώ) ή απλά ζητώντας το ξανά στο /2018-06-01/runtime/invocation/next
(όπως προτάθηκε εδώ).
Εκτελέστε μια κακόβουλη boostrap.py
που θα διαχειρίζεται τις επόμενες κλήσεις
Για λόγους μυστικότητας είναι δυνατό να στείλετε τις παραμέτρους κλήσεων lambda σε έναν ελεγχόμενο από τον επιτιθέμενο C2 και στη συνέχεια να διαχειριστείτε τα αιτήματα όπως συνήθως.
Για αυτήν την επίθεση, αρκεί να αποκτήσετε τον αρχικό κώδικα του bootstrap.py
από το σύστημα ή το github, να προσθέσετε τον κακόβουλο κώδικα και να τον εκτελέσετε από την τρέχουσα κλήση lambda.
Βρείτε μια ευπάθεια RCE.
Δημιουργήστε μια κακόβουλη bootstrap (π.χ. https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py)
Εκτελέστε την κακόβουλη bootstrap.
Μπορείτε εύκολα να εκτελέσετε αυτές τις ενέργειες εκτελώντας:
Για περισσότερες πληροφορίες, ελέγξτε https://github.com/carlospolop/lambda_bootstrap_switcher
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)