GCP - Privilege Escalation
GCP特権昇格の概要
GCPは、他のクラウドと同様に、主体(ユーザー、グループ、サービスアカウント)といくつかのリソース(コンピュートエンジン、クラウドファンクションなど)を持っています。 その後、ロールを介して主体にリソース上の権限が付与されます。これは、GCPのリソースに対する主体の権限を指定する方法です。 特定の権限により、ユーザーがリソースまたはサードパーティのリソースにさらに権限を取得できるようになり、これが特権昇格と呼ばれるものです(また、権限を取得するために脆弱性を悪用することも含まれます)。
したがって、GCP特権昇格テクニックを2つのグループに分けたいと思います:
主体への特権昇格:これにより、他の主体になりすますことができ、その主体としてすべての権限を持って行動できます。例:_getAccessToken_を悪用してサービスアカウントになりすます。
リソース上の特権昇格:これにより、特定のリソースに対してさらに権限を取得できます。例:cloudfunctions上の_setIamPolicy_権限を悪用して関数をトリガーできるようにします。
一部のリソース権限では、リソースに任意のサービスアカウントを添付することもできます。これは、SAを使用してリソースを起動し、リソースに入り、SAトークンを盗むことができることを意味します。したがって、これにより、リソース昇格を介して主体に昇格できます。これは以前いくつかのリソースで発生しましたが、今ではそれほど頻繁ではありません(しかし、まだ起こり得ます)。
明らかに、最も興味深い特権昇格テクニックは第2グループのものです。なぜなら、これにより、すでに特権を持っているリソースの外でさらに特権を取得できるからです。ただし、リソース内での昇格は、機密情報や他の主体(たとえば、SAのトークンを含む秘密を読むことを通じて)へのアクセスも可能にすることに注意してください。
また、GCPサービスアカウントは主体と権限の両方であることにも注意することが重要です。そのため、SAで特権を昇格させると、それをなりすますこともできます。
かぎかっこ内の権限は、gcloud
を使用して脆弱性を悪用するために必要な権限を示しています。APIを介して悪用する場合は必要ない場合があります。
特権昇格方法論の権限
これは、GCP内で特定のアクションを実行するための特定の権限をテストする方法です。
GitHubリポジトリhttps://github.com/carlospolop/gcp_privesc_scriptsをダウンロードします。
tests/に新しいスクリプトを追加します。
アクセススコープのバイパス
GCPメタデータサービスから漏洩したSAのトークンにはアクセススコープがあります。これらはトークンが持つ権限の制限です。たとえば、トークンに**https://www.googleapis.com/auth/cloud-platform
スコープがある場合、すべてのGCPサービスに完全アクセスできます。ただし、トークンにhttps://www.googleapis.com/auth/cloud-platform.read-only
スコープがある場合、IAMでより多くの権限を持っていても、すべてのGCPサービスに読み取り専用アクセス**しかありません。
これらの権限をバイパスする直接的な方法はありませんが、侵害されたホストで新しい資格情報を検索したり、制限なしでOAuthトークンを生成するサービスキーを見つけたり、制限の少ない別のVMに移動することを試してみることができます。
アクセススコープが使用されると、計算インスタンス(VM)用に生成されるOAuthトークンにはスコープの制限が含まれます。ただし、この制限をバイパスして侵害されたアカウントの権限を悪用することができるかもしれません。
この制限をバイパスする最良の方法は、侵害されたホストで新しい資格情報を見つけるか、制限なしでOAuthトークンを生成するためのサービスキーを見つけるか、制限の少ないSAを持つ別のVMを侵害することです。
次のコマンドで生成されたSAのキーを確認します:
特権昇格テクニック
AWSで特権を昇格させる方法は、他のサービスアカウント/ユーザー/グループの特権にアクセスできるだけの権限を持つことです。特権昇格を繰り返し、最終的に組織全体に管理者アクセス権を持つようにします。
GCPには、エンティティに付与できる数百(もしくは数千)の権限があります。この本では、特権昇格に悪用できる私が知っているすべての権限を見つけることができますが、ここに記載されていないパスをご存知の場合は、共有してください。
このセクションのサブページはサービスごとに並べられています。各サービスで特権昇格の異なる方法を見つけることができます。
GCPを悪用してローカルで特権昇格する
GCP内のマシンにいる場合、権限を悪用してローカルで特権昇格することができるかもしれません:
GCP - local privilege escalation ssh pivoting参考文献
Last updated