GCP - Cloud Functions Enum

Erlernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Cloud Functions

Google Cloud Functions sind darauf ausgelegt, Ihren Code zu hosten, der als Reaktion auf Ereignisse ausgeführt wird, ohne dass die Verwaltung eines Host-Betriebssystems erforderlich ist. Darüber hinaus unterstützen diese Funktionen die Speicherung von Umgebungsvariablen, die vom Code genutzt werden können.

Speicher

Der Cloud Functions Code wird in GCP Storage gespeichert. Daher kann jeder mit Lesezugriff auf Buckets in GCP den Cloud Functions-Code lesen. Der Code wird in einem Bucket wie folgt gespeichert:

gcf-sources-<number>-<region>/<function-name>-<uuid>/version-<n>/function-source.zip zum Beispiel: gcf-sources-645468741258-us-central1/function-1-003dcbdf-32e1-430f-a5ff-785a6e238c76/version-4/function-source.zip

Jeder Benutzer mit Schreibberechtigungen über den Bucket, der die Cloud Function speichert, könnte den ausgeführten Code überschreiben.

SA

Wenn nicht spezifiziert, wird standardmäßig das App Engine Default Service-Konto mit Editor-Berechtigungen über das Projekt der Cloud-Funktion angehängt.

Trigger, URL & Authentifizierung

Beim Erstellen einer Cloud-Funktion muss der Trigger angegeben werden. Ein häufiger Trigger ist HTTPS, der eine URL erstellt, über die die Funktion über das Web aufgerufen werden kann. Andere Trigger sind Pub/Sub, Storage, Filestore...

Das URL-Format lautet https://<region>-<project-gcp-name>.cloudfunctions.net/<func_name>

Wenn der HTTPS-Trigger verwendet wird, wird auch angegeben, ob der Aufrufer IAM-Berechtigungen haben muss, um die Funktion aufzurufen, oder ob jeder sie einfach aufrufen kann:

Innerhalb der Cloud-Funktion

Der Code wird im Ordner /workspace mit denselben Dateinamen wie die Dateien im Cloud Function heruntergeladen und mit dem Benutzer www-data ausgeführt. Die Festplatte ist nicht als schreibgeschützt eingebunden.

Enumeration

# List functions
gcloud functions list
gcloud functions describe <func_name> # Check triggers to see how is this function invoked
gcloud functions get-iam-policy <func_name>

# Get logs of previous runs. By default, limits to 10 lines
gcloud functions logs read <func_name> --limit [NUMBER]

# Call a function
curl https://<region>-<project>.cloudfunctions.net/<func_name>
gcloud functions call <func_name> --data='{"message": "Hello World!"}'

# If you know the name of projects you could try to BF cloud functions names

# Get events that could be used to trigger a cloud function
gcloud functions event-types list

# Access function with authentication
curl -X POST https://<region>-<project>.cloudfunctions.net/<func_name> \
-H "Authorization: bearer $(gcloud auth print-identity-token)" \
-H "Content-Type: application/json" \
-d '{}'

Privilege Escalation

Auf der folgenden Seite können Sie nachschauen, wie Sie Cloud-Funktionsberechtigungen missbrauchen, um Privilegien zu eskalieren:

pageGCP - Cloudfunctions Privesc

Unauthenticated Access

pageGCP - Cloud Functions Unauthenticated Enum

Post Exploitation

pageGCP - Cloud Functions Post Exploitation

Persistence

pageGCP - Cloud Functions Persistence

References

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated