DO - Fonctions

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks

Informations de base

DigitalOcean Functions, Ă©galement connu sous le nom de “DO Functions”, est une plateforme de calcul sans serveur qui vous permet de faire fonctionner du code sans avoir Ă  vous soucier de l’infrastructure sous-jacente. Avec DO Functions, vous pouvez Ă©crire et dĂ©ployer votre code sous forme de “fonctions” qui peuvent ĂȘtre dĂ©clenchĂ©es via API, requĂȘtes HTTP (si activĂ©es) ou cron. Ces fonctions sont exĂ©cutĂ©es dans un environnement entiĂšrement gĂ©rĂ©, donc vous n’avez pas Ă  vous soucier de la mise Ă  l’échelle, de la sĂ©curitĂ© ou de la maintenance.

Dans DO, pour crĂ©er une fonction, vous devez d’abord crĂ©er un espace de noms qui sera un groupe de fonctions.
À l’intĂ©rieur de l’espace de noms, vous pouvez ensuite crĂ©er une fonction.

Déclencheurs

La façon de dĂ©clencher une fonction via REST API (toujours activĂ©e, c’est la mĂ©thode utilisĂ©e par le cli) est de dĂ©clencher une requĂȘte avec un jeton d’authentification comme :

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

Pour voir comment l’outil cli doctl obtient ce jeton (afin que vous puissiez le reproduire), la commande suivante montre la trace rĂ©seau complĂšte :

doctl serverless connect --trace

Lorsque le dĂ©clencheur HTTP est activĂ©, une fonction web peut ĂȘtre invoquĂ©e via ces mĂ©thodes HTTP GET, POST, PUT, PATCH, DELETE, HEAD et OPTIONS.

Caution

Dans les fonctions DO, les variables d’environnement ne peuvent pas ĂȘtre chiffrĂ©es (au moment de la rĂ©daction de ce document).
Je n’ai trouvĂ© aucun moyen de les lire depuis la CLI mais depuis la console, c’est simple.

Les URLs des fonctions ressemblent Ă  ceci : https://<random>.doserverless.co/api/v1/web/<namespace-id>/default/<function-name>

ÉnumĂ©ration

# 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

Il n’y a pas de point de terminaison de mĂ©tadonnĂ©es depuis le sandbox des Functions.

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks