GCP - Privilege Escalation
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
GCPは他のクラウドと同様に、いくつかのプリンシパル(ユーザー、グループ、サービスアカウント)と、コンピュートエンジン、クラウドファンクションなどのリソースを持っています。 次に、役割を介して、リソースに対してこれらのプリンシパルに権限が付与されます。これは、GCP内のリソースに対するプリンシパルの権限を指定する方法です。 特定の権限により、ユーザーはリソースやサードパーティのリソースに対してさらに多くの権限を取得することができます。これが特権昇格と呼ばれるものです(また、より多くの権限を得るための脆弱性の悪用も含まれます)。
したがって、GCPの特権昇格技術を2つのグループに分けたいと思います:
プリンシパルへの特権昇格:これにより、別のプリンシパルを偽装することができ、そのため、すべての権限を持って行動することができます。例:_getAccessToken_を悪用してサービスアカウントを偽装する。
リソース上の特権昇格:これにより、特定のリソースに対してより多くの権限を取得することができます。例:_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
スコープを持っている場合、SAがIAMでより多くの権限を持っていても、すべてのGCPサービスに対して読み取り専用アクセス**しか持ちません。
これらの権限をバイパスする直接的な方法はありませんが、妥協されたホスト内で新しい資格情報を探したり、制限なしでOAuthトークンを生成するためのサービスキーを見つけたり、制限の少ない別のVMにジャンプしたりすることができます。
アクセススコープが使用されると、コンピューティングインスタンス(VM)用に生成されるOAuthトークンには制限されたスコープ が含まれます。ただし、妥協されたアカウントが持つ権限を悪用して、この制限をバイパスできる可能性があります。
この制限をバイパスする最良の方法は、妥協されたホスト内で新しい資格情報を見つけること、制限なしでOAuthトークンを生成するためのサービスキーを見つけること、または制限の少ないSAを持つ別のVMを妥協することです。
キーが生成されたSAを確認するには:
AWSで権限を昇格させる方法は、他のサービスアカウント/ユーザー/グループの権限にアクセスできるだけの十分な権限を持つことです。昇格を連鎖させて、組織に対する管理者アクセスを得ることができます。
GCPには、エンティティに付与できる数百(場合によっては数千)の権限があります。この本では、権限を昇格させるために悪用できるすべての権限を見つけることができますが、ここに記載されていないパスを知っている場合は、ぜひ共有してください。
このセクションのサブページはサービス別に整理されています。各サービスでは、サービス上で権限を昇格させるさまざまな方法を見つけることができます。
GCP内のマシンにいる場合、権限を悪用してローカルで権限を昇格させることができるかもしれません:
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)