DO - Funkcije

Reading time: 3 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Osnovne informacije

DigitalOcean Functions, takođe poznate kao "DO Functions," je platforma za serverless računarstvo koja vam omogućava da izvršavate kod bez brige o osnovnoj infrastrukturi. Sa DO Functions, možete pisati i implementirati svoj kod kao "funkcije" koje mogu biti pokrenute putem API, HTTP zahteva (ako je omogućeno) ili cron. Ove funkcije se izvršavaju u potpuno upravljanom okruženju, tako da ne morate brinuti o skaliranju, bezbednosti ili održavanju.

U DO, da biste kreirali funkciju, prvo morate napraviti namespace koji će biti grupisanje funkcija.
Unutar namespace-a možete zatim kreirati funkciju.

Okidači

Način pokretanja funkcije putem REST API (uvek omogućeno, to je metoda koju koristi cli) je pokretanjem zahteva sa tokenom za autentifikaciju kao:

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

Da biste videli kako doctl cli alat dobija ovaj token (tako da ga možete replicirati), sledeća komanda prikazuje kompletnu mrežnu analizu:

bash
doctl serverless connect --trace

Kada je HTTP okidač omogućen, web funkcija može biti pozvana putem ovih HTTP metoda GET, POST, PUT, PATCH, DELETE, HEAD i OPTIONS.

caution

U DO funkcijama, promenljive okruženja ne mogu biti enkriptovane (u vreme pisanja ovog teksta).
Nisam mogao da pronađem način da ih pročitam iz CLI, ali iz konzole je jednostavno.

URL-ovi funkcija izgledaju ovako: https://<random>.doserverless.co/api/v1/web/<namespace-id>/default/<function-name>

Enumeracija

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

Ne postoji metadata endpoint iz Functions sandbox-a.

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks