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を妥協することです。
Check SA with keys generated with:
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)