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 749711039..44a11032b 100644 --- a/src/pentesting-cloud/aws-security/aws-basic-information/README.md +++ b/src/pentesting-cloud/aws-security/aws-basic-information/README.md @@ -42,7 +42,7 @@ aws organizations create-organizational-unit --parent-id r-lalala --name TestOU Una **service control policy (SCP)** es una política que especifica los servicios y acciones que los usuarios y roles pueden usar en las cuentas que la SCP afecta. Las SCP son **similares a las políticas de permisos de IAM** excepto que **no otorgan ningún permiso**. En cambio, las SCP especifican los **permisos máximos** para una organización, unidad organizativa (OU) o cuenta. Cuando adjuntas una SCP a la raíz de tu organización o a una OU, la **SCP limita los permisos para las entidades en las cuentas miembros**. -Esta es la ÚNICA manera en que **incluso el usuario raíz puede ser detenido** de hacer algo. Por ejemplo, podría usarse para evitar que los usuarios desactiven CloudTrail o eliminen copias de seguridad.\ +Esta es la ÚNICA forma en que **incluso el usuario raíz puede ser detenido** de hacer algo. Por ejemplo, podría usarse para evitar que los usuarios desactiven CloudTrail o eliminen copias de seguridad.\ La única forma de eludir esto es comprometer también la **cuenta maestra** que configura las SCP (la cuenta maestra no puede ser bloqueada). > [!WARNING] @@ -64,7 +64,7 @@ Encuentra **ejemplos JSON** en [https://docs.aws.amazon.com/organizations/latest Una **resource control policy (RCP)** es una política que define los **permisos máximos para los recursos dentro de tu organización AWS**. Las RCP son similares a las políticas de IAM en sintaxis pero **no otorgan permisos**—solo limitan los permisos que pueden aplicarse a los recursos por otras políticas. Cuando adjuntas una RCP a la raíz de tu organización, a una unidad organizativa (OU) o a una cuenta, la RCP limita los permisos de recursos en todos los recursos dentro del alcance afectado. -Esta es la ÚNICA manera de asegurar que **los recursos no pueden exceder los niveles de acceso predefinidos**—incluso si una política basada en identidad o en recursos es demasiado permisiva. La única forma de eludir estos límites es también modificar la RCP configurada por la cuenta de gestión de tu organización. +Esta es la ÚNICA forma de asegurar que **los recursos no pueden exceder los niveles de acceso predefinidos**—incluso si una política basada en identidad o en recursos es demasiado permisiva. La única forma de eludir estos límites es también modificar la RCP configurada por la cuenta de gestión de tu organización. > [!WARNING] > Las RCP solo restringen los permisos que los recursos pueden tener. No controlan directamente lo que los principales pueden hacer. Por ejemplo, si una RCP niega el acceso externo a un bucket S3, asegura que los permisos del bucket nunca permitan acciones más allá del límite establecido—incluso si una política basada en recursos está mal configurada. @@ -80,7 +80,7 @@ Encuentra ejemplos en [AWS Organizations Resource Control Policies documentation ### ARN -**Amazon Resource Name** es el **nombre único** que cada recurso dentro de AWS tiene, se compone así: +**Amazon Resource Name** es el **nombre único** que tiene cada recurso dentro de AWS, se compone así: ``` arn:partition:service:region:account-id:resource-type/resource-id arn:aws:elasticbeanstalk:us-west-1:123456789098:environment/App/Env @@ -104,7 +104,7 @@ IAM se puede definir por su capacidad para gestionar, controlar y gobernar los m ### [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 única identidad de inicio de sesión que tiene **acceso completo a todos** los servicios y recursos de AWS en la cuenta. Este es el _**usuario raíz**_ de la cuenta de AWS y se accede iniciando sesión con la **dirección de correo electrónico y la contraseña que usaste para crear la cuenta**. +Cuando creas por primera vez una cuenta de Amazon Web Services (AWS), comienzas con una única identidad de inicio de sesión que tiene **acceso completo a todos** los servicios y recursos de AWS en la cuenta. Este es el _**usuario raíz**_ de la cuenta de AWS y se accede iniciando sesión con la **dirección de correo electrónico y la contraseña que utilizaste para crear la cuenta**. Ten en cuenta que un nuevo **usuario administrador** tendrá **menos permisos que el usuario raíz**. @@ -142,11 +142,11 @@ Ten en cuenta que las credenciales de **`AssumeRole` no contienen esta informaci ```bash aws sts get-session-token --serial-number --token-code ``` -Como [**se indica aquí**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html), hay muchos casos diferentes donde **MFA no puede ser utilizado**. +Como [**se indica aquí**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html), hay muchos casos diferentes en los que **MFA no se puede usar**. ### [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** al mismo tiempo, 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](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**. 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. @@ -155,13 +155,13 @@ 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 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 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). ### [Roles de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) -Un **rol** de IAM es muy **similar** a un **usuario**, en el sentido de que es una **identidad con políticas de permisos que determinan qué** puede y no puede hacer en AWS. Sin embargo, un rol **no tiene ninguna credencial** (contraseña o claves de acceso) asociada. En lugar de estar asociado de manera única a una persona, un rol está destinado a ser **asumido por cualquier persona que lo necesite (y tenga suficientes permisos)**. Un **usuario de IAM puede asumir un rol para temporalmente** adoptar diferentes permisos para una tarea específica. Un rol puede ser **asignado a un** [**usuario federado**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) que inicia sesión utilizando un proveedor de identidad externo en lugar de IAM. +Un **rol** de IAM es muy **similar** a un **usuario**, en el sentido de que es una **identidad con políticas de permisos que determinan qué** puede y no puede hacer en AWS. Sin embargo, un rol **no tiene ninguna credencial** (contraseña o claves de acceso) asociada. En lugar de estar asociado de manera única a una persona, un rol está destinado a ser **asumido por cualquier persona que lo necesite (y tenga suficientes permisos)**. Un **usuario de IAM puede asumir un rol para temporalmente** adquirir diferentes permisos para una tarea específica. Un rol puede ser **asignado a un** [**usuario federado**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) que inicia sesión utilizando un proveedor de identidad externo en lugar de IAM. -Un rol de IAM consiste en **dos tipos de políticas**: una **política de confianza**, que no puede estar vacía, que define **quién puede asumir** el rol, y una **política de permisos**, que no puede estar vacía, que define **a qué puede acceder**. +Un rol de IAM consta de **dos tipos de políticas**: una **política de confianza**, que no puede estar vacía, que define **quién puede asumir** el rol, y una **política de permisos**, que no puede estar vacía, que define **a qué puede acceder**. #### Servicio de Token de Seguridad de AWS (STS) @@ -169,7 +169,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 IAM estándar. Esto **previene** que **realices accidentalmente tareas que no están permitidas** por las credenciales más restringidas. Un beneficio de las credenciales temporales es que expiran automáticamente después de un período de tiempo establecido. Tienes control sobre la duración durante la cual las credenciales son válidas. +Las **credenciales temporales se utilizan principalmente con roles de IAM**, pero también hay otros usos. Puedes solicitar credenciales temporales que tengan un conjunto de permisos más restringido que tu usuario de IAM estándar. Esto **previene** que **realices accidentalmente tareas que no están permitidas** por las credenciales más restringidas. Un beneficio de las credenciales temporales es que expiran automáticamente después de un período de tiempo establecido. Tienes control sobre la duración durante la cual las credenciales son válidas. ### Políticas @@ -181,7 +181,7 @@ Se utilizan para asignar permisos. Hay 2 tipos: - 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** es **denegado**, el acceso se otorgará si se ha especificado un rol explícito.\ -Si **existe un "Deny" único, anulará el "Allow"**, excepto para solicitudes que utilizan las credenciales de seguridad raíz de la cuenta de AWS (que están permitidas por defecto). +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 { "Version": "2012-10-17", //Version of the policy @@ -209,8 +209,8 @@ Los [campos específicos que se pueden usar para condiciones por servicio están #### Políticas en línea -Este tipo de políticas son **asignadas directamente** a un usuario, grupo o rol. 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. +Este tipo de políticas son **asignadas directamente** a un usuario, grupo o rol. Entonces, no aparecen en la lista de Políticas ya que 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 es porque son parte de la entidad principal. #### Políticas de Bucket de Recursos diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-cloudformation-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-cloudformation-persistence.md index ca8801345..02caa8b6b 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-cloudformation-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-cloudformation-persistence.md @@ -1,4 +1,4 @@ -# AWS - Cloudformation Persistence +# AWS - Persistencia de Cloudformation {{#include ../../../banners/hacktricks-training.md}} @@ -10,9 +10,9 @@ Para más información, accede a: ../aws-services/aws-cloudformation-and-codestar-enum.md {{#endref}} -### CDK Bootstrap Stack +### Stack de Bootstrap de CDK -El AWS CDK despliega un stack CFN llamado `CDKToolkit`. Este stack soporta un parámetro `TrustedAccounts` que permite a cuentas externas desplegar proyectos CDK en la cuenta de la víctima. Un atacante puede abusar de esto para otorgarse acceso indefinido a la cuenta de la víctima, ya sea utilizando la AWS cli para redeplegar el stack con parámetros, o la AWS CDK cli. +El AWS CDK despliega un stack de CFN llamado `CDKToolkit`. Este stack soporta un parámetro `TrustedAccounts` que permite a cuentas externas desplegar proyectos de CDK en la cuenta de la víctima. Un atacante puede abusar de esto para otorgarse acceso indefinido a la cuenta de la víctima, ya sea utilizando la CLI de AWS para redeplegar el stack con parámetros, o la CLI de AWS CDK. ```bash # CDK cdk bootstrap --trust 1234567890 diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/README.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/README.md index fbacc2382..bff4dfaf8 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/README.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/README.md @@ -14,11 +14,11 @@ Para más información consulta: Lambda utiliza variables de entorno para inyectar credenciales en tiempo de ejecución. Si puedes acceder a ellas (leyendo `/proc/self/environ` o usando la función vulnerable), puedes usarlas tú mismo. Se encuentran en los nombres de variable predeterminados `AWS_SESSION_TOKEN`, `AWS_SECRET_ACCESS_KEY` y `AWS_ACCESS_KEY_ID`. -Por defecto, estos tendrán acceso para escribir en un grupo de logs de CloudWatch (el nombre del cual se almacena en `AWS_LAMBDA_LOG_GROUP_NAME`), así como para crear grupos de logs arbitrarios; sin embargo, las funciones de Lambda frecuentemente tienen más permisos asignados según su uso previsto. +Por defecto, estos tendrán acceso para escribir en un grupo de logs de CloudWatch (el nombre del cual se almacena en `AWS_LAMBDA_LOG_GROUP_NAME`), así como para crear grupos de logs arbitrarios, sin embargo, las funciones de Lambda frecuentemente tienen más permisos asignados según su uso previsto. ### Robar Solicitudes URL de Otros Lambda -Si un atacante logra obtener RCE dentro de un Lambda, podrá robar las solicitudes HTTP de otros usuarios al lambda. Si las solicitudes contienen información sensible (cookies, credenciales...), podrá robarlas. +Si un atacante logra obtener RCE dentro de un Lambda, podrá robar las solicitudes HTTP de otros usuarios al lambda. Si las solicitudes contienen información sensible (cookies, credenciales...), podrá robárselas. {{#ref}} aws-warm-lambda-persistence.md diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md index 1e0cb568a..34f3a4ab3 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md @@ -4,7 +4,7 @@ ## cloudformation -Para más información sobre cloudformation consulta: +Para más información sobre cloudformation, consulta: {{#ref}} ../../aws-services/aws-cloudformation-and-codestar-enum.md @@ -28,7 +28,7 @@ iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md ### `iam:PassRole`, (`cloudformation:UpdateStack` | `cloudformation:SetStackPolicy`) -En este caso puedes **abusar de un stack de cloudformation existente** para actualizarlo y escalar privilegios como en el escenario anterior: +En este caso puedes **abusar de una pila de cloudformation existente** para actualizarla y escalar privilegios como en el escenario anterior: ```bash aws cloudformation update-stack \ --stack-name privesc \ @@ -51,7 +51,7 @@ El permiso `cloudformation:SetStackPolicy` se puede utilizar para **darte a ti m ### `iam:PassRole`,((`cloudformation:CreateChangeSet`, `cloudformation:ExecuteChangeSet`) | `cloudformation:SetStackPolicy`) -Un atacante con permisos para **pasar un rol y crear & ejecutar un ChangeSet** puede **crear/actualizar una nueva pila de cloudformation y abusar de los roles de servicio de cloudformation** al igual que con CreateStack o UpdateStack. +Un atacante con permisos para **pasar un rol y crear y ejecutar un ChangeSet** puede **crear/actualizar una nueva pila de cloudformation y abusar de los roles de servicio de cloudformation** al igual que con CreateStack o UpdateStack. La siguiente explotación es una **variación de la**[ **CreateStack one**](#iam-passrole-cloudformation-createstack) utilizando los **permisos de ChangeSet** para crear una pila. ```bash @@ -79,13 +79,13 @@ aws cloudformation describe-stacks \ --stack-name privesc \ --region eu-west-1 ``` -El permiso `cloudformation:SetStackPolicy` se puede utilizar para **otorgarte permisos de `ChangeSet`** sobre una pila y realizar el ataque. +El permiso `cloudformation:SetStackPolicy` se puede usar para **otorgarte permisos de `ChangeSet`** sobre una pila y realizar el ataque. **Impacto Potencial:** Privesc a roles de servicio de cloudformation. ### (`cloudformation:CreateChangeSet`, `cloudformation:ExecuteChangeSet`) | `cloudformation:SetStackPolicy`) -Esto es como el método anterior sin pasar **roles de IAM**, así que solo puedes **abusar de los que ya están adjuntos**, solo modifica el parámetro: +Esto es como el método anterior sin pasar **roles de IAM**, así que solo puedes **abusar de los ya adjuntos**, solo modifica el parámetro: ``` --change-set-type UPDATE ``` @@ -117,7 +117,7 @@ Si tienes `cloudformation:DescribeStacks`, los roles están definidos en una pil Si estás en una máquina que ha sido utilizada para construir y desplegar proyectos de CDK, puedes obtenerlos de `cdk.out/manafest.json` en el directorio raíz del proyecto. -También puedes hacer una buena suposición sobre cuáles son. `qualifier` es una cadena añadida a los roles que permite que múltiples instancias de la inicialización del CDK se desplieguen a la vez, sin embargo, el valor predeterminado está codificado como `hnb659fds`. +También puedes hacer una buena suposición sobre cuáles son. `qualifier` es una cadena añadida a los roles que permite que múltiples instancias de la inicialización de CDK se desplieguen a la vez, sin embargo, el valor predeterminado está codificado como `hnb659fds`. ``` # Defaults cdk-hnb659fds-cfn-exec-role-- @@ -128,7 +128,7 @@ cdk-hnb659fds-lookup-role-- ``` ### Agregar código malicioso al código fuente del proyecto -Si puedes escribir en el código fuente del proyecto, pero no puedes desplegarlo tú mismo (por ejemplo, el desarrollador despliega el código a través de CI/CD, no desde la máquina local), aún puedes comprometer el entorno agregando recursos maliciosos a la pila. Lo siguiente agrega un rol de IAM que puede ser asumido por una cuenta atacante a un proyecto de python CDK. +Si puedes escribir en el código fuente del proyecto, pero no puedes desplegarlo tú mismo (por ejemplo, el desarrollador despliega el código a través de CI/CD, no desde la máquina local), aún puedes comprometer el entorno agregando recursos maliciosos a la pila. Lo siguiente agrega un rol IAM que puede ser asumido por una cuenta atacante a un proyecto de python CDK. ```python class CdkTestStack(Stack): def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None: diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cloudformation-and-codestar-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-cloudformation-and-codestar-enum.md index 8f94a5f4b..6dbe8386e 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cloudformation-and-codestar-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cloudformation-and-codestar-enum.md @@ -49,7 +49,7 @@ Verifica si hay **secretos** o información sensible en la **plantilla, parámet ## Codestar -AWS CodeStar es un servicio para crear, gestionar y trabajar con proyectos de desarrollo de software en AWS. Puedes desarrollar, construir y desplegar aplicaciones rápidamente en AWS con un proyecto de AWS CodeStar. Un proyecto de AWS CodeStar crea e **integra servicios de AWS** para tu cadena de herramientas de desarrollo de proyectos. Dependiendo de tu elección de plantilla de proyecto de AWS CodeStar, esa cadena de herramientas puede incluir control de versiones, construcción, despliegue, servidores virtuales o recursos sin servidor, y más. AWS CodeStar también **gestiona los permisos requeridos para los usuarios del proyecto** (llamados miembros del equipo). +AWS CodeStar es un servicio para crear, gestionar y trabajar con proyectos de desarrollo de software en AWS. Puedes desarrollar, construir y desplegar aplicaciones rápidamente en AWS con un proyecto de AWS CodeStar. Un proyecto de AWS CodeStar crea e **integra servicios de AWS** para tu cadena de herramientas de desarrollo de proyectos. Dependiendo de tu elección de plantilla de proyecto de AWS CodeStar, esa cadena de herramientas podría incluir control de versiones, construcción, despliegue, servidores virtuales o recursos sin servidor, y más. AWS CodeStar también **gestiona los permisos requeridos para los usuarios del proyecto** (llamados miembros del equipo). ### Enumeration ```bash