GCP - IAM、プリンシパルと組織の未認証列挙
Reading time: 7 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
Iam & GCP プリンシパル
詳細については、次を確認してください:
GCP - IAM, Principals & Org Policies Enum
Workspaceでドメインは使用されていますか?
- DNSレコードを確認する
google-site-verification
レコードがある場合、それは(または以前は)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
**のようなものが表示されると、それが確認されます(表示されない場合でも、ドメインがWorkspaceに存在する可能性があるため、gmailをメールプロバイダーとして使用していないことを否定するものではありません)。
- そのドメインでWorkspaceを設定してみる
別のオプションは、そのドメインを使用してWorkspaceを設定してみることです。もしドメインがすでに使用されていると文句を言う(画像のように)場合、それはすでに使用されています!
Workspaceドメインを設定するには、次のリンクを参照してください: https://workspace.google.com/business/signup/welcome
.png)
- そのドメインを使用してメールのパスワードを回復してみる
そのドメインで使用されている有効なメールアドレス(例: admin@email.comやinfo@email.com)を知っている場合、https://accounts.google.com/signin/v2/recoveryidentifierでアカウントを回復しようとすることができます。もしエラーが表示されず、Googleがそのアカウントについて何も知らないというエラーが表示されない場合、それはWorkspaceを使用しています。
メールとサービスアカウントを列挙する
Workspaceドメインの有効なメールとSAメールを列挙することは、権限を割り当てようとしてエラーメッセージを確認することで可能です。これには、プロジェクトに権限を割り当てる権限が必要です(それはあなたが所有しているものである可能性があります)。
存在を確認するために、権限を付与しない場合でも、**serviceAccount
のタイプを使用してuser
の場合はuser
**を使用できます。
# 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の場合、SAは存在します。しかし、レスポンスが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"
}
}
ユーザーのメールが有効な場合、エラーメッセージがタイプが無効であることを示していることに注意してください。そのため、privilegesを付与することなく、メールsupport@hacktricks.xyzが存在することを発見しました。
Service Accountsでも同様のことができます。**serviceAccount:
の代わりにタイプuser:
**を使用します:
# 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ハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。