GCP - App Engine Enum

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

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

基本情報

Google Cloud Platform(GCP)のApp Engineは、大規模なWebアプリケーションの開発とホスティングに特化した堅牢なサーバーレスプラットフォームです。このプラットフォームの設計は、開発プロセスの合理化とアプリケーションの管理性の向上に焦点を当てています。GCPのApp Engineの主な機能と利点は次のとおりです:

  1. サーバーレスアーキテクチャ:App Engineは、サーバーのプロビジョニング、構成、スケーリングなどのインフラストラクチャを自動的に処理します。これにより、開発者は基礎となるハードウェアを気にすることなくコードの記述に集中できます。

  2. 自動スケーリング:App Engineは、受信するトラフィック量に応じてアプリケーションを自動的にスケーリングできます。トラフィックが増加するとスケールアップし、トラフィックが減少するとスケールダウンしてコストとパフォーマンスを最適化します。

  3. 言語とランタイムのサポート:Java、Python、Node.js、Go、Ruby、PHP、.NETなどの人気のあるプログラミング言語をサポートしています。アプリケーションを標準環境または柔軟環境で実行できます。標準環境はより制限がありますが、特定の言語に最適化されており、柔軟環境はカスタマイズが可能です。

  4. 統合サービス:App Engineは、Cloud SQL、Cloud Storage、Cloud Datastoreなどの多くの他のGCPサービスと統合されています。この統合により、クラウドベースのアプリケーションのアーキテクチャが簡素化されます。

  5. バージョニングとトラフィック分割:アプリケーションの複数のバージョンを簡単にデプロイし、それらの間でトラフィックを分割してA/Bテストや段階的な展開を行うことができます。

  6. アプリケーションインサイト:App Engineには、ログ記録、ユーザー認証、およびアプリケーションの監視と管理のための開発者ツールなど、組み込みのサービスが提供されています。

  7. セキュリティ:アプリケーションのバージョニング、安全な接続のためのSSL/TLS証明書、アイデンティティおよびアクセス管理など、組み込みのセキュリティ機能を提供しています。

ファイアウォール

次のオプションで、アプリケーションを実行しているインスタンスに対して簡単なファイアウォールを構成できます:

SA

これらのアプリで使用されるデフォルトのサービスアカウントは、<proj-name>@appspot.gserviceaccount.comであり、プロジェクトとAPP Engineインスタンス内のSAsにはcloud-platformスコープで実行される Editorロールが付与されています。

ストレージ

ソースコードとメタデータは、<proj-id>.appspot.comstaging.<proj-id>.appspot.com<country>.<proj-id>.appspot.comなどの名前のバケットに自動的に保存されます。

アプリのすべてのファイルは、コンテンツのsha1をファイル名として保存されます:

staging.<proj-id>.appspot.comの**aeフォルダ内には、バージョンごとに1つのフォルダが存在し、ソースコードファイルとアプリのコンポーネントを記述するmanifest.json**ファイルが含まれています。

{"requirements.txt":{"sourceUrl":"https://storage.googleapis.com/staging.onboarding-host-98efbf97812843.appspot.com/a270eedcbe2672c841251022b7105d340129d108","sha1Sum":"a270eedc_be2672c8_41251022_b7105d34_0129d108"},"main_test.py":{"sourceUrl":"https://storage.googleapis.com/staging.onboarding-host-98efbf97812843.appspot.com/0ca32fd70c953af94d02d8a36679153881943f32","sha1Sum":"0ca32fd7_0c953af9_4d02d8a ...

コンテナ

Webアプリは最終的にはコンテナ内で実行され、Code Buildがコンテナをビルドするために使用されます。

URLとリージョン

デフォルトのWebページはURL <project-uniq-name>.appspot.com で公開されますが、古いバージョンのURLは少し異なります。例えば、https://20240117t001540-dot-<project-uniq-name>.uc.r.appspot.com(初期のタイムスタンプに注意)。

1つのアプリケーションエンジンWebアプリケーションを1つのリージョンにデプロイすることしかできないように見えるかもしれませんが、**app.ymlservice: <servicename>を指定し、新しいサービス(新しいWeb)を作成することができます。この新しいWebのURL形式は<servicename>-dot-<project-uniq-name>.appspot.com**になります。

列挙

Appに新しいコードをアップロードするたびに、新しいバージョンが作成されますすべてのバージョンが保存され、それぞれにアクセスするためのURLがあります。したがって、古いバージョンのコードを変更することは優れた持続性テクニックとなり得ます。

Cloud Functionsと同様に、アプリケーションが実行時に環境変数を介してアクセスされる秘密に依存する可能性があります。これらの変数は**app.yaml**ファイルに保存されており、次のようにアクセスできます:

# List the apps
gcloud app services list
gcloud app services describe <app-name>
# Access via browser to the specified app
gcloud app services browse <app-name>

# Get App versions
gcloud app versions list
# Get all the info of the app and version, included specific verion URL and the env
gcloud app versions describe -s <app-name> <version-id>

# Logs
gcloud app logs tail -s <app-name>

# Instances
## This is only valid if a flexible environment is used and not a standard one
gcloud app instances list
gcloud app instances describe -s <app-name> --version <version-id> <ID>
## Connect to the instance via ssh
gcloud app instances ssh --service <app-name> --version <version-id> <ID>

# Firewalls
gcloud app firewall-rules list
gcloud app firewall-rules describe <num_fw>

# Get domains
gcloud app domain-mappings list
gcloud app domain-mappings describe <name>

# SSl certificates
gcloud app ssl-certificates list
gcloud app ssl-certificates describe <name>

特権昇格

pageGCP - AppEngine Privesc

認証なし列挙

pageGCP - App Engine Unauthenticated Enum

攻撃後の利用

pageGCP - App Engine Post Exploitation

永続化

pageGCP - App Engine Persistence
htARTE (HackTricks AWS Red Team Expert)を使って、ゼロからヒーローまでAWSハッキングを学びましょう!

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

最終更新