GCP - IAM, Principals & Org Policies Enum
サービスアカウント
サービスアカウントについての紹介はこちらを参照してください:
GCP - Basic Information列挙
サービスアカウントは常にプロジェクトに属しています:
ユーザー&グループ
GCPでのユーザー&グループの動作についての紹介は、以下をチェックしてください:
GCP - Basic Information列挙
権限 serviceusage.services.enable
と serviceusage.services.use
を使用すると、プロジェクトで サービスを有効化 し、使用することができます。
デフォルトでは、Workspaceユーザーには Project Creator の役割が付与され、新しいプロジェクトを作成 する権限が与えられます。ユーザーがプロジェクトを作成すると、そのユーザーはそれに対して owner
役割が付与されます。そのため、彼は プロジェクトでこれらのサービスを有効化 してWorkspaceを列挙することができます。
ただし、これらのAPIを呼び出すためには、Workspaceで 十分な権限が必要 であることに注意してください。
admin
サービスを有効化 でき、かつユーザーがWorkspaceで 十分な特権を持っている 場合、以下の行を使用して すべてのグループ&ユーザーを列挙 できます。
identity groups
と記載されている場合でも、グループなしのユーザー も返されます:
前の例では、パラメータ --labels
が必要なので、一般的な値が使用されます(PurplePanda がここで行っているように のように直接 API を使用する場合は必要ありません)。
管理サービスが有効になっていても、侵害されたワークスペースユーザーに十分な権限がないため、それらを列挙する際にエラーが発生する可能性があります:
IAM
IAM に関する基本情報については、こちらを参照してください。
デフォルトの権限
ドキュメント によると、組織リソースが作成されると、デフォルトでドメイン内のすべてのユーザーに Billing Account Creator および Project Creator の役割が付与されます。これらのデフォルトの役割により、ユーザーはすぐに Google Cloud を使用できるようになりますが、組織リソースの通常の運用には適していません。
これらの 役割 は以下の 権限 を付与します:
billing.accounts.create
およびresourcemanager.organizations.get
resourcemanager.organizations.get
およびresourcemanager.projects.create
さらに、ユーザーがプロジェクトを作成すると、ドキュメント によると、そのプロジェクトの所有者が自動的に付与されます。したがって、デフォルトでは、ユーザーはプロジェクトを作成し、その上で任意のサービスを実行できます(マイナー?ワークスペースの列挙?...)
GCP 組織での最高の権限は Organization Administrator 役割です。
set-iam-policy と add-iam-policy-binding
ほとんどのサービスでは、リソース上の権限を変更するために add-iam-policy-binding
または set-iam-policy
メソッドを使用できます。主な違いは、add-iam-policy-binding
は既存の IAM ポリシーに新しいロール バインディングを追加するのに対し、set-iam-policy
は以前に付与された権限を削除し、コマンドで指定された権限のみを設定します。
列挙
cloudasset IAM 列挙
ユーザーのすべての権限をさまざまなリソース(組織、フォルダー、プロジェクトなど)でチェックするための異なる方法があります。このサービスを使用して、リソース内のすべての IAM ポリシーをリクエストできます。
権限
cloudasset.assets.searchAllIamPolicies
は、リソース内の すべての IAM ポリシー をリクエストできます。
権限
cloudasset.assets.analyzeIamPolicy
は、リソース内のプリンシパルの すべての IAM ポリシー をリクエストできます。
権限
cloudasset.assets.searchAllResources
は、組織、フォルダ、またはプロジェクトのすべてのリソースをリストアップすることを許可します。IAM 関連のリソース(役割など)が含まれます。
権限
cloudasset.assets.analyzeMove
は、プロジェクトのようなリソースに影響を与えるポリシーを取得するのにも役立ちます。
私は、権限
cloudasset.assets.queryIamPolicy
が主体の権限を見つけるためのアクセス権も与える可能性があると考えています
testIamPermissions列挙
前述の方法でIAM情報にアクセスできない場合、Red Teamにいる場合は、https://github.com/carlospolop/bf_my_gcp_perms ツールを使用して現在の権限を総当たり攻撃することができます。
ただし、cloudresourcemanager.googleapis.com
サービスが有効になっている必要があります。
特権昇格
次のページでは、IAM権限を悪用して特権を昇格する方法を確認できます:
GCP - IAM Privesc認証なしの列挙
GCP - IAM, Principals & Org Unauthenticated Enumポストエクスプロイテーション
GCP - IAM Post Exploitation永続化
特権が高い場合は、次のことができます:
新しいSAを作成する(またはWorkspaceの場合はユーザーを作成する)
自分自身が制御するプリンシパルにより多くの権限を付与する
脆弱なSAにより多くの特権を付与する(vm内のSSRF、脆弱なCloud Functionなど)
...
組織ポリシー
組織ポリシーについての紹介は次を参照してください:
GCP - Basic InformationIAMポリシーは、役割を介してプリンシパルがリソースに対して持つ権限を示し、それらは細かい権限が割り当てられた役割です。組織ポリシーは、これらのサービスの使用方法を制限したり、無効にする機能を指定します。これにより、GCP環境の各リソースの最小特権を向上させるのに役立ちます。
特権昇格
次のページで、組織ポリシーの権限を悪用して特権を昇格させる方法を確認できます:
GCP - Orgpolicy PrivescLast updated