GCP - Storage Privesc

htARTE (HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ

HackTricksをサポートする他の方法:

ストレージ

基本情報:

pageGCP - Storage Enum

storage.objects.get

この権限により、Cloud Storage内に保存されているファイルをダウンロードすることができます。これにより、機密情報が保存されている場合に権限昇格が可能になることがあります。さらに、いくつかのGCPサービスは情報をバケットに保存します:

  • GCP Composer: Composer環境を作成すると、すべてのDAGのコードバケット内に保存されます。これらのタスクには、コード内に興味深い情報が含まれている可能性があります。

  • GCR (Container Registry): コンテナのイメージバケット内に保存されており、バケットを読むことができれば、イメージをダウンロードしてリークやソースコードを探すことができます。

storage.objects.setIamPolicy

このセクションの前のシナリオを悪用するための権限を自分に与えることができます。

storage.buckets.setIamPolicy

この権限で権限を変更する例については、このページを確認してください:

pageGCP - Public Buckets Privilege Escalation

storage.hmacKeys.create

Cloud Storageの「相互運用性」機能は、AWS S3などのクロスクラウドの相互作用に設計されており、サービスアカウントとユーザーのHMACキーを生成します。攻撃者は、権限の高いサービスアカウントのHMACキーを生成することで、Cloud Storage内での権限昇格を図ることができます。ユーザーに関連付けられたHMACキーはウェブコンソールを通じてのみ取得可能ですが、アクセスキーとシークレットキーは永続的にアクセス可能であり、潜在的なバックアップアクセスストレージのために利用できます。一方、サービスアカウントにリンクされたHMACキーはAPIを通じてアクセス可能ですが、作成後にアクセスキーとシークレットキーを取得することはできません。これは継続的なアクセスに複雑さを加えます。

# Create key
gsutil hmac create <sa-email>

# Configure gsutil to use it
gsutil config -a

# Use it
gsutil ls gs://[BUCKET_NAME]

この方法に関する別のエクスプロイトスクリプトはこちらで見つけることができます。

storage.objects.create, storage.objects.delete = ストレージ書き込み権限

バケット内に新しいオブジェクトを作成するためにはstorage.objects.createが必要であり、ドキュメントによると、既存のオブジェクトを変更するためにはstorage.objects.deleteも必要です。

クラウド内で書き込み可能なバケットの一般的な悪用は、バケットがウェブサーバーのファイルを保存している場合で、ウェブアプリケーションによって使用される新しいコードを保存することができるかもしれません。

Composer

ComposerはGCP内で管理されているApache Airflowです。いくつかの興味深い特徴があります:

  • GKEクラスター内で実行されるため、Composer内で実行されるコードによってクラスターが使用するSAにアクセス可能です

  • コードをバケットに保存するため、そのバケットに対する書き込み権限を持つ任意の人がDGAコード(Apache Airflowが実行するコード)を変更/追加することができます そのため、Composerがコードを保存するために使用しているバケットに対する書き込み権限を持っている場合、GKEクラスターで実行中のSAに権限昇格することができます。

Cloud Functions

  • Cloud FunctionsのコードはStorageに保存されているため、それを上書きすることで任意のコードを実行することが可能です

App Engine

  • App Engineのソースコードはバケットに保存されており、コードを上書きすることで任意のコードを実行する可能性があります。これは不可能です

  • コンテナレイヤーがバケットに保存されているようですが、これらを変更するかもしれません?

GCR

  • Google Container Registryはイメージをバケット内に保存しており、これらのバケットに書き込むことができれば、これらのバケットが実行されている場所に横断的に移動することができるかもしれません。

  • GCRが使用するバケットのURLはgs://<eu/usa/asia/nothing>.artifacts.<project>.appspot.comのようになります(トップレベルのサブドメインはこちらで指定されています)。

参考文献

htARTE (HackTricks AWS Red Team Expert)で ゼロからヒーローまでAWSハッキングを学ぶ

HackTricksをサポートする他の方法:

最終更新