GCP - App Engine Enum

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahramana kadar AWS hackleme öğrenin!

HackTricks'ı desteklemenin diğer yolları:

Temel Bilgiler

Google Cloud Platform'un (GCP) App Engine'i, büyük ölçekte web uygulamalarının geliştirilmesi ve barındırılması için tasarlanmış güçlü, sunucusuz bir platformdur. Bu platformun tasarımı, geliştirme sürecini basitleştirmeye ve uygulamaların yönetilebilirliğini artırmaya odaklanmaktadır. GCP'nin App Engine'inin temel özellikleri ve faydaları şunlardır:

  1. Sunucusuz Mimarisi: App Engine, sunucu sağlama, yapılandırma ve ölçeklendirme dahil olmak üzere altyapıyı otomatik olarak yönetir. Bu, geliştiricilerin altta yatan donanımla ilgilenmeden kod yazmaya odaklanmasını sağlar.

  2. Otomatik Ölçeklendirme: App Engine, uygulamanızın aldığı trafiğe yanıt olarak otomatik olarak ölçeklendirilebilir. Trafik arttığında ölçeklendirilir ve trafik azaldığında ölçek küçültülerek maliyeti ve performansı optimize etmeye yardımcı olur.

  3. Dil ve Çalışma Zamanı Desteği: Java, Python, Node.js, Go, Ruby, PHP ve .NET gibi popüler programlama dillerini destekler. Uygulamalarınızı standart veya esnek bir ortamda çalıştırabilirsiniz. Standart ortam, daha kısıtlayıcıdır, ancak belirli diller için yüksek optimize edilmiştir, esnek ortam ise daha fazla özelleştirme imkanı sunar.

  4. Entegre Hizmetler: App Engine, Cloud SQL, Cloud Storage, Cloud Datastore ve daha birçok GCP hizmetiyle entegre çalışır. Bu entegrasyon, bulut tabanlı uygulamaların mimarisini basitleştirir.

  5. Sürümleme ve Trafik Bölümlendirme: Uygulamanızın birden fazla sürümünü kolayca dağıtabilir ve ardından A/B testi veya aşamalı dağıtımlar için bunlar arasında trafik bölümlendirebilirsiniz.

  6. Uygulama İzleme: App Engine, günlükleme, kullanıcı kimlik doğrulama ve uygulamaları izlemek ve yönetmek için bir dizi geliştirici aracı gibi yerleşik hizmetler sağlar.

  7. Güvenlik: Uygulama sürümleme, güvenli bağlantılar için SSL/TLS sertifikaları ve kimlik ve erişim yönetimi gibi yerleşik güvenlik özellikleri sunar.

Güvenlik Duvarı

Uygulamaları çalıştıran örnekler için basit bir güvenlik duvarı aşağıdaki seçeneklerle yapılandırılabilir:

SA

Bu Uygulamalar tarafından kullanılan varsayılan hizmet hesabı <proj-name>@appspot.gserviceaccount.com'dur ve projeye ve APP Engine örneğindeki SA'lara Editor rolüne sahiptir.

Depolama

Kaynak kodu ve meta verileri, <proj-id>.appspot.com ve staging.<proj-id>.appspot.com ve <country>.<proj-id>.appspot.com gibi adlara sahip kovalarda otomatik olarak depolanır.

Uygulamanın her dosyası, içeriğin sha1'i ile dosya adı olarak depolanır:

staging.<proj-id>.appspot.com klasöründeki ae klasörü içinde, her sürüm için bir klasör bulunur ve bu klasörde uygulamanın kaynak kodu dosyaları ve manifest.json dosyası bulunur, bu dosya uygulamanın bileşenlerini tanımlar:

{"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 ...

Konteynerler

Web uygulaması sonunda bir konteyner içinde çalıştırılacak ve konteyneri oluşturmak için Code Build kullanılır.

URL'ler ve Bölgeler

Varsayılan web sayfası URL <proje-benzersiz-adı>.appspot.com şeklinde açığa çıkarılacak, ancak daha eski sürümlerin URL'si biraz farklı olabilir, örneğin https://20240117t001540-dot-<proje-benzersiz-adı>.uc.r.appspot.com (başlangıç zaman damgasına dikkat edin).

Tek bir bölgeye yalnızca 1 uygulama motoru web uygulaması dağıtmanın mümkün olduğu gibi görünebilir, ancak app.yml içinde service: <servisadı> belirtebilir ve yeni bir servis (yeni bir web) oluşturabilirsiniz. Bu yeni web için URL formatı <servisadı>-dot-<proje-benzersiz-adı>.appspot.com olacaktır.

Numaralandırma

Her yeni kodu App'e yüklediğinizde, yeni bir sürüm oluşturulur. Tüm sürümler saklanır ve hatta bunlara erişmek için bir URL'leri vardır. Bu nedenle, eski bir sürümün kodunu değiştirmek büyük bir kalıcılık tekniği olabilir.

Cloud Functions ile olduğu gibi, uygulamanın çalışma zamanında erişilen gizli bilgilere dayanabileceği bir olasılık vardır. Bu değişkenler, aşağıdaki gibi erişilebilen bir app.yaml dosyasında saklanır:

# 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>

Yetki Yükseltme

pageGCP - AppEngine Privesc

Kimlik Doğrulaması Yapılmamış Enum

pageGCP - App Engine Unauthenticated Enum

Saldırı Sonrası

pageGCP - App Engine Post Exploitation

Kalıcılık

pageGCP - App Engine Persistence
htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'i desteklemenin diğer yolları:

Last updated