Files
hacktricks-cloud/src/pentesting-cloud/digital-ocean-pentesting/do-services/do-functions.md

3.6 KiB
Raw Blame History

DO - Функції

{{#include ../../../banners/hacktricks-training.md}}

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

DigitalOcean Functions, також відомі як "DO Functions", є платформою безсерверних обчислень, яка дозволяє вам виконувати код, не турбуючись про підлягаючу інфраструктуру. З DO Functions ви можете писати та розгортати свій код як "функції", які можуть бути активовані через API, HTTP запити (якщо увімкнено) або 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.

Caution

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

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

Enumeration

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

{{#include ../../../banners/hacktricks-training.md}}