DO - Functions

Aprende hacking en AWS desde cero hasta experto con htARTE (Experto en Equipo Rojo de HackTricks AWS)!

Otras formas de apoyar a HackTricks:

Información Básica

DigitalOcean Functions, también conocido como "DO Functions", es una plataforma de computación sin servidor que te permite ejecutar código sin tener que preocuparte por la infraestructura subyacente. Con DO Functions, puedes escribir e implementar tu código como "funciones" que pueden ser activadas a través de API, solicitudes HTTP (si están habilitadas) o cron. Estas funciones se ejecutan en un entorno completamente gestionado, por lo que no necesitas preocuparte por el escalado, la seguridad o el mantenimiento.

En DO, para crear una función primero necesitas crear un espacio de nombres que agrupará las funciones. Dentro del espacio de nombres puedes luego crear una función.

Disparadores

La forma de activar una función a través de la API REST (siempre habilitada, es el método que utiliza la CLI) es mediante el envío de una solicitud con un token de autenticación como:

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

Para ver cómo obtiene la herramienta de línea de comandos doctl este token (para que puedas replicarlo), el siguiente comando muestra el rastreo completo de la red:

doctl serverless connect --trace

Cuando se habilita el desencadenador HTTP, una función web puede ser invocada a través de estos métodos HTTP GET, POST, PUT, PATCH, DELETE, HEAD y OPTIONS.

En las funciones de DO, las variables de entorno no pueden ser encriptadas (en el momento de escribir esto). No pude encontrar ninguna forma de leerlas desde la CLI, pero desde la consola es directo.

Las URLs de las funciones lucen así: https://<random>.doserverless.co/api/v1/web/<namespace-id>/default/<function-name>

Enumeración

# 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

No hay un punto de conexión de metadatos desde el sandbox de Functions.

Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización