GCP - App Engine Enum
Información Básica
Google Cloud Platform's (GCP) App Engine es una plataforma robusta y sin servidor diseñada para el desarrollo y alojamiento de aplicaciones web a gran escala. El diseño de esta plataforma se centra en simplificar el proceso de desarrollo y mejorar la manejabilidad de las aplicaciones. Las características y beneficios clave de App Engine de GCP incluyen:
Arquitectura sin Servidor: App Engine maneja automáticamente la infraestructura, incluyendo la provisión, configuración y escalado de servidores. Esto permite a los desarrolladores centrarse en escribir código sin preocuparse por el hardware subyacente.
Escalado Automático: App Engine puede escalar automáticamente tu aplicación en respuesta a la cantidad de tráfico que recibe. Escala hacia arriba para manejar el aumento de tráfico y escala hacia abajo cuando el tráfico disminuye, ayudando a optimizar costos y rendimiento.
Soporte de Lenguajes y Entornos de Ejecución: Soporta lenguajes de programación populares como Java, Python, Node.js, Go, Ruby, PHP y .NET. Puedes ejecutar tus aplicaciones en un entorno estándar o flexible. El entorno estándar es más restrictivo pero altamente optimizado para lenguajes específicos, mientras que el entorno flexible permite más personalización.
Servicios Integrados: App Engine se integra con muchos otros servicios de GCP, como Cloud SQL, Cloud Storage, Cloud Datastore y más. Esta integración simplifica la arquitectura de aplicaciones basadas en la nube.
Versionado y División de Tráfico: Puedes desplegar fácilmente múltiples versiones de tu aplicación y luego dividir el tráfico entre ellas para pruebas A/B o implementaciones graduales.
Información de la Aplicación: App Engine proporciona servicios integrados como registro, autenticación de usuarios y un conjunto de herramientas para desarrolladores para monitorear y gestionar aplicaciones.
Seguridad: Ofrece características de seguridad integradas como versionado de aplicaciones, certificados SSL/TLS para conexiones seguras y gestión de identidad y acceso.
Firewall
Un firewall simple puede ser configurado para las instancias que ejecutan las Apps con las siguientes opciones:
SA
La cuenta de servicio predeterminada utilizada por estas Apps es <proj-name>@appspot.gserviceaccount.com
que tiene el rol de Editor sobre el proyecto y las SAs dentro de la instancia de APP Engine se ejecutan con el alcance de cloud-platform (entre otros).
Almacenamiento
El código fuente y los metadatos se almacenan automáticamente en buckets con nombres como <proj-id>.appspot.com
y staging.<proj-id>.appspot.com
y <country>.<proj-id>.appspot.com
Cada archivo de la App se almacena con el sha1 del contenido como nombre de archivo:
Dentro de la carpeta ae
de staging.<proj-id>.appspot.com
, existe una carpeta por versión con los archivos del código fuente y el archivo manifest.json
que describe los componentes de la App:
Contenedores
La aplicación web se ejecutará finalmente dentro de un contenedor y se utiliza Code Build para construir el contenedor.
URLs y Regiones
La página web predeterminada se expondrá en la URL <project-uniq-name>.appspot.com
aunque la URL de versiones anteriores será ligeramente diferente, como https://20240117t001540-dot-<project-uniq-name>.uc.r.appspot.com
(nótese la marca de tiempo inicial).
Podría parecer que solo es posible desplegar 1 aplicación web de App Engine por región, pero es posible indicar service: <servicename>
en el app.yml
y crear un nuevo servicio (una nueva web). El formato de la URL para esta nueva web será <servicename>-dot-<project-uniq-name>.appspot.com
.
Enumeración
Cada vez que subes un nuevo código a la App, se crea una nueva versión. Todas las versiones se almacenan y tienen incluso una URL para acceder a ellas. Así que modificar el código de una versión antigua podría ser una gran técnica de persistencia.
Al igual que con Cloud Functions, existe la posibilidad de que la aplicación dependa de secretos que se acceden en tiempo de ejecución a través de variables de entorno. Estas variables se almacenan en un archivo app.yaml
que se puede acceder de la siguiente manera:
Escalada de Privilegios
GCP - AppEngine PrivescEnumeración No Autenticada
GCP - App Engine Unauthenticated EnumPost Explotación
GCP - App Engine Post ExploitationPersistencia
GCP - App Engine PersistenceLast updated