DO - Functions

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks :

Informations de base

Les fonctions DigitalOcean, également connues sous le nom de "DO Functions", sont une plateforme informatique sans serveur qui vous permet d'exécuter du code sans 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, des requêtes HTTP (si activées) ou cron. Ces fonctions sont exécutées dans un environnement entièrement géré, vous n'avez donc pas à vous soucier de l'évolutivité, 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 regroupera les 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 une API REST (toujours activée, c'est la méthode utilisée par l'interface en ligne de commande) est de déclencher une requête avec un jeton d'authentification comme suit :

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 en ligne de commande doctl obtient ce jeton (afin de pouvoir le reproduire), la commande suivante affiche la trace réseau complète :

doctl serverless connect --trace

Lorsque le déclencheur HTTP est activé, une fonction web peut être invoquée à travers ces méthodes HTTP GET, POST, PUT, PATCH, DELETE, HEAD et OPTIONS.

Dans les fonctions DO, les variables d'environnement ne peuvent pas être chiffrées (au moment de la rédaction de cet article). Je n'ai pas trouvé de moyen de les lire depuis l'interface en ligne de commande, mais depuis la console, c'est simple.

Les URL des fonctions ressemblent à ceci : https://<aléatoire>.doserverless.co/api/v1/web/<identifiant-de-l'espace-de-noms>/default/<nom-de-la-fonction>

É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

Il n'y a pas de point de terminaison de métadonnées dans le bac à sable des fonctions.

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks:

Dernière mise à jour