GCP - App Engine Enum
Reading time: 9 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をサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
基本情報
Google Cloud Platformの(GCP) App Engineは、大規模なウェブアプリケーションの開発とホスティングのために特化した堅牢なサーバーレスプラットフォームです。このプラットフォームの設計は、開発プロセスの効率化とアプリケーションの管理性の向上に焦点を当てています。GCPのApp Engineの主な機能と利点は以下の通りです:
- サーバーレスアーキテクチャ:App Engineは、サーバーのプロビジョニング、構成、スケーリングを含むインフラストラクチャを自動的に処理します。これにより、開発者は基盤となるハードウェアを気にせずにコードを書くことに集中できます。
- 自動スケーリング:App Engineは、受信するトラフィックの量に応じてアプリケーションを自動的にスケールできます。トラフィックが増加するとスケールアップし、トラフィックが減少するとスケールダウンすることで、コストとパフォーマンスの最適化を助けます。
- 言語とランタイムのサポート:Java、Python、Node.js、Go、Ruby、PHP、.NETなどの人気のあるプログラミング言語をサポートしています。アプリケーションは標準環境または柔軟環境で実行できます。標準環境は制約が多いですが、特定の言語に最適化されています。一方、柔軟環境はより多くのカスタマイズを可能にします。
- 統合サービス:App Engineは、Cloud SQL、Cloud Storage、Cloud Datastoreなどの他の多くのGCPサービスと統合されています。この統合により、クラウドベースのアプリケーションのアーキテクチャが簡素化されます。
- バージョン管理とトラフィックスプリッティング:アプリケーションの複数のバージョンを簡単にデプロイし、A/Bテストや段階的なロールアウトのためにトラフィックを分割できます。
- アプリケーションインサイト:App Engineは、ログ記録、ユーザー認証、アプリケーションの監視と管理のための開発者ツールのスイートなどの組み込みサービスを提供します。
- セキュリティ:アプリケーションのバージョン管理、SSL/TLS証明書による安全な接続、アイデンティティとアクセス管理などの組み込みセキュリティ機能を提供します。
ファイアウォール
アプリを実行しているインスタンスのために、以下のオプションでシンプルなファイアウォールを構成できます:
.png)
SA
これらのアプリで使用されるデフォルトのサービスアカウントは、<proj-name>@appspot.gserviceaccount.com
であり、プロジェクトに対してEditorロールを持ち、APP Engineインスタンス内のSAはcloud-platformスコープ(他のものの中で)で実行されます。
ストレージ
ソースコードとメタデータは、<proj-id>.appspot.com
やstaging.<proj-id>.appspot.com
、<country>.<proj-id>.appspot.com
などの名前のバケットに自動的に保存されます。
アプリのすべてのファイルは、コンテンツのsha1をファイル名として保存されます:
.png)
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 ...
コンテナ
ウェブアプリは最終的にコンテナ内で実行され、Code Buildがコンテナをビルドするために使用されます。
URLとリージョン
デフォルトのウェブページはURL**<project-uniq-name>.appspot.com
で公開されますが、古いバージョンのURLは少し異なり、例えばhttps://20240117t001540-dot-<project-uniq-name>.uc.r.appspot.com
**のようになります(最初のタイムスタンプに注意)。
1つのリージョンに対して1つのアプリエンジンウェブアプリケーションのみをデプロイできるように見えるかもしれませんが、**app.yml
にservice: <servicename>
を指定することで新しいサービス(新しいウェブ)を作成することが可能です。この新しいウェブのURLの形式は<servicename>-dot-<project-uniq-name>.appspot.com
**になります。
列挙
caution
アプリに新しいコードをアップロードするたびに、新しいバージョンが作成されます。すべてのバージョンが保存され、それらにアクセスするための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>
権限昇格
認証されていない列挙
GCP - App Engine Unauthenticated Enum
ポストエクスプロイト
GCP - App Engine Post Exploitation
永続性
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をサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。