DO - Функції

Reading time: 3 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks

Основна інформація

DigitalOcean Functions, також відомі як "DO Functions", є платформою безсерверних обчислень, яка дозволяє вам виконувати код, не турбуючись про підлягаючу інфраструктуру. З DO Functions ви можете писати та розгортати свій код як "функції", які можуть бути активовані через API, HTTP запити (якщо увімкнено) або cron. Ці функції виконуються в повністю керованому середовищі, тому вам не потрібно турбуватися про масштабування, безпеку або обслуговування.

У DO, щоб створити функцію, спочатку потрібно створити простір імен, який буде групувати функції.
Всередині простору імен ви можете потім створити функцію.

Тригери

Спосіб активації функції через REST API (завжди увімкнено, це метод, який використовує cli) полягає в активації запиту з токеном автентифікації на зразок:

bash
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 отримує цей токен (щоб ви могли його відтворити), наступна команда показує повний мережевий слід:

bash
doctl serverless connect --trace

Коли HTTP тригер увімкнено, веб-функцію можна викликати через ці HTTP методи GET, POST, PUT, PATCH, DELETE, HEAD та OPTIONS.

caution

У DO функціях змінні середовища не можуть бути зашифровані (на момент написання цього тексту).
Я не зміг знайти жодного способу прочитати їх з CLI, але з консолі це просто.

URL функцій виглядають так: https://<random>.doserverless.co/api/v1/web/<namespace-id>/default/<function-name>

Enumeration

bash
# 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

Немає метаданих з кінцевої точки в пісочниці Functions.

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks