DO - Functions

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

Basic Information

DigitalOcean Functions, επίσης γνωστές ως “DO Functions,” είναι μια πλατφόρμα υπολογισμού χωρίς διακομιστές που σας επιτρέπει να εκτελείτε κώδικα χωρίς να ανησυχείτε για την υποκείμενη υποδομή. Με τις DO Functions, μπορείτε να γράψετε και να αναπτύξετε τον κώδικά σας ως “συναρτήσεις” που μπορούν να ενεργοποιηθούν μέσω API, HTTP αιτημάτων (αν είναι ενεργοποιημένα) ή cron. Αυτές οι συναρτήσεις εκτελούνται σε ένα πλήρως διαχειριζόμενο περιβάλλον, οπότε δεν χρειάζεται να ανησυχείτε για την κλιμάκωση, την ασφάλεια ή τη συντήρηση.

Στο DO, για να δημιουργήσετε μια συνάρτηση, πρώτα πρέπει να δημιουργήσετε ένα namespace το οποίο θα είναι ομαδοποίηση συναρτήσεων.
Μέσα στο namespace μπορείτε στη συνέχεια να δημιουργήσετε μια συνάρτηση.

Triggers

Ο τρόπος για να ενεργοποιήσετε μια συνάρτηση μέσω REST API (πάντα ενεργοποιημένο, είναι η μέθοδος που χρησιμοποιεί το cli) είναι να ενεργοποιήσετε ένα αίτημα με ένα authentication token όπως:

curl -X POST "https://faas-lon1-129376a7.doserverless.co/api/v1/namespaces/fn-c100c012-65bf-4040-1230-2183764b7c23/actions/functionname?blocking=true&result=true" \
-H "Content-Type: application/json" \
-H "Authorization: Basic MGU0NTczZGQtNjNiYS00MjZlLWI2YjctODk0N2MyYTA2NGQ4OkhwVEllQ2t4djNZN2x6YjJiRmFGc1FERXBySVlWa1lEbUxtRE1aRTludXA1UUNlU2VpV0ZGNjNqWnVhYVdrTFg="

Για να δείτε πώς το εργαλείο doctl cli αποκτά αυτό το token (έτσι ώστε να μπορείτε να το αναπαραγάγετε), η παρακάτω εντολή δείχνει την πλήρη καταγραφή δικτύου:

doctl serverless connect --trace

Όταν είναι ενεργοποιημένος ο HTTP trigger, μια διαδικτυακή λειτουργία μπορεί να κληθεί μέσω αυτών των HTTP μεθόδων GET, POST, PUT, PATCH, DELETE, HEAD και OPTIONS.

Caution

Στις λειτουργίες DO, οι μεταβλητές περιβάλλοντος δεν μπορούν να κρυπτογραφηθούν (τη στιγμή που γράφεται αυτό).
Δεν μπόρεσα να βρω κανέναν τρόπο να τις διαβάσω από το CLI, αλλά από την κονσόλα είναι απλό.

Οι διευθύνσεις URL των λειτουργιών μοιάζουν έτσι: https://<random>.doserverless.co/api/v1/web/<namespace-id>/default/<function-name>

Enumeration

# Namespace
doctl serverless namespaces list

# Functions (need to connect to a namespace)
doctl serverless connect
doctl serverless functions list
doctl serverless functions invoke <func-name>
doctl serverless functions get <func-name>

# Logs of executions
doctl serverless activations list
doctl serverless activations get <activation-id> # Get all the info about execution
doctl serverless activations logs <activation-id> # get only the logs of execution
doctl serverless activations result <activation-id> # get only the response result of execution

# I couldn't find any way to get the env variables form the CLI

Caution

Δεν υπάρχει endpoint μεταδεδομένων από το sandbox Functions.

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