Translated ['src/pentesting-ci-cd/cloudflare-security/cloudflare-domains

This commit is contained in:
Translator
2025-01-11 19:16:44 +00:00
parent 9f75e84afc
commit ecf5b2bb87
44 changed files with 1890 additions and 318 deletions

View File

@@ -19,46 +19,46 @@ gcp-basic-information/
- [https://github.com/lacioffi/GCP-pentest-lab/](https://github.com/lacioffi/GCP-pentest-lab/)
- [https://github.com/carlospolop/gcp_privesc_scripts](https://github.com/carlospolop/gcp_privesc_scripts)
## Metodología de Pentester/Red Team de GCP
## Metodología de Pentester/Red Team en GCP
Para auditar un ambiente de GCP es muy importante saber: qué **servicios se están utilizando**, qué está **siendo expuesto**, quién tiene **acceso** a qué, y cómo están conectados los servicios internos de GCP y los **servicios externos**.
Para auditar un ambiente de GCP, es muy importante saber: qué **servicios se están utilizando**, qué está **siendo expuesto**, quién tiene **acceso** a qué, y cómo están conectados los servicios internos de GCP y los **servicios externos**.
Desde el punto de vista de un Red Team, el **primer paso para comprometer un ambiente de GCP** es lograr obtener algunas **credenciales**. Aquí tienes algunas ideas sobre cómo hacerlo:
- **Filtraciones** en github (o similar) - OSINT
- **Ingeniería** Social (Consulta la página [**Seguridad de Workspace**](../workspace-security/))
- **Ingeniería** Social (Consulta la página [**Seguridad de Workspace**](../workspace-security/index.html))
- Reutilización de **contraseñas** (filtraciones de contraseñas)
- Vulnerabilidades en Aplicaciones Alojadas en GCP
- [**Server Side Request Forgery**](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf) con acceso al endpoint de metadatos
- [**Server Side Request Forgery**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html) con acceso al endpoint de metadatos
- **Lectura de Archivos Locales**
- `/home/USERNAME/.config/gcloud/*`
- `C:\Users\USERNAME\.config\gcloud\*`
- **terceros** **comprometidos**
- **Empleado** Interno
O comprometiendo un servicio **no autenticado** expuesto:
O comprometiendo un **servicio no autenticado** expuesto:
{{#ref}}
gcp-unauthenticated-enum-and-access/
{{#endref}}
O si estás haciendo una **revisión** podrías simplemente **pedir credenciales** con estos roles:
O si estás haciendo una **revisión**, podrías simplemente **pedir credenciales** con estos roles:
{{#ref}}
gcp-permissions-for-a-pentest.md
{{#endref}}
> [!NOTE]
> Después de haber logrado obtener credenciales, necesitas saber **a quién pertenecen esas credenciales**, y **a qué tienen acceso**, así que necesitas realizar alguna enumeración básica:
> Después de haber logrado obtener credenciales, necesitas saber **a quién pertenecen esas credenciales**, y **a qué tienen acceso**, por lo que necesitas realizar alguna enumeración básica:
## Enumeración Básica
### **SSRF**
Para más información sobre cómo **enumerar metadatos de GCP** consulta la siguiente página de hacktricks:
Para más información sobre cómo **enumerar metadatos de GCP**, consulta la siguiente página de hacktricks:
{{#ref}}
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#6440
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html
{{#endref}}
### Whoami
@@ -91,25 +91,25 @@ gcloud projects list # Get projects
Si tienes suficientes permisos, **verificar los privilegios de cada entidad dentro de la cuenta de GCP** te ayudará a entender qué puedes hacer tú y otras identidades y cómo **escalar privilegios**.
Si no tienes suficientes permisos para enumerar IAM, puedes **robarlos mediante fuerza bruta** para averiguarlos.\
Consulta **cómo hacer la enumeración y la fuerza bruta** en:
Consulta **cómo realizar la enumeración y la fuerza bruta** en:
{{#ref}}
gcp-services/gcp-iam-and-org-policies-enum.md
{{#endref}}
> [!NOTE]
> Ahora que **tienes algo de información sobre tus credenciales** (y si eres un equipo rojo, espero que **no hayas sido detectado**). Es hora de averiguar qué servicios se están utilizando en el entorno.\
> Ahora que **tienes algo de información sobre tus credenciales** (y si eres un red team, espero que **no hayas sido detectado**). Es hora de averiguar qué servicios se están utilizando en el entorno.\
> En la siguiente sección puedes consultar algunas formas de **enumerar algunos servicios comunes.**
## Enumeración de Servicios
GCP tiene una asombrosa cantidad de servicios, en la siguiente página encontrarás **información básica, enumeración** de cheatsheets, cómo **evitar la detección**, obtener **persistencia** y otros trucos de **post-explotación** sobre algunos de ellos:
GCP tiene una asombrosa cantidad de servicios, en la siguiente página encontrarás **información básica, cheatsheets de enumeración**, cómo **evitar la detección**, obtener **persistencia** y otros trucos de **post-explotación** sobre algunos de ellos:
{{#ref}}
gcp-services/
{{#endref}}
Ten en cuenta que **no** necesitas realizar todo el trabajo **manualmente**, a continuación en esta publicación puedes encontrar una **sección sobre** [**herramientas automáticas**](./#automatic-tools).
Ten en cuenta que **no** necesitas realizar todo el trabajo **manualmente**, a continuación en esta publicación puedes encontrar una **sección sobre** [**herramientas automáticas**](#automatic-tools).
Además, en esta etapa podrías haber descubierto **más servicios expuestos a usuarios no autenticados**, podrías ser capaz de explotarlos:
@@ -119,7 +119,7 @@ gcp-unauthenticated-enum-and-access/
## Escalación de Privilegios, Post Explotación y Persistencia
La forma más común una vez que has obtenido algunas credenciales en la nube o has comprometido algún servicio que se ejecuta dentro de la nube es **abusar de privilegios mal configurados** que la cuenta comprometida puede tener. Así que, lo primero que debes hacer es enumerar tus privilegios.
La forma más común una vez que has obtenido algunas credenciales de la nube o has comprometido algún servicio que se ejecuta dentro de una nube es **abusar de los privilegios mal configurados** que puede tener la cuenta comprometida. Así que, lo primero que debes hacer es enumerar tus privilegios.
Además, durante esta enumeración, recuerda que **los permisos pueden establecerse en el nivel más alto de "Organización"** también.
@@ -138,12 +138,12 @@ gcp-persistence/
### Servicios Expuestos Públicamente
Mientras enumerabas los servicios de GCP, podrías haber encontrado algunos de ellos **exponiendo elementos a Internet** (puertos de VM/Contenedores, bases de datos o servicios de cola, instantáneas o buckets...).\
Como pentester/equipo rojo, siempre debes verificar si puedes encontrar **información sensible / vulnerabilidades** en ellos, ya que podrían proporcionarte **acceso adicional a la cuenta de AWS**.
Como pentester/red teamer, siempre deberías verificar si puedes encontrar **información sensible / vulnerabilidades** en ellos, ya que podrían proporcionarte **acceso adicional a la cuenta de AWS**.
En este libro deberías encontrar **información** sobre cómo encontrar **servicios de GCP expuestos y cómo verificarlos**. Sobre cómo encontrar **vulnerabilidades en servicios de red expuestos**, te recomendaría **buscar** el **servicio** específico en:
{{#ref}}
https://book.hacktricks.xyz/
https://book.hacktricks.wiki/
{{#endref}}
## GCP <--> Workspace Pivoting
@@ -189,7 +189,7 @@ gcloud auth application-default print-access-token
# Update gcloud
gcloud components update
```
### Captura de red gcloud, gsutil...
### Captura de gcloud, gsutil... red
Recuerda que puedes usar el **parámetro** **`--log-http`** con el **`gcloud`** cli para **imprimir** las **solicitudes** que la herramienta está realizando. Si no deseas que los registros redacten el valor del token, usa `gcloud config set log_http_redact_token false`

View File

@@ -23,7 +23,7 @@ Para más información sobre el Registro de Artefactos consulta:
Esta técnica puede ser útil para **persistencia** y **acceso no autenticado**, ya que para abusar de ella solo se requiere **conocer el nombre de una biblioteca** almacenada en el Registro de Artefactos y **crear esa misma biblioteca en el repositorio público (PyPi para python, por ejemplo)** con una versión más alta.
Para persistencia, estos son los pasos que debes seguir:
Para persistencia, estos son los pasos que necesitas seguir:
- **Requisitos**: Debe **existir** un **repositorio virtual** y ser utilizado, se debe usar un **paquete interno** con un **nombre** que no exista en el **repositorio público**.
- Crea un repositorio remoto si no existe
@@ -36,7 +36,7 @@ Ejecuta algo como:
Para más información sobre la confusión de dependencias consulta:
{{#ref}}
https://book.hacktricks.xyz/pentesting-web/dependency-confusion
https://book.hacktricks.wiki/en/pentesting-web/dependency-confusion.html
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -8,10 +8,10 @@ Para obtener el **token actual** de un usuario, puedes ejecutar:
```bash
sqlite3 $HOME/.config/gcloud/access_tokens.db "select access_token from access_tokens where account_id='<email>';"
```
Verifica en esta página cómo **usar este token directamente usando gcloud**:
Consulta en esta página cómo **usar directamente este token usando gcloud**:
{{#ref}}
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#id-6440-1
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#gcp
{{#endref}}
Para obtener los detalles para **generar un nuevo token de acceso**, ejecuta:
@@ -34,18 +34,18 @@ El flujo de autenticación al usar algo como `gcloud auth login` abrirá un avis
```
/?state=EN5AK1GxwrEKgKog9ANBm0qDwWByYO&code=4/0AeaYSHCllDzZCAt2IlNWjMHqr4XKOuNuhOL-TM541gv-F6WOUsbwXiUgMYvo4Fg0NGzV9A&scope=email%20openid%20https://www.googleapis.com/auth/userinfo.email%20https://www.googleapis.com/auth/cloud-platform%20https://www.googleapis.com/auth/appengine.admin%20https://www.googleapis.com/auth/sqlservice.login%20https://www.googleapis.com/auth/compute%20https://www.googleapis.com/auth/accounts.reauth&authuser=0&prompt=consent HTTP/1.1
```
Luego, gcloud utilizará el estado y el código con un `client_id` (`32555940559.apps.googleusercontent.com`) y **`client_secret`** (`ZmssLNjJy2998hD4CTg2ejr2`) codificados para obtener los **datos finales del token de actualización**.
Luego, gcloud utilizará el estado y el código con un `client_id` codificado (`32555940559.apps.googleusercontent.com`) y **`client_secret`** (`ZmssLNjJy2998hD4CTg2ejr2`) para obtener los **datos finales del token de actualización**.
> [!CAUTION]
> Tenga en cuenta que la comunicación con localhost es en HTTP, por lo que es posible interceptar los datos para obtener un token de actualización; sin embargo, estos datos son válidos solo 1 vez, por lo que esto sería inútil, es más fácil simplemente leer el token de actualización del archivo.
### Alcances de OAuth
Puedes encontrar todos los alcances de Google en [https://developers.google.com/identity/protocols/oauth2/scopes](https://developers.google.com/identity/protocols/oauth2/scopes) o obtenerlos ejecutando:
Puede encontrar todos los alcances de Google en [https://developers.google.com/identity/protocols/oauth2/scopes](https://developers.google.com/identity/protocols/oauth2/scopes) o obtenerlos ejecutando:
```bash
curl "https://developers.google.com/identity/protocols/oauth2/scopes" | grep -oE 'https://www.googleapis.com/auth/[a-zA-A/\-\._]*' | sort -u
```
Es posible ver qué alcances la aplicación que **`gcloud`** utiliza para autenticarse puede soportar con este script:
Es posible ver qué scopes la aplicación que **`gcloud`** utiliza para autenticarse puede soportar con este script:
```bash
curl "https://developers.google.com/identity/protocols/oauth2/scopes" | grep -oE 'https://www.googleapis.com/auth/[a-zA-Z/\._\-]*' | sort -u | while read -r scope; do
echo -ne "Testing $scope \r"
@@ -67,7 +67,7 @@ https://www.googleapis.com/auth/userinfo.email
```
es interesante ver cómo esta aplicación soporta el **`drive`** scope, lo que podría permitir a un usuario escalar de GCP a Workspace si un atacante logra forzar al usuario a generar un token con este scope.
**Ver cómo** [**abusar de esto aquí**](../gcp-to-workspace-pivoting/#abusing-gcloud)**.**
**Ver cómo** [**abusar de esto aquí**](../gcp-to-workspace-pivoting/index.html#abusing-gcloud)**.**
### Cuentas de Servicio

View File

@@ -8,15 +8,15 @@ Sorprendentemente, los permisos de GCP del compute engine que has comprometido p
## Leer los scripts <a href="#follow-the-scripts" id="follow-the-scripts"></a>
**Compute Instances** probablemente estén allí para **ejecutar algunos scripts** para realizar acciones con sus cuentas de servicio.
**Las Instancias de Cómputo** probablemente están ahí para **ejecutar algunos scripts** para realizar acciones con sus cuentas de servicio.
Como IAM es muy granular, una cuenta puede tener privilegios de **lectura/escritura** sobre un recurso pero **sin privilegios de listado**.
Un gran ejemplo hipotético de esto es una Compute Instance que tiene permiso para leer/escribir copias de seguridad en un bucket de almacenamiento llamado `instance82736-long-term-xyz-archive-0332893`.
Un gran ejemplo hipotético de esto es una Instancia de Cómputo que tiene permiso para leer/escribir copias de seguridad en un bucket de almacenamiento llamado `instance82736-long-term-xyz-archive-0332893`.
Ejecutar `gsutil ls` desde la línea de comandos no devuelve nada, ya que la cuenta de servicio carece del permiso IAM `storage.buckets.list`. Sin embargo, si ejecutas `gsutil ls gs://instance82736-long-term-xyz-archive-0332893` puedes encontrar una copia de seguridad completa del sistema de archivos, dándote acceso en texto claro a datos que tu cuenta local de Linux no tiene.
Es posible que puedas encontrar este nombre de bucket dentro de un script (en bash, Python, Ruby...).
Puedes encontrar este nombre de bucket dentro de un script (en bash, Python, Ruby...).
## Metadatos personalizados
@@ -27,7 +27,7 @@ Además, es posible agregar **userdata**, que es un script que será **ejecutado
Para más información consulta:
{{#ref}}
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html
{{#endref}}
## **Abusando de los permisos de IAM**
@@ -36,11 +36,11 @@ La mayoría de los siguientes permisos propuestos son **otorgados al SA de Compu
Revisa los siguientes permisos:
- [**compute.instances.osLogin**](gcp-compute-privesc/#compute.instances.oslogin)
- [**compute.instances.osAdminLogin**](gcp-compute-privesc/#compute.instances.osadminlogin)
- [**compute.projects.setCommonInstanceMetadata**](gcp-compute-privesc/#compute.projects.setcommoninstancemetadata)
- [**compute.instances.setMetadata**](gcp-compute-privesc/#compute.instances.setmetadata)
- [**compute.instances.setIamPolicy**](gcp-compute-privesc/#compute.instances.setiampolicy)
- [**compute.instances.osLogin**](gcp-compute-privesc/index.html#compute.instances.oslogin)
- [**compute.instances.osAdminLogin**](gcp-compute-privesc/index.html#compute.instances.osadminlogin)
- [**compute.projects.setCommonInstanceMetadata**](gcp-compute-privesc/index.html#compute.projects.setcommoninstancemetadata)
- [**compute.instances.setMetadata**](gcp-compute-privesc/index.html#compute.instances.setmetadata)
- [**compute.instances.setIamPolicy**](gcp-compute-privesc/index.html#compute.instances.setiampolicy)
## Buscar claves en el sistema de archivos

View File

@@ -53,7 +53,7 @@ Es posible permitir tráfico HTTP y HTTPS.
### Redes
- **Reenvío de IP**: Es posible **habilitar el reenvío de IP** desde la creación de la instancia.
- **Nombre de host**: Es posible dar a la instancia un nombre de host permanente.
- **Nombre de host**: Es posible darle a la instancia un nombre de host permanente.
- **Interfaz**: Es posible agregar una interfaz de red.
### Seguridad Adicional
@@ -89,12 +89,12 @@ curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?re
Además, **el token de autenticación para la cuenta de servicio adjunta** y **información general** sobre la instancia, la red y el proyecto también estarán disponibles desde el **punto final de metadatos**. Para más información, consulta:
{{#ref}}
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#6440
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#gcp
{{#endref}}
### Cifrado
Se utiliza una clave de cifrado gestionada por Google de forma predeterminada, pero se puede configurar una clave de cifrado gestionada por el cliente (CMEK). También puedes configurar qué hacer cuando se revoca la CMEF utilizada: Notificar o apagar la VM.
Se utiliza por defecto una clave de cifrado gestionada por Google, pero se puede configurar una clave de cifrado gestionada por el cliente (CMEK). También puedes configurar qué hacer cuando se revoca la CMEK utilizada: Notificar o apagar la VM.
<figure><img src="../../../../images/image (329).png" alt=""><figcaption></figcaption></figure>

View File

@@ -1,10 +1,10 @@
# GCP - Cloud SQL Enumeración No Autenticada
# GCP - Enumeración No Autenticada de Cloud SQL
{{#include ../../../banners/hacktricks-training.md}}
## Cloud SQL
Para más información sobre Cloud SQL consulta:
Para más información sobre Cloud SQL, consulta:
{{#ref}}
../gcp-services/gcp-cloud-sql-enum.md
@@ -17,7 +17,7 @@ Si tienes **acceso a un puerto de Cloud SQL** porque todo el internet está perm
Consulta esta página para **diferentes herramientas para forzar** diferentes tecnologías de bases de datos:
{{#ref}}
https://book.hacktricks.xyz/generic-methodologies-and-resources/brute-force
https://book.hacktricks.wiki/en/generic-hacking/brute-force.html
{{#endref}}
Recuerda que con algunos privilegios es posible **listar todos los usuarios de la base de datos** a través de la API de GCP.

View File

@@ -12,10 +12,10 @@ Para más información sobre Compute y VPC (Redes) consulta:
### SSRF - Falsificación de Solicitudes del Lado del Servidor
Si una web es **vulnerable a SSRF** y es posible **agregar el encabezado de metadatos**, un atacante podría abusar de ello para acceder al token OAuth de SA desde el endpoint de metadatos. Para más información sobre SSRF consulta:
Si una web es **vulnerable a SSRF** y es posible **agregar el encabezado de metadatos**, un atacante podría abusar de ello para acceder al token OAuth de la SA desde el endpoint de metadatos. Para más información sobre SSRF consulta:
{{#ref}}
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/index.html
{{#endref}}
### Servicios expuestos vulnerables