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 d709d8590..901e9a1d4 100644 --- a/src/pentesting-cloud/aws-security/aws-basic-information/README.md +++ b/src/pentesting-cloud/aws-security/aws-basic-information/README.md @@ -33,7 +33,7 @@ aws organizations create-account --account-name testingaccount --email testingac ``` ### **Unidades de Organización** -Las cuentas pueden agruparse en **Unidades de Organización (OU)**. De esta manera, puedes crear **políticas** para la Unidad de Organización que se van a **aplicar a todas las cuentas hijas**. Ten en cuenta que una OU puede tener otras OUs como hijas. +Las cuentas se pueden agrupar en **Unidades de Organización (OU)**. De esta manera, puedes crear **políticas** para la Unidad de Organización que se van a **aplicar a todas las cuentas hijas**. Ten en cuenta que una OU puede tener otras OUs como hijas. ```bash # You can get the root id from aws organizations list-roots aws organizations create-organizational-unit --parent-id r-lalala --name TestOU @@ -67,14 +67,14 @@ Encuentra **ejemplos de JSON** en [https://docs.aws.amazon.com/organizations/lat arn:partition:service:region:account-id:resource-type/resource-id arn:aws:elasticbeanstalk:us-west-1:123456789098:environment/App/Env ``` -Nota que hay 4 particiones en AWS pero solo 3 formas de llamarlas: +Note que hay 4 particiones en AWS pero solo 3 formas de llamarlas: - AWS Standard: `aws` - AWS China: `aws-cn` - AWS US public Internet (GovCloud): `aws-us-gov` - AWS Secret (US Classified): `aws` -## IAM - Gestión de Identidad y Acceso +## IAM - Identity and Access Management IAM es el servicio que te permitirá gestionar **Autenticación**, **Autorización** y **Control de Acceso** dentro de tu cuenta de AWS. @@ -84,15 +84,15 @@ IAM es el servicio que te permitirá gestionar **Autenticación**, **Autorizaci IAM se puede definir por su capacidad para gestionar, controlar y gobernar los mecanismos de autenticación, autorización y control de acceso de identidades a tus recursos dentro de tu cuenta de AWS. -### [Usuario raíz de la cuenta de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html) +### [AWS account root user](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 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**. +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 usaste para crear la cuenta**. -Nota que un nuevo **usuario admin** tendrá **menos permisos que el usuario raíz**. +Ten en cuenta que un nuevo **usuario administrador** tendrá **menos permisos que el usuario raíz**. 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) +### [IAM users](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html) Un _usuario_ de IAM es una entidad que creas en AWS para **representar a la persona o aplicación** que lo utiliza para **interactuar con AWS**. Un usuario en AWS consiste en un nombre y credenciales (contraseña y hasta dos claves de acceso). @@ -102,13 +102,13 @@ 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 claves de acceso secretas perdidas). +- **Access Key ID**: 20 caracteres alfanuméricos aleatorios en mayúsculas como AKHDNAPO86BSHKDIRYT +- **Secret access key ID**: 40 caracteres aleatorios en mayúsculas y minúsculas: S836fh/J73yHSb64Ag3Rkdi/jaD6sPl6/antFtU (No es posible recuperar los IDs de claves de acceso secreto perdidos). -Siempre que necesites **cambiar la clave de acceso**, este es el proceso que debes seguir:\ +Siempre que necesites **cambiar la Clave de Acceso**, este es el proceso que debes seguir:\ _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 +### MFA - Multi Factor Authentication Se utiliza para **crear un factor adicional para la autenticación** además de tus métodos existentes, como la contraseña, creando así un nivel de autenticación multifactor.\ Puedes usar una **aplicación virtual gratuita o un dispositivo físico**. Puedes usar aplicaciones como Google Authenticator de forma gratuita para activar un MFA en AWS. @@ -120,7 +120,7 @@ Las políticas con condiciones de MFA se pueden adjuntar a lo siguiente: - La política de confianza de un rol de IAM que puede ser asumido por un usuario Si deseas **acceder a través de CLI** a un recurso que **verifica MFA**, necesitas llamar a **`GetSessionToken`**. Eso te dará un token con información sobre MFA.\ -Nota que **las credenciales de `AssumeRole` no contienen esta información**. +Ten en cuenta que **las credenciales de `AssumeRole` no contienen esta información**. ```bash aws sts get-session-token --serial-number --token-code ``` @@ -128,7 +128,7 @@ Como [**se indica aquí**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_c ### [Grupos de usuarios de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) -Un [grupo de usuarios](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) de IAM es una forma de **adjuntar políticas a múltiples usuarios** a la vez, lo que puede facilitar la gestión de los permisos para esos usuarios. **Los roles y grupos no pueden ser parte de un grupo**. +Un [grupo de usuarios de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) es una forma de **adjuntar políticas a múltiples usuarios** a la vez, lo que puede facilitar la gestión de los permisos para esos usuarios. **Los roles y grupos no pueden ser parte de un grupo**. Puedes adjuntar una **política basada en identidad a un grupo de usuarios** para que todos los **usuarios** en el grupo de usuarios **reciban los permisos de la política**. No **puedes** identificar un **grupo de usuarios** como un **`Principal`** en una **política** (como una política basada en recursos) porque los grupos se relacionan con permisos, no con autenticación, y los principales son entidades IAM autenticadas. @@ -137,7 +137,7 @@ Aquí hay algunas características importantes de los grupos de usuarios: - Un **grupo** de usuarios puede **contener muchos usuarios**, y un **usuario** puede **pertenecer a múltiples grupos**. - **Los grupos de usuarios no pueden estar anidados**; solo pueden contener usuarios, no otros grupos de usuarios. - No hay **un grupo de usuarios predeterminado que incluya automáticamente a todos los usuarios en la cuenta de AWS**. Si deseas tener un grupo de usuarios así, debes crearlo y asignar a cada nuevo usuario a él. -- El número y tamaño de los recursos de IAM en una cuenta de AWS, como el número de grupos y el número de grupos de los que un usuario puede ser miembro, son limitados. Para más información, consulta [cuotas de IAM y AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html). +- El número y tamaño de los recursos IAM en una cuenta de AWS, como el número de grupos y el número de grupos de los que un usuario puede ser miembro, son limitados. Para más información, consulta [cuotas de IAM y AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html). ### [Roles de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) @@ -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 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 @@ -160,9 +160,9 @@ Las **credenciales temporales se utilizan principalmente con roles de IAM**, per 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. +- 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 propia), 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** está **denegado**, el acceso se otorgará si se ha especificado un rol explícito.\ +Por **defecto, el acceso** es **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,7 +191,7 @@ 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. Por lo tanto, no aparecen en la lista de Políticas ya que ningún otro puede usarlas.\ +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 cualquier 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 @@ -226,8 +226,8 @@ Por lo tanto, si en algún momento te enfrentas al error "... porque ninguna pol ### Federación de Identidad -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. +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 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á 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 confiable accede a AWS, lo hará como el rol mencionado. @@ -259,7 +259,7 @@ Es posible **dar permisos a través de políticas en línea a roles creados a tr Por lo tanto, incluso si ves 2 roles con una política en línea llamada **`AwsSSOInlinePolicy`**, **no significa que tenga los mismos permisos**. -### Confianzas y Roles entre Cuentas +### Confianza 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, 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. @@ -287,9 +287,9 @@ La aplicación utiliza AssumeRoleWithWebIdentity para crear credenciales tempora 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 +### Prefijos de ID IAM -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: +En [**esta página**](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids) puedes encontrar los **prefijos de ID IAM** de las claves dependiendo de su naturaleza: | Código de Identificador | Descripción | | ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -305,7 +305,7 @@ En [**esta página**](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference | APKA | Clave pública | | AROA | Rol | | ASCA | Certificado | -| ASIA | [IDs de claves de acceso temporales (AWS STS)](https://docs.aws.amazon.com/STS/latest/APIReference/API_Credentials.html) utilizan este prefijo, pero son únicos solo en combinación con la clave de acceso secreta y el token de sesión. | +| ASIA | [IDs de claves de acceso temporales (AWS STS)](https://docs.aws.amazon.com/STS/latest/APIReference/API_Credentials.html) usan este prefijo, pero son únicos solo en combinación con la clave de acceso secreta y el token de sesión. | ### Permisos recomendados para auditar cuentas @@ -320,12 +320,12 @@ Los siguientes privilegios otorgan varios accesos de lectura de metadatos: - `directconnect:DescribeConnections` - `dynamodb:ListTables` -## Varios +## Miscelánea ### Autenticación CLI 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.\ +En ese archivo puedes tener más de un perfil, si **no se especifica un perfil** usando el **aws cli**, se usará el llamado **`[default]`** en ese archivo.\ Ejemplo de archivo de credenciales con más de 1 perfil: ``` [default] 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 d5f28775b..5bc8718a9 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 @@ -59,7 +59,7 @@ Al crear un CloudTrail, es posible indicar que se active CloudTrail para todas l
-De esta manera, puedes configurar fácilmente CloudTrail en todas las regiones de todas las cuentas y centralizar los registros en 1 cuenta (que debes proteger). +De esta manera, puedes configurar fácilmente CloudTrail en todas las regiones de todas las cuentas y centralizar los registros en 1 cuenta (que deberías proteger). ### Verificación de Archivos de Registro @@ -91,8 +91,8 @@ Los insights se almacenan en el mismo bucket que los registros de CloudTrail en: | Control Name | Implementation Details | | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | CloudTrail Log File Integrity | | -| Stop unauthorized access | | -| Prevent log files from being deleted | | +| Stop unauthorized access | | +| Prevent log files from being deleted | | ## Access Advisor @@ -191,7 +191,7 @@ La cuestión es que la salida te mostrará un error indicando el ID de la cuenta #### Servicios de AWS sin logs -En el pasado, había algunos **servicios de AWS que no enviaban logs a CloudTrail** (encuentra una [lista aquí](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-unsupported-aws-services.html)). Algunos de esos servicios **responderán** con un **error** que contiene el **ARN del rol de la clave** si alguien no autorizado (la clave honeytoken) intenta acceder a él. +En el pasado había algunos **servicios de AWS que no envían logs a CloudTrail** (encuentra una [lista aquí](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-unsupported-aws-services.html)). Algunos de esos servicios **responderán** con un **error** que contiene el **ARN del rol de la clave** si alguien no autorizado (la clave honeytoken) intenta acceder a él. De esta manera, un **atacante puede obtener el ARN de la clave sin activar ningún log**. En el ARN, el atacante puede ver el **ID de la cuenta de AWS y el nombre**, es fácil conocer el ID y los nombres de las cuentas de las empresas del HoneyToken, así que de esta manera un atacante puede identificar si el token es un HoneyToken. @@ -200,7 +200,7 @@ De esta manera, un **atacante puede obtener el ARN de la clave sin activar ning > [!CAUTION] > 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/). +> Para más información consulta la [**investigación original**](https://rhinosecuritylabs.com/aws/aws-iam-enumeration-2-0-bypassing-cloudtrail-logging/). ### Accediendo a Infraestructura de Terceros 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 f27c6ed67..d6564b86b 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 @@ -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 una alarma (por ejemplo, notificar a través de SNS). +- **Acciones**: Lo que sucede cuando se activa el estado de la alarma (por ejemplo, notificar a través de SNS). **Ejemplo de Caso de Uso**: -- 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. +- 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. ### Anomaly Detectors @@ -120,11 +120,11 @@ Permite **agregar y monitorear logs de aplicaciones** y sistemas de **servicios **Elementos**: | 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 | +| **Log Group** | Una **colección de flujos de logs** que comparten la misma retención, monitoreo y configuraciones de control de acceso | +| **Log Stream** | Una secuencia de **eventos de log** que comparten el **mismo origen** | +| **Subscription Filters** | 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 Monitoring & Events 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) @@ -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 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. +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. 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,7 +287,7 @@ 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. 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. +- Si usas **`SetAlarmState`** en una alarma compuesta, no se garantiza que la alarma compuesta regrese 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 @@ -297,12 +297,12 @@ aws cloudwatch set-alarm-state --alarm-name --state-value | --namespace --metric-name --dimensions --stat ] aws cloudwatch put-anomaly-detector [--cli-input-json | --namespace --metric-name --dimensions --stat --configuration --metric-characteristics ] ``` -El siguiente ejemplo muestra cómo hacer que un detector de anomalías de métricas sea ineficaz. Este detector de anomalías de métricas monitorea la utilización promedio de CPU de una instancia EC2 específica, y solo al agregar el parámetro “ExcludedTimeRanges” con el rango de tiempo deseado, sería suficiente para asegurar que el detector de anomalías no analice ni alerte sobre ningún dato relevante durante ese período. +El siguiente ejemplo muestra cómo hacer que un detector de anomalías de métricas sea ineficaz. Este detector de anomalías de métricas monitorea la utilización promedio de CPU de una instancia EC2 específica, y solo al agregar el parámetro “ExcludedTimeRanges” con el rango de tiempo deseado, sería suficiente para garantizar que el detector de anomalías no analice ni alerte sobre ningún dato relevante durante ese período. {{#tabs }} {{#tab name="Original Metric Anomaly Detector" }} 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 91b35ae8b..33094c2ac 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 @@ -147,7 +147,7 @@ az cosmosdb mongodb role definition create \ }' ``` ### `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. +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. ```bash az cosmosdb mongodb user definition create \ --account-name \ 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 e1cb93ea7..b10869614 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 @@ -35,7 +35,7 @@ az webapp start/stop/restart \ ``` ### `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, 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. +Con este permiso, puedes configurar o modificar la configuración de 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 \ @@ -113,7 +113,7 @@ az logic integration-account session create \ }' ``` ### "*/delete" -Con estos permisos puedes eliminar recursos relacionados con Azure Logic Apps +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 b3c5a647c..57bffa477 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 @@ -67,7 +67,7 @@ az mysql flexible-server reset-gtid \ ``` ### `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. +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 \ 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 608d7a07b..195a29809 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 @@ -3,7 +3,7 @@ {{#include ../../../banners/hacktricks-training.md}} ## PostgreSQL Database Post Exploitation -Para más información sobre PostgreSQL Database, consulta: +Para más información sobre PostgreSQL Database consulta: {{#ref}} ../az-services/az-postgresql.md 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 f2cc52c1d..f8ee798c5 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 @@ -53,7 +53,7 @@ az sql server audit-policy update \ ``` ### `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. +Con este permiso, puedes modificar las políticas de conexión de un servidor SQL de Azure. Esta capacidad puede ser explotada para habilitar o cambiar la configuración de conexión a nivel de servidor. ```bash az sql server connection-policy update \ --server \ 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 d4a553e4e..f6c669c17 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 @@ -58,13 +58,13 @@ az functionapp config appsettings list \ 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 URL SAS al zip en la configuración `WEBSITE_RUN_FROM_PACKAGE`. -- **`scm-releases`**`(WEBSITE_CONTENTAZUREFILECONNECTIONSTRING` y `WEBSITE_CONTENTSHARE`) +- **`scm-releases`**`(WEBSITE_CONTENTAZUREFILECONNECTIONSTRING` y `WEBSITE_CONTENTSHARE`) Con permisos para leer los contenedores dentro de la Cuenta de Almacenamiento que almacena los datos de la función, es posible encontrar el contenedor **`scm-releases`**. Allí es posible encontrar la última versión en **formato de archivo de sistema de archivos Squashfs** y, por lo tanto, es posible leer el código de la función: ```bash @@ -98,7 +98,7 @@ unsquashfs -l "/tmp/scm-latest-.zip" mkdir /tmp/fs unsquashfs -d /tmp/fs /tmp/scm-latest-.zip ``` -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. +También es posible encontrar las **claves master 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. > [!CAUTION] > Con suficientes permisos para conectarse al contenedor de blobs que **contiene el código en un archivo con extensión zip** (que en realidad es un **`squashfs`**), es posible ejecutar código arbitrario en la Función y escalar privilegios. @@ -122,7 +122,7 @@ Este permiso permite listar las claves de función, maestro y sistema, pero no l ```bash az functionapp keys list --resource-group --name ``` -Con la clave maestra también es posible obtener el código fuente en una URL como: +Con la clave maestra, también es posible obtener el código fuente en una URL como: ```bash # Get "script_href" from az rest --method GET \ @@ -297,7 +297,7 @@ 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 de FTP** suele estar en el formato \\\$\._ +_Tenga en cuenta que el **nombre de usuario FTP** suele estar en el formato \\\$\._ ### `Microsoft.Web/sites/hostruntime/vfs/read` @@ -321,7 +321,7 @@ curl "https://.azurewebsites.net/admin/host/systemkeys/_master" \ ``` ### `Microsoft.Web/sites/config/write`, (`Microsoft.Web/sites/functions/properties/read`) -Este permiso permite **habilitar funciones** que podrían estar deshabilitadas (o deshabilitarlas). +Este permiso permite **habilitar funciones** que pueden estar deshabilitadas (o deshabilitarlas). ```bash # Enable a disabled function az functionapp config appsettings set \ @@ -364,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 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).\ +Intenté cambiar el repositorio de Github desde donde se está realizando el despliegue ejecutando los siguientes comandos, pero incluso si 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 409b565b5..22a0aa6a9 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 @@ -29,4 +29,14 @@ az keyvault set-policy \ --certificate-permissions all \ --storage-permissions all ``` +### Modificar Restricciones de Red + +Puede que tengas suficientes permisos para acceder a datos sensibles (como el valor de un secreto) pero no puedes acceder a ellos porque el key vault está restringido a una red específica. Si tienes el permiso para modificar las restricciones de red, puedes agregar tu IP a la lista de IPs permitidas. +```bash +# Get the current network restrictions +az keyvault network-rule list --name + +# Add your IP to the list +az keyvault network-rule add --name --ip-address +``` {{#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 48ebc9753..2af363849 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 @@ -31,13 +31,13 @@ az mysql flexible-server update \ --name \ --admin-password ``` -Además, es necesario tener habilitado el acceso público si deseas acceder desde un endpoint no privado. Para habilitarlo: +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 ``` ### `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 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. +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 poder utilizarlo. ```bash az mysql flexible-server ad-admin create \ --resource-group \ 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 32a22528d..98d53a1e3 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 @@ -31,7 +31,7 @@ az postgres flexible-server update \ --name \ --admin-password ``` -Además, es necesario tener habilitado el acceso público si deseas acceder desde un endpoint no privado, para habilitarlo: +Además, es necesario tener el acceso público habilitado si deseas acceder desde un punto final no privado. Para habilitarlo: ```bash az postgres flexible-server update --resource-group --server-name --public-access Enabled ``` 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 a675ee045..22c3c83b0 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 trabajo 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 mensajería. ```python #You need to install the following libraries #pip install azure-servicebus @@ -129,7 +129,7 @@ print("----------------------------") ``` ### `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, lo que podría eludir 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, potencialmente eludiendo 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 c971132e9..b622c2b8c 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 @@ -37,7 +37,7 @@ az sql server update \ ``` ### `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. +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 completos de IP, 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 # Create Firewall Rule az sql server firewall-rule create \ @@ -56,7 +56,7 @@ 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 el acceso público habilitado. +NOTA: Es necesario tener habilitado el acceso público. ### `Microsoft.Sql/servers/ipv6FirewallRules/write` 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 d7c1d5f13..bf8a5f279 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 @@ -38,7 +38,7 @@ az storage account update --name --add networkRuleSet.ipRules value=< ### `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 eliminarlas. +El primer permiso permite **modificar políticas de inmutabilidad** en 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. @@ -58,19 +58,19 @@ az storage container immutability-policy update \ ### `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. +Esto debería permitir a un usuario que tenga este permiso tomar la propiedad de archivos dentro del sistema de archivos compartido. ### `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. +Esto debería permitir a un usuario que tenga este permiso modificar los permisos de los archivos dentro del sistema de archivos compartido. ### `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. +Esto debería permitir a un usuario que tenga este permiso realizar acciones dentro de un sistema de archivos como superusuario. ### `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 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. +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 de si un usuario ya existe, por lo que se puede 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 \ @@ -82,7 +82,7 @@ az storage account local-user create \ ``` ### `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. +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 filtraciones de datos, corrupción o modificación maliciosa del contenido de la cuenta de almacenamiento. ```bash az storage account local-user regenerate-password \ --account-name \ 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 dea522e11..9f93d49b6 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 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. +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**. -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. +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. -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, navegador o **alguna condición** específica. 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 específica, navegador o **alguna condición**. 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 @@ -714,10 +714,10 @@ Para más información sobre Aplicaciones consulta: ../az-basic-information/ {{#endref}} -Cuando se genera una aplicación, se otorgan 2 tipos de permisos: +Cuando se genera una App, se otorgan 2 tipos de permisos: - **Permisos** otorgados al **Service Principal** -- **Permisos** que la **aplicación** puede tener y usar en **nombre del usuario**. +- **Permisos** que la **app** puede tener y usar en **nombre del usuario**. {{#tabs }} {{#tab name="az cli" }} @@ -1120,7 +1120,7 @@ Verifique: 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. -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**: +Permite al administrador configurarlo para **bloquear** intentos cuando el riesgo es "Bajo y superior", "Medio y superior" o "Alto". Sin embargo, por defecto está completamente **deshabilitado**:
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 e6374a437..070d3fe21 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 @@ -10,7 +10,7 @@ No hay permisos asignados a este servicio, por lo tanto, no hay técnicas de esc ### 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 de 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 a 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 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. 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 6696a3338..383cc3945 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md +++ b/src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md @@ -110,7 +110,7 @@ Get-AzCosmosDBSqlUserDefinedFunction -ResourceGroupName "" -A #### 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 establecer la 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. ```python from azure.cosmos import CosmosClient, PartitionKey @@ -312,4 +312,6 @@ 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 f78e56bb8..f4eaf6ecd 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, 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. +**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. ### Niveles de Acceso @@ -25,7 +25,7 @@ - **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 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. +- **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 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 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 4142e4b25..b056bc9c6 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,9 +13,9 @@ - **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 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**. +- **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 soporta 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** @@ -46,7 +46,7 @@ Usando un desencadenador HTTP: Es posible configurar variables de entorno dentro de una aplicación, que podrían contener información sensible. Además, por defecto se crean las variables de entorno **`AzureWebJobsStorage`** y **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** (entre otras). Estas son especialmente interesantes porque **contienen la clave de la cuenta para controlar con PERMISOS COMPLETOS la cuenta de almacenamiento que contiene los datos de la aplicación**. Estas configuraciones también son necesarias para ejecutar el código desde la cuenta de almacenamiento. -Estas variables de entorno o parámetros de configuración también controlan cómo la Function ejecuta el código, por ejemplo, si **`WEBSITE_RUN_FROM_PACKAGE`** existe, indicará la URL donde se encuentra el código de la aplicación. +Estas variables de entorno o parámetros de configuración también controlan cómo la función ejecuta el código, por ejemplo, si **`WEBSITE_RUN_FROM_PACKAGE`** existe, indicará la URL donde se encuentra el código de la aplicación. ### **Sandbox de Funciones** @@ -58,7 +58,7 @@ En una **función de Windows** usando NodeJS, el código se encontraba en **`C:\ Al igual que [**VMs**](vms/index.html), las Functions pueden tener **Identidades Gestionadas** de 2 tipos: Asignadas por el sistema y Asignadas por el usuario. -La **asignada por el sistema** será una identidad gestionada que **solo la función** que la tiene asignada podrá usar, mientras que las identidades gestionadas **asignadas por el usuario** son identidades gestionadas que **cualquier otro servicio de Azure podrá usar**. +La **asignada por el sistema** será una identidad gestionada que **solo la función** que la tiene asignada podrá usar, mientras que las **identidades gestionadas asignadas por el usuario** son identidades gestionadas que **cualquier otro servicio de Azure podrá usar**. > [!NOTE] > Al igual que en [**VMs**](vms/index.html), las Functions pueden tener **1 identidad gestionada asignada por el sistema** y **varias asignadas por el usuario**, por lo que siempre es importante intentar encontrar todas ellas si comprometes la función porque podrías ser capaz de escalar privilegios a varias identidades gestionadas desde solo una Function. @@ -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 utilizan una **clave de función, host o maestra**. +- **FUNCTION**: El endpoint solo es accesible para usuarios que usan una **clave de función, host o maestra**. - **ADMIN**: El endpoint solo es accesible para usuarios con una **clave maestra**. **Tipo de claves:** @@ -96,7 +96,7 @@ Al crear un endpoint dentro de una función usando un **desencadenador HTTP**, e ### Autenticación Básica -Al igual que en 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 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: {{#ref}} az-app-services.md @@ -104,7 +104,7 @@ az-app-services.md ### 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** 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í: +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í:
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 d9990857e..7a42ca83d 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 @@ -11,7 +11,7 @@ Logic Apps proporciona un diseñador visual para crear flujos de trabajo con una ### Ejemplos - **Automatización de Pipelines de Datos**: Logic Apps puede automatizar **procesos de transferencia y transformación de datos** en combinación con Azure Data Factory. Esto es útil para crear pipelines de datos escalables y confiables que mueven y transforman datos entre varios almacenes de datos, como Azure SQL Database y Azure Blob Storage, ayudando en operaciones de análisis e inteligencia empresarial. -- **Integración con Azure Functions**: Logic Apps puede trabajar junto a Azure Functions para desarrollar **aplicaciones sofisticadas impulsadas por eventos que escalan según sea necesario** e integran sin problemas con otros servicios de Azure. Un caso de uso de ejemplo es utilizar un Logic App para activar una Azure Function en respuesta a ciertos eventos, como cambios en una cuenta de Azure Storage, permitiendo un procesamiento de datos dinámico. +- **Integración con Azure Functions**: Logic Apps puede trabajar junto a Azure Functions para desarrollar **aplicaciones sofisticadas impulsadas por eventos que escalan según sea necesario** e integran sin problemas con otros servicios de Azure. Un caso de uso de ejemplo es usar un Logic App para activar una Azure Function en respuesta a ciertos eventos, como cambios en una cuenta de Azure Storage, permitiendo un procesamiento de datos dinámico. ### Visualizar un LogicAPP @@ -142,7 +142,7 @@ Get-AzLogicAppTriggerHistory -ResourceGroupName "" -Name " -Integra ## Escalación de Privilegios -Igual que la escalación de privilegios de las aplicaciones lógicas: +Lo mismo que la escalación de privilegios de las aplicaciones lógicas: {{#ref}} ../az-privilege-escalation/az-logic-apps-privesc.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 ada0c1f7a..836c7f755 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}} @@ -149,4 +149,6 @@ az mysql flexible-server deploy run \ * 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 8b65788e1..a3ee45ca7 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-postgresql.md +++ b/src/pentesting-cloud/azure-security/az-services/az-postgresql.md @@ -3,7 +3,7 @@ {{#include ../../../banners/hacktricks-training.md}} ## Azure PostgreSQL -**Azure Database for PostgreSQL** es un servicio de **base de datos relacional completamente gestionado basado en la edición comunitaria de PostgreSQL**. Está diseñado para proporcionar escalabilidad, seguridad y flexibilidad para diversas necesidades de aplicaciones. Similar a Azure MySQL, PostgreSQL ofrece dos modelos de implementación: +**Azure Database for PostgreSQL** es un servicio de **base de datos relacional completamente gestionado basado en PostgreSQL** Community Edition. Está diseñado para proporcionar escalabilidad, seguridad y flexibilidad para diversas necesidades de aplicaciones. Similar a Azure MySQL, PostgreSQL ofrece dos modelos de implementación: * **Servidor Único** (en la ruta de retiro): - Optimizado para implementaciones de PostgreSQL sencillas y rentables. @@ -21,7 +21,7 @@ * **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 los usuarios y el acceso administrativo a través de Azure Active Directory. +* **Acceso Basado en Roles**: Controla los permisos de usuario y el acceso administrativo a través de Azure Active Directory. * **Seguridad y Redes**: puede gestionar 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 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 9f9f2f227..3bcbff284 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 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. +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 desacoplando**. 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 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 0078a7e25..3ce91aef4 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 @@ -16,7 +16,7 @@ Azure Service Bus es un **servicio de mensajería** basado en la nube diseñado - Múltiples suscripciones independientes reciben copias de los mensajes. - Las suscripciones pueden tener reglas/filtros para controlar la entrega o agregar metadatos. - Soporta comunicación de muchos a muchos. -3. **Espacios de Nombres:** Un contenedor para todos los componentes de mensajería, colas y temas, es como tu propia porción de un poderoso clúster de Azure, proporcionando capacidad dedicada y opcionalmente abarcando tres zonas de disponibilidad. +3. **Espacios de Nombres:** Un contenedor para todos los componentes de mensajería, colas y temas, es como tu propia parte de un poderoso clúster de Azure, proporcionando capacidad dedicada y opcionalmente abarcando tres zonas de disponibilidad. ### Características Avanzadas diff --git a/src/pentesting-cloud/azure-security/az-services/vms/README.md b/src/pentesting-cloud/azure-security/az-services/vms/README.md index 523bc19ab..63d2c362b 100644 --- a/src/pentesting-cloud/azure-security/az-services/vms/README.md +++ b/src/pentesting-cloud/azure-security/az-services/vms/README.md @@ -19,7 +19,7 @@ Las Máquinas Virtuales (VMs) de Azure son servidores **basados en la nube flexi - **Zonas de Disponibilidad**: Las zonas de disponibilidad son grupos distintos de centros de datos dentro de una región específica de Azure que están físicamente separados para minimizar el riesgo de que múltiples zonas se vean afectadas por cortes locales o desastres. - **Tipo de Seguridad**: - **Seguridad Estándar**: Este es el tipo de seguridad predeterminado que no requiere ninguna configuración específica. -- **Lanzamiento Confiable**: Este tipo de seguridad mejora la protección contra kits de arranque y malware a nivel de kernel utilizando Secure Boot y Módulo de Plataforma de Confianza Virtual (vTPM). +- **Lanzamiento Confiable**: Este tipo de seguridad mejora la protección contra kits de arranque y malware a nivel de kernel utilizando Secure Boot y Módulo de Plataforma Confiable Virtual (vTPM). - **VMs Confidenciales**: Además de un lanzamiento confiable, ofrece aislamiento basado en hardware entre la VM, el hipervisor y la gestión del host, mejora la encriptación del disco y [**más**](https://learn.microsoft.com/en-us/azure/confidential-computing/confidential-vm-overview)**.** - **Autenticación**: Por defecto, se genera una nueva **clave SSH**, aunque es posible usar una clave pública o usar una clave anterior y el nombre de usuario por defecto es **azureuser**. También es posible configurar el uso de una **contraseña.** - **Encriptación de disco de VM:** El disco está encriptado en reposo por defecto utilizando una clave gestionada por la plataforma. @@ -28,18 +28,18 @@ Las Máquinas Virtuales (VMs) de Azure son servidores **basados en la nube flexi - **Ninguno**: Básicamente abre todos los puertos - **Básico**: Permite abrir fácilmente los puertos de entrada HTTP (80), HTTPS (443), SSH (22), RDP (3389) - **Avanzado**: Selecciona un grupo de seguridad -- **Copia de seguridad**: Es posible habilitar copia de seguridad **Estándar** (una al día) y **Mejorada** (múltiples al día) +- **Copia de seguridad**: Es posible habilitar la copia de seguridad **Estándar** (una al día) y **Mejorada** (múltiples al día) - **Opciones de orquestación de parches**: Esto permite aplicar automáticamente parches en las VMs de acuerdo con la política seleccionada como se describe en los [**docs**](https://learn.microsoft.com/en-us/azure/virtual-machines/automatic-vm-guest-patching). - **Alertas**: Es posible recibir automáticamente alertas por correo electrónico o aplicación móvil cuando algo sucede en la VM. Reglas predeterminadas: -- El porcentaje de CPU es mayor al 80% -- Los bytes de memoria disponible son menos de 1GB -- El porcentaje de IOPS consumidos de discos de datos es mayor al 95% -- El porcentaje de IOPS consumidos del SO es mayor al 95% -- La red total es mayor a 500GB -- La red de salida total es mayor a 200GB -- VmAvailabilityMetric es menor a 1 -- **Monitor de salud**: Por defecto verifica el protocolo HTTP en el puerto 80 -- **Bloqueos**: Permite bloquear una VM para que solo pueda ser leída (**Bloqueo de Solo Lectura**) o que pueda ser leída y actualizada pero no eliminada (**Bloqueo No Eliminable**). +- Porcentaje de CPU es mayor que 80% +- Bytes de Memoria Disponible es menor que 1GB +- Porcentaje de IOPS Consumidos de Discos de Datos es mayor que 95% +- Porcentaje de IOPS Consumidos del SO es mayor que 95% +- Red en Total es mayor que 500GB +- Red Saliente Total es mayor que 200GB +- VmAvailabilityMetric es menor que 1 +- **Monitor de Salud**: Por defecto verifica el protocolo HTTP en el puerto 80 +- **Bloqueos**: Permite bloquear una VM para que solo pueda ser leída (**Bloqueo de Solo Lectura**) o que pueda ser leída y actualizada pero no eliminada (**Bloqueo de No Se Puede Eliminar**). - La mayoría de los recursos relacionados con VM **también soportan bloqueos** como discos, instantáneas... - Los bloqueos también se pueden aplicar a **niveles de grupo de recursos y suscripción** @@ -142,17 +142,17 @@ Get-AzRestorePointCollection -Name -ResourceGroupName -ResourceGroupName - ## Azure Hub, Spoke y Peering de VNet -**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. +**VNet Peering** 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 a través de 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 típicamente 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**, permitiéndoles 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. > [!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. @@ -364,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 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. +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 una **puerta de enlace VPN que cifra el tráfico** entre las dos redes. **Ejemplo:** @@ -395,7 +395,7 @@ Get-AzVirtualNetworkGatewayConnection -ResourceGroupName ## Azure ExpressRoute -Azure ExpressRoute es un servicio que proporciona una **conexión privada, dedicada y de alta velocidad entre su infraestructura local y los centros de datos de Azure**. Esta conexión se realiza a través de un proveedor de conectividad, evitando el internet público y ofreciendo más confiabilidad, velocidades más rápidas, menores latencias y mayor seguridad que las conexiones típicas a internet. +Azure ExpressRoute es un servicio que proporciona una **conexión privada, dedicada y de alta velocidad entre su infraestructura local y los centros de datos de Azure**. Esta conexión se realiza a través de un proveedor de conectividad, evitando el internet público y ofreciendo más confiabilidad, velocidades más rápidas, menores latencias y mayor seguridad que las conexiones de internet típicas. **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 8368622ad..10541e5a4 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 @@ -14,7 +14,7 @@ Al especificar el contexto de seguridad de un Pod, puedes usar varios atributos. - 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

| +|

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 del 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 **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. | @@ -33,7 +33,7 @@ Al especificar el contexto de seguridad de un Pod, puedes usar varios atributos. Este contexto se establece dentro de las **definiciones de contenedores**. Desde un punto de vista de seguridad defensiva, deberías considerar: - **allowPrivilegeEscalation** como **False** -- No agregar **capacidades** sensibles (y eliminar las que no necesites) +- No agregar **capabilities** sensibles (y eliminar las que no necesites) - **privileged** como **False** - Si es posible, establecer **readOnlyFilesystem** como **True** - Establecer **runAsNonRoot** como **True** y establecer un **runAsUser** @@ -42,7 +42,7 @@ Este contexto se establece dentro de las **definiciones de contenedores**. Desde Ten en cuenta que los atributos establecidos en **tanto SecurityContext como PodSecurityContext**, el valor especificado en **SecurityContext** tiene **precedencia**. -|

allowPrivilegeEscalation
booleano

| **AllowPrivilegeEscalation** controla si un proceso puede **obtener más privilegios** que su proceso padre. Este booleano controla directamente si la bandera no_new_privs se establecerá en el proceso del contenedor. AllowPrivilegeEscalation es verdadero siempre que el contenedor se ejecute como **Privileged** o tenga **CAP_SYS_ADMIN** | +|

allowPrivilegeEscalation
booleano

| **AllowPrivilegeEscalation** controla si un proceso puede **obtener más privilegios** que su proceso padre. Este booleano controla directamente si se establecerá la bandera no_new_privs en el proceso del contenedor. AllowPrivilegeEscalation es verdadero siempre que el contenedor se ejecute como **Privileged** o tenga **CAP_SYS_ADMIN** | | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |

capabilities
Capabilities
Más información sobre Capabilities

| Las **capacidades para agregar/eliminar al ejecutar contenedores**. Por defecto, se utiliza el conjunto predeterminado de capacidades. | |

privileged
booleano

| Ejecutar el contenedor en modo privilegiado. Los procesos en contenedores privilegiados son esencialmente **equivalentes a root en el host**. Por defecto, es falso. |