GCP - IAM, Principals & Org Unauthenticated Enum

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

Iam & GCP Principals

Για περισσότερες πληροφορίες ελέγξτε:

GCP - IAM, Principals & Org Policies Enum

Χρησιμοποιείται το domain στο Workspace;

  1. Ελέγξτε τα DNS records

Αν έχει ένα google-site-verification record είναι πιθανό ότι χρησιμοποιεί (ή χρησιμοποιούσε) το Workspace:

dig txt hacktricks.xyz

[...]
hacktricks.xyz.		3600	IN	TXT	"google-site-verification=2mWyPXMPXEEy6QqWbCfWkxFTcQhyYdwHrOxee1Yeo-0"
hacktricks.xyz.		3600	IN	TXT	"google-site-verification=C19PtLcZ1EGyzUYYJTX1Tp6bOGessxzN9gqE-SVKhRA"
hacktricks.xyz.		300	IN	TXT	"v=spf1 include:usb._netblocks.mimecast.com include:_spf.google.com include:_spf.psm.knowbe4.com include:_spf.salesforce.com include:spf.mandrillapp.com ~all"

Αν εμφανιστεί κάτι όπως include:_spf.google.com, αυτό το επιβεβαιώνει (σημειώστε ότι αν δεν εμφανιστεί, δεν το αρνείται καθώς ένα domain μπορεί να είναι σε Workspace χωρίς να χρησιμοποιεί το gmail ως πάροχο email).

  1. Δοκιμάστε να ρυθμίσετε ένα Workspace με αυτό το domain

Μια άλλη επιλογή είναι να προσπαθήσετε να ρυθμίσετε ένα Workspace χρησιμοποιώντας το domain, αν παραπονιέται ότι το domain χρησιμοποιείται ήδη (όπως στην εικόνα), ξέρετε ότι χρησιμοποιείται ήδη!

Για να προσπαθήσετε να ρυθμίσετε ένα domain Workspace, ακολουθήστε: https://workspace.google.com/business/signup/welcome

  1. Δοκιμάστε να ανακτήσετε τον κωδικό πρόσβασης ενός email χρησιμοποιώντας αυτό το domain

Αν γνωρίζετε οποιαδήποτε έγκυρη διεύθυνση email που χρησιμοποιείται σε αυτό το domain (όπως: admin@email.com ή info@email.com) μπορείτε να προσπαθήσετε να ανακτήσετε τον λογαριασμό στο https://accounts.google.com/signin/v2/recoveryidentifier, και αν η προσπάθεια δεν δείξει ένα σφάλμα που να υποδεικνύει ότι η Google δεν έχει ιδέα για αυτόν τον λογαριασμό, τότε χρησιμοποιεί το Workspace.

Καταμέτρηση emails και λογαριασμών υπηρεσιών

Είναι δυνατόν να καταμετρήσετε έγκυρα emails ενός domain Workspace και emails SA προσπαθώντας να τους αναθέσετε δικαιώματα και ελέγχοντας τα μηνύματα σφάλματος. Για αυτό χρειάζεστε απλώς να έχετε δικαιώματα για να αναθέσετε δικαιώματα σε ένα έργο (το οποίο μπορεί να ανήκει μόνο σε εσάς).

Σημειώστε ότι για να τα ελέγξετε αλλά ακόμα και αν υπάρχουν, μην τους δώσετε δικαίωμα, μπορείτε να χρησιμοποιήσετε τον τύπο serviceAccount όταν είναι user και user όταν είναι SA:

# Try to assign permissions to user 'unvalid-email-34r434f@hacktricks.xyz'
# but indicating it's a service account
gcloud projects add-iam-policy-binding <project-controlled-by-you> \
--member='serviceAccount:unvalid-email-34r434f@hacktricks.xyz' \
--role='roles/viewer'
## Response:
ERROR: (gcloud.projects.add-iam-policy-binding) INVALID_ARGUMENT: User unvalid-email-34r434f@hacktricks.xyz does not exist.

# Now try with a valid email
gcloud projects add-iam-policy-binding <project-controlled-by-you> \
--member='serviceAccount:support@hacktricks.xyz' \
--role='roles/viewer'
# Response:
ERROR: (gcloud.projects.add-iam-policy-binding) INVALID_ARGUMENT: Principal support@hacktricks.xyz is of type "user". The principal should appear as "user:support@hacktricks.xyz". See https://cloud.google.com/iam/help/members/types for additional documentation.

Μια πιο γρήγορη μέθοδος για να καταμετρήσετε τους Λογαριασμούς Υπηρεσιών σε γνωστά έργα είναι απλώς να προσπαθήσετε να αποκτήσετε πρόσβαση στη διεύθυνση URL: https://iam.googleapis.com/v1/projects/<project-id>/serviceAccounts/<sa-email>
Για παράδειγμα: https://iam.googleapis.com/v1/projects/gcp-labs-3uis1xlx/serviceAccounts/appengine-lab-1-tarsget@gcp-labs-3uis1xlx.iam.gserviceaccount.com

Αν η απάντηση είναι 403, σημαίνει ότι ο Λογαριασμός Υπηρεσίας υπάρχει. Αλλά αν η απάντηση είναι 404, σημαίνει ότι δεν υπάρχει:

// Exists
{
"error": {
"code": 403,
"message": "Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.",
"status": "PERMISSION_DENIED"
}
}

// Doesn't exist
{
"error": {
"code": 404,
"message": "Unknown service account",
"status": "NOT_FOUND"
}
}

Σημειώστε πώς όταν το email του χρήστη ήταν έγκυρο, το μήνυμα σφάλματος υποδείκνυε ότι ο τύπος δεν είναι, έτσι καταφέραμε να ανακαλύψουμε ότι το email support@hacktricks.xyz υπάρχει χωρίς να του παραχωρήσουμε κανένα προνόμιο.

Μπορείτε να κάνετε το ίδιο με τους Λογαριασμούς Υπηρεσίας χρησιμοποιώντας τον τύπο user: αντί για serviceAccount::

# Non existent
gcloud projects add-iam-policy-binding <project-controlled-by-you> \
--member='serviceAccount:<invalid-sa-name>@<proj-uniq-name>.iam.gserviceaccount.com' \
--role='roles/viewer'
# Response
ERROR: (gcloud.projects.add-iam-policy-binding) INVALID_ARGUMENT: User <invalid-sa-name>@<proj-uniq-name>.iam.gserviceaccount.com does not exist.

# Existent
gcloud projects add-iam-policy-binding <project-controlled-by-you> \
--member='serviceAccount:<sa-name>@<proj-uniq-name>.iam.gserviceaccount.com' \
--role='roles/viewer'
# Response
ERROR: (gcloud.projects.add-iam-policy-binding) INVALID_ARGUMENT: Principal testing@digital-bonfire-410512.iam.gserviceaccount.com is of type "serviceAccount". The principal should appear as "serviceAccount:testing@digital-bonfire-410512.iam.gserviceaccount.com". See https://cloud.google.com/iam/help/members/types for additional documentation.

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks