GCP - App Engine Enum

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Osnovne informacije

Google Cloud Platform-ov (GCP) App Engine je robustna, serverless platforma prilagođena razvoju i hostovanju web aplikacija u velikom obimu. Dizajn ove platforme fokusira se na optimizaciju procesa razvoja i poboljšanje upravljivosti aplikacija. Ključne karakteristike i beneficije GCP-ovog App Engine-a uključuju:

  1. Serverless Arhitektura: App Engine automatski upravlja infrastrukturom, uključujući obezbeđivanje servera, konfiguraciju i skaliranje. Ovo omogućava developerima da se fokusiraju na pisanje koda bez brige o osnovnom hardveru.

  2. Automatsko Skaliranje: App Engine može automatski skalirati vašu aplikaciju u odgovoru na količinu primljenog saobraćaja. Skalira se da bi se nosio sa povećanim saobraćajem i smanjuje se kada saobraćaj opada, pomažući u optimizaciji troškova i performansi.

  3. Podrška za Jezike i Runtime: Podržava popularne programske jezike poput Java, Python, Node.js, Go, Ruby, PHP i .NET. Možete pokrenuti svoje aplikacije u standardnom ili fleksibilnom okruženju. Standardno okruženje je restriktivnije ali visoko optimizovano za određene jezike, dok fleksibilno okruženje omogućava više prilagođavanja.

  4. Integrisane Usluge: App Engine se integriše sa mnogim drugim GCP uslugama, poput Cloud SQL, Cloud Storage, Cloud Datastore i drugih. Ova integracija pojednostavljuje arhitekturu cloud-based aplikacija.

  5. Verzionisanje i Deljenje Saobraćaja: Možete lako implementirati više verzija vaše aplikacije i zatim podeliti saobraćaj među njima za A/B testiranje ili postepene implementacije.

  6. Insights Aplikacije: App Engine pruža ugrađene usluge poput logovanja, autentifikacije korisnika i paket alata za praćenje i upravljanje aplikacijama.

  7. Bezbednost: Nudi ugrađene bezbednosne funkcije poput verzionisanja aplikacija, SSL/TLS sertifikata za sigurne veze i upravljanja identitetom i pristupom.

Firewall

Jednostavan firewall može se konfigurisati za instance koje pokreću Aplikacije sa sledećim opcijama:

SA

Podrazumevani servisni nalog koji koriste ove Aplikacije je <proj-naziv>@appspot.gserviceaccount.com koji ima Urednik ulogu nad projektom i SA unutar APP Engine instance radi sa opsegom cloud-platform (između ostalog).

Skladištenje

Izvorni kod i metapodaci se automatski skladište u bucket-ima sa imenima poput <proj-id>.appspot.com i staging.<proj-id>.appspot.com i <država>.<proj-id>.appspot.com

Svaki fajl Aplikacije se skladišti sa sha1 sadržaja kao nazivom fajla:

Unutar ae foldera iz staging.<proj-id>.appspot.com, postoji jedan folder po verziji sa fajlovima izvornog koda i manifest.json fajlom koji opisuje komponente Aplikacije:

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

Kontejneri

Veb aplikacija će na kraju biti izvršena unutar kontejnera i Code Build se koristi za izgradnju kontejnera.

URL-ovi i Regioni

Podrazumevana veb stranica će biti izložena na URL-u <project-uniq-name>.appspot.com iako će URL starijih verzija biti malo drugačiji, kao što je https://20240117t001540-dot-<project-uniq-name>.uc.r.appspot.com (obratite pažnju na početni tajmestamp).

Može se činiti da je moguće implementirati samo 1 veb aplikaciju app engine po regionu, ali je moguće naznačiti service: <servicename> u app.yml i kreirati novu uslugu (novi veb). Format URL-a za ovaj novi veb će biti <servicename>-dot-<project-uniq-name>.appspot.com.

Enumeracija

Svaki put kada otpremite novi kod na aplikaciju, kreira se nova verzija. Sve verzije se čuvaju i čak imaju URL za pristupanje njima. Stoga, izmena koda stare verzije može biti odlična tehnika upornosti.

Kao i sa Cloud Functions, postoji mogućnost da aplikacija zavisi od tajni do kojih se pristupa u vreme izvršavanja putem okružnih promenljivih. Ove promenljive se čuvaju u app.yaml fajlu do kojih se može pristupiti na sledeći način:

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

Eskalacija privilegija

pageGCP - AppEngine Privesc

Neautentifikovano nabrajanje

pageGCP - App Engine Unauthenticated Enum

Post eksploatacija

pageGCP - App Engine Post Exploitation

Upornost

pageGCP - App Engine Persistence
Naučite hakovanje AWS-a od početnika do stručnjaka sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Last updated