GCP - IAM, Principals & Org Policies Enum
サービスアカウント
サービスアカウントについての紹介はこちらを参照してください:
pageGCP - Basic Information列挙
サービスアカウントは常にプロジェクトに属しています:
ユーザー&グループ
GCPでのユーザー&グループの動作についての紹介は、以下をチェックしてください:
pageGCP - 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 列挙
異なるリソース(組織、フォルダ、プロジェクトなど)内のユーザーのすべての権限をチェックするための異なる方法があります。
権限
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
サービスが有効になっている必要があります。
Privesc
次のページでは、IAM権限を悪用して特権を昇格する方法を確認できます:
pageGCP - IAM Privesc認証なしの列挙
pageGCP - IAM, Principals & Org Unauthenticated Enumポストエクスプロイテーション
pageGCP - IAM Post Exploitation永続化
高い権限を持っている場合は、次のことができます:
新しいSAsを作成する(またはWorkspaceの場合はユーザーを作成する)
自分自身が制御するプリンシパルにより多くの権限を付与する
脆弱なSAsにより多くの特権を付与する(vm内のSSRF、脆弱なCloud Functionなど)
...
組織ポリシー
Org Policiesについての紹介はこちらをご覧ください:
pageGCP - Basic InformationIAMポリシーは、ロールを介してプリンシパルがリソースに対して持つ権限を示し、それらのサービスがどのように使用されるか、どの機能が無効になるかを制限する組織ポリシーがあります。これにより、GCP環境の各リソースの最小特権を向上させるのに役立ちます。
特権昇格
以下のページで、組織ポリシーの権限を悪用して特権を昇格する方法を確認できます:
pageGCP - Orgpolicy Privesc最終更新