DO - Functions

学习并练习 AWS 黑客技巧:HackTricks 培训 AWS 红队专家 (ARTE) 学习并练习 GCP 黑客技巧:HackTricks 培训 GCP 红队专家 (GRTE)

支持 HackTricks

基本信息

DigitalOcean 函数,也称为 "DO 函数",是一个无服务器计算平台,让您可以运行代码而无需担心底层基础设施。使用 DO 函数,您可以编写和部署您的代码作为可以通过APIHTTP 请求(如果已启用)或cron触发的 "函数"。这些函数在完全托管的环境中执行,因此您无需担心扩展、安全性或维护。

在 DO 中,要创建一个函数,首先需要创建一个命名空间,它将分组函数。 在命名空间中,然后可以创建一个函数。

触发器

通过 REST API 触发函数的方法(始终启用,这是 CLI 使用的方法)是通过触发带有身份验证令牌的请求,如下所示:

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 工具如何获取此令牌(以便您可以复制它),以下命令显示完整的网络跟踪:

doctl serverless connect --trace

当启用HTTP触发器时,可以通过这些HTTP方法GET、POST、PUT、PATCH、DELETE、HEAD和OPTIONS调用Web函数。

在DO函数中,环境变量无法加密(截至撰写本文时)。 我找不到任何从CLI读取它们的方法,但从控制台读取很简单。

函数URL看起来像这样:https://<random>.doserverless.co/api/v1/web/<namespace-id>/default/<function-name>

枚举

# 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

Functions 沙盒中没有元数据端点

学习并练习 AWS Hacking:HackTricks 培训 AWS 红队专家 (ARTE) 学习并练习 GCP Hacking: HackTricks 培训 GCP 红队专家 (GRTE)

支持 HackTricks

Last updated