# GCP - Cloud Functions Unauthenticated Enum {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.** * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} ## Cloud Functions More information about Cloud Functions can be found in: {% content-ref url="../gcp-services/gcp-cloud-functions-enum.md" %} [gcp-cloud-functions-enum.md](../gcp-services/gcp-cloud-functions-enum.md) {% endcontent-ref %} ### Brute Force URls **Brute Force the URL format**: * `https://-.cloudfunctions.net/` It's easier if you know project names. Check this page for some tools to perform this brute force: {% content-ref url="./" %} [.](./) {% endcontent-ref %} ### Enumerate Open Cloud Functions With the following code [taken from here](https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_misc/-/blob/master/find_open_functions.sh) you can find Cloud Functions that permit unauthenticated invocations. ```bash #!/bin/bash ############################ # Run this tool to find Cloud Functions that permit unauthenticated invocations # anywhere in your GCP organization. # Enjoy! ############################ for proj in $(gcloud projects list --format="get(projectId)"); do echo "[*] scraping project $proj" enabled=$(gcloud services list --project "$proj" | grep "Cloud Functions API") if [ -z "$enabled" ]; then continue fi for func_region in $(gcloud functions list --quiet --project "$proj" --format="value[separator=','](NAME,REGION)"); do # drop substring from first occurence of "," to end of string. func="${func_region%%,*}" # drop substring from start of string up to last occurence of "," region="${func_region##*,}" ACL="$(gcloud functions get-iam-policy "$func" --project "$proj" --region "$region")" all_users="$(echo "$ACL" | grep allUsers)" all_auth="$(echo "$ACL" | grep allAuthenticatedUsers)" if [ -z "$all_users" ] then : else echo "[!] Open to all users: $proj: $func" fi if [ -z "$all_auth" ] then : else echo "[!] Open to all authenticated users: $proj: $func" fi done done ``` {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.** * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}