GCP - Privilege Escalation

Reading time: 10 minutes

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

GCP特権昇格の紹介

GCPは他のクラウドと同様に、いくつかのプリンシパル(ユーザー、グループ、サービスアカウント)と、コンピュートエンジン、クラウドファンクションなどのリソースを持っています。
次に、役割を介して、リソースに対するこれらのプリンシパルへの権限が付与されます。これは、GCPにおけるリソースに対するプリンシパルの権限を指定する方法です。
特定の権限により、ユーザーはリソースやサードパーティのリソースに対してさらに多くの権限を取得することができます。これが特権昇格と呼ばれるものです(また、より多くの権限を得るための脆弱性の悪用も含まれます)。

したがって、GCPの特権昇格技術を2つのグループに分けたいと思います:

  • プリンシパルへの特権昇格:これにより、別のプリンシパルを偽装することができ、そのプリンシパルのすべての権限で行動できます。例:_getAccessToken_を悪用してサービスアカウントを偽装する。
  • リソース上の特権昇格:これにより、特定のリソースに対するより多くの権限を取得することができます。例:_setIamPolicy_権限を悪用してクラウドファンクションをトリガーできるようにする。
  • 一部のリソース権限は、リソースに任意のサービスアカウントを添付することも可能です。これは、SAを持つリソースを起動し、そのリソースにアクセスし、SAトークンを盗むことができることを意味します。したがって、これはリソース昇格を介してプリンシパルに昇格することを可能にします。これは以前にいくつかのリソースで発生しましたが、現在は頻度が低くなっています(ただし、まだ発生する可能性があります)。

明らかに、最も興味深い特権昇格技術は2番目のグループのものであり、これによりすでにいくつかの権限を持っているリソースの外でより多くの権限を取得することができます。ただし、リソース内での昇格は、機密情報他のプリンシパル(SAのトークンを含む秘密を読むことによって)へのアクセスをもたらす可能性があることに注意してください。

warning

GCPではサービスアカウントがプリンシパルと権限の両方であることにも注意することが重要です。したがって、SAの権限を昇格させることで、それを偽装することも可能になります。

note

括弧内の権限は、gcloudを使用して脆弱性を悪用するために必要な権限を示しています。APIを介して悪用する場合は、これらは必要ないかもしれません。

特権昇格手法のための権限

これは、GCP内で特定のアクションを実行するために特定の権限をテストする方法です。

  1. GitHubリポジトリをダウンロードします https://github.com/carlospolop/gcp_privesc_scripts
  2. 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トークンを生成するためのサービスキーを見つけること、または制限の少ない別のVMを妥協することです。

キーが生成されたSAを確認します:

bash
for i in $(gcloud iam service-accounts list --format="table[no-heading](email)"); do
echo "Looking for keys for $i:"
gcloud iam service-accounts keys list --iam-account $i
done

権限昇格技術

AWSで権限を昇格させる方法は、他のサービスアカウント/ユーザー/グループの権限にアクセスできるだけの十分な権限を持つことです。昇格を連鎖させて、組織全体に対する管理者アクセスを得ることができます。

warning

GCPには、エンティティに付与できる数百(場合によっては数千)の権限があります。この本では、権限を昇格させるために悪用できるすべての権限を見つけることができますが、ここに記載されていないパスを知っている場合は、共有してください

このセクションのサブページはサービスごとに整理されています。各サービスでは、サービス上で権限を昇格させるさまざまな方法を見つけることができます。

GCPを悪用してローカルで権限を昇格させる

GCP内のマシンにいる場合、権限を悪用してローカルで権限を昇格させることができるかもしれません:

GCP - local privilege escalation ssh pivoting

参考文献

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする