DO - Functions

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Informazioni di base

DigitalOcean Functions, anche conosciuto come "DO Functions", è una piattaforma di calcolo serverless che ti permette di eseguire codice senza preoccuparti dell'infrastruttura sottostante. Con DO Functions, puoi scrivere e distribuire il tuo codice come "funzioni" che possono essere attivate tramite API, richieste HTTP (se abilitate) o cron. Queste funzioni vengono eseguite in un ambiente completamente gestito, quindi non devi preoccuparti di scalabilità, sicurezza o manutenzione.

In DO, per creare una funzione, prima devi creare uno spazio dei nomi che raggrupperà le funzioni. All'interno dello spazio dei nomi puoi quindi creare una funzione.

Trigger

Il modo per attivare una funzione tramite REST API (sempre abilitata, è il metodo utilizzato dalla CLI) è attivare una richiesta con un token di autenticazione come:

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="

Per vedere come lo strumento doctl ottiene questo token (in modo da poterlo replicare), il seguente comando mostra la traccia di rete completa:

doctl serverless connect --trace

Quando il trigger HTTP è abilitato, una funzione web può essere invocata attraverso questi metodi HTTP GET, POST, PUT, PATCH, DELETE, HEAD e OPTIONS.

Nelle funzioni DO, le variabili di ambiente non possono essere crittografate (al momento della stesura di questo testo). Non sono riuscito a trovare un modo per leggerle dalla CLI, ma dalla console è semplice.

Gli URL delle funzioni hanno questo formato: https://<random>.doserverless.co/api/v1/web/<namespace-id>/default/<function-name>

Enumerazione

# 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

Non c'è un endpoint di metadati dal sandbox delle Funzioni.

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Last updated