GCP - IAM, Principals & Org Policies Enum
Last updated
Last updated
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
サービスアカウントとは何かについてのイントロは次を確認してください:
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
が必要であるため、一般的な値が使用されています(APIを直接使用した場合は必要ありません、PurplePandaがここで行っているように)。
管理サービスが有効になっていても、侵害されたワークスペースユーザーに十分な権限がないため、列挙中にエラーが発生する可能性があります:
ドキュメントから:組織リソースが作成されると、ドメイン内のすべてのユーザーに請求アカウント作成者およびプロジェクト作成者の役割がデフォルトで付与されます。これらのデフォルトの役割により、ユーザーはすぐにGoogle Cloudを使用開始できますが、組織リソースの通常の運用には使用されることを意図していません。
これらの役割は権限を付与します:
billing.accounts.create
および resourcemanager.organizations.get
resourcemanager.organizations.get
および resourcemanager.projects.create
さらに、ユーザーがプロジェクトを作成すると、ドキュメントに従って、そのプロジェクトのオーナーが自動的に付与されます。したがって、デフォルトでは、ユーザーはプロジェクトを作成し、その上で任意のサービスを実行できるようになります(マイナー?ワークスペースの列挙?...)
GCP組織における最高の権限は組織管理者の役割です。
ほとんどのサービスでは、add-iam-policy-binding
またはset-iam-policy
メソッドを使用してリソースに対する権限を変更できます。主な違いは、add-iam-policy-binding
は既存のIAMポリシーに新しい役割のバインディングを追加するのに対し、set-iam-policy
は以前に付与された権限を削除し、コマンドで指定されたものだけを設定します。
このサービスを使用して、異なるリソース(組織、フォルダー、プロジェクトなど)内のユーザーのすべての権限を確認する方法はいくつかあります。
権限 cloudasset.assets.searchAllIamPolicies
は、リソース内の すべてのiamポリシー を要求できます。
権限 cloudasset.assets.analyzeIamPolicy
は、リソース内のプリンシパルの すべての IAM ポリシー を要求できます。
権限 cloudasset.assets.searchAllResources
は、組織、フォルダー、またはプロジェクトのすべてのリソースを一覧表示することを許可します。IAM関連のリソース(ロールなど)が含まれます。
権限 cloudasset.assets.analyzeMove
は、プロジェクトのようなリソースに影響を与えるポリシーを取得するのにも役立ちます。
cloudasset.assets.queryIamPolicy
パーミッションは、プリンシパルのパーミッションを見つけるためのアクセスを提供する可能性があります。
もし前の方法でIAM情報にアクセスできない場合、あなたがRed Teamにいるなら、ツール https://github.com/carlospolop/bf_my_gcp_perms を使用して現在の権限をブルートフォースすることができます。
ただし、サービス**cloudresourcemanager.googleapis.com
**を有効にする必要があります。
次のページでは、IAM権限を悪用して特権を昇格させる方法を確認できます:
GCP - IAM Privesc高い特権を持っている場合、あなたは:
新しいSA(またはWorkspace内のユーザー)を作成する
自分が管理するプリンシパルにより多くの権限を与える
脆弱なSAにより多くの特権を与える(vm内のSSRF、脆弱なCloud Function…)
…
Org Policiesが何であるかのイントロについては、次を確認してください:
GCP - Basic InformationIAMポリシーは、役割を介してプリンシパルがリソースに対して持つ権限を示し、役割には細かい権限が割り当てられています。組織ポリシーは、これらのサービスがどのように使用できるか、またはどの機能が無効にされるかを制限します。これは、GCP環境内の各リソースの最小特権を向上させるのに役立ちます。
次のページでは、組織ポリシーの権限を悪用して特権を昇格させる方法を確認できます:
GCP - Orgpolicy PrivescAWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)