Permisos sobre políticas
Lab: IAM vulnerable
Última actualización
Lab: IAM vulnerable
Última actualización
Es crucial restringir los permisos en las políticas de AWS tanto como limitar los permisos de los usuarios en sus cuentas y en las de otros usuarios. Las políticas son las que conceden los permisos a los usuarios, ya sea como parte de un grupo o al asumir roles. Los permisos se asignan a través de las políticas aplicadas a esos grupos y roles. Por lo tanto, los administradores deben ser muy cuidadosos al otorgar permisos a los usuarios en relación a las políticas. Específicamente, los siguientes permisos de política pueden conducir a una escalada de privilegios:
iam:CreatePolicyVersion
iam:SetDefaultPolicyVersion
iam:AttachUserPolicy
iam:AttachGroupPolicy
iam:AttachRolePolicy
iam:PutUserPolicy
iam:PutGroupPolicy
iam:PutRolePolicy
El permiso para crear una nueva versión de la política le permite a un usuario reemplazar completamente los permisos en una política. Si esta política se aplica a ellos, esto abre la puerta para que el usuario simplemente se asigne privilegios administrativos completos de AWS. Adjuntar una política o crear una nueva política para un usuario, grupo o función puede aumentar de manera similar los permisos aplicados al usuario.
Si un atacante tiene el permiso iam:CreatePolicyVersion en AWS, puede crear una nueva versión de una política ya existente. Esto significa que podrían crear una política que permita más permisos de los que tienen actualmente, lo que podría comprometer la seguridad del sistema.
Pasos:
Listar políticas existentes
Crear y establecer por defecto una política con mayores permisos
Usuario del laboratorio: privesc1-CreateNewPolicyVersion-user
Encada política existen versiones y donde cada versión puede cambia de forma drástica, se tiene que checar cual es la política por defecto:
Después crear unas llaves de acceso para utilizar el usuario con AWS CLI. Las llaves de acceso se crean por medio de un usuario administrador, y se simula que se obtuvieron mediante algúna brecha dentro de una auditoría.
Checar que la configuración esté correcta con:
En este tipo de explotación, se tiene que crear un archivo JSON con las políticas que se quieren agregar. Por ejemplo la política de permitir todo:
Despues, subir el archivo con el el uso de la política IAM:CreatePolicyVersion
_Al modificar una política, AWS crea una nueva versión con todos los cambios, estos cambios se pueden hacer rollback. L_os usuarios con el permiso iam:SetDefaultPolicyVersion pueden establecer qué versión de la política es la versión predeterminada (activa). Entonces si en el pasadó existió una política con demaciados permisiso, este comando puede regresar a un punto en el tiempo para obtener mayores privilegios.
Pasos de explotación:
Identificar políticas y versiones
Identificar la versión con mas permisos
Usar set-default-policy-version a la versión con mayores permisos
Usuario del laboratorio: privesc2-SetExistingDefaultPolicyVersion-
user
Posterior mente generar llaves e acceso desde cuenta administrador para interactuar con el usuario en AWS CLI y configurar un perfil.
Primero se tiene que listar las versiones de una política y luego listar cuales permisos tienen cada versionado. Para esto se tiene que identificar cual política es la afectada y luego listar las versiones con el siguiente comando:
Este método de ataque, requiere que la política tenga al menos 2 versiones
Como se observa en la imagen anterior, la versión 1 es la que está por defecto y que existe otra versión la numero 2, se procede a compara cual versión tiene mas privilegios
Se ve que la política que no está por defecto, tiene mas permisos que la política actual
Finalmente, se procede a realizar el cambio de la política por la versión con más permisos
Un atacante con el permiso iam:AttachUserPolicy puede aumentar los privilegios existentes adjuntando una política a un usuario al que tiene acceso, agregando los permisos de esa política al atacante.
Este Permiso fue explotado contra la empresa Expel en abril del 2022 por medio de credenciales encontradas en un repositorio de código público.
Usuario del laboratorio: privesc7-AttachUserPolicy-user con el siguiente rol:
Posterior mente generar llaves e acceso desde cuenta administrador para interactuar con el usuario en AWS CLI y configurar un perfil.
Para esta explotación, se necesita conocer si existe una política que con mayores permisos, se tiene que hace un listado de políticas por algún medio o utilizar las políticas por defecto de AWS, en este caso se usara la política AdminsitratorAccess que viene por defecto en AWS y se sabe que existe. Después, solo se utiliza el comando attach-user-policy indicando a cual usuario con cual ARN de política se va a agregar.
Como se ve en la salida de los comandos anteriores, se hizo correctamente la adición de una política de administradores, escalando privilegios.
Equivalente al anterior método, este permiso permite aumentar los privilegios de un grupo adjuntado políticas al grupo, no afecta a las políticas propias del usuario
Este método de ataque, añade políticas a un grupo si varios usuarios se encuentran en el grupo, todos ellos tendrán elevación de privilegios.
Usuario del laboratorio: privesc8-AttachGroupPolicy-user con el rol:
Posterior mente generar llaves e acceso desde cuenta administrador para interactuar con el usuario en AWS CLI y configurar un perfil.
Dado que los miembros de un grupo heredan los permisos de las políticas asociadas al grupo, solo se tiene que saber el grupo al cual pertenece el usuario y la política que se va a agregar al grupo:
Si el usuario del cual se conocen las credenciales y se tiene el rol IAM:AttachGroupPolicy no pertenece a ningún grupo, no se podrá realizar una escalación de privilegios, pero si afectar los permisos de los demás grupos.
Se podría buscar la forma de modificar un grupo y después añadir el usuario al grupo afectado para hacer la escalación de privilegios, usando múltiples técnicas aquí descritas.
En este caso el nombre del grupo se sacó por medio web, se puede realiza el comando aws iam list-groups-for-user --user-name <User>
pero requiere permisos de IAM de list.
Finalmente se agrega la política con permisos avanzados al grupo seleccionado
Un atacante con el permiso iam:AttachRolePolicy puede aumentar los privilegios adjuntando una política a una función a la que tiene acceso, agregando los permisos de esa política al atacante.
Usuario del laboratorio: privesc9-AttachRolePolicy-user con el rol:
Posterior mente generar llaves e acceso desde cuenta administrador para interactuar con el usuario en AWS CLI y configurar un perfil.
Parecida a la explotación de Attach User Policy, se tiene que saber el nombre del rol al cual se le va añadir una política, esto se hace con el siguiente comando:
Se recomienda en la fase de enumeración, conocer los roles existentes, los roles asociados al usuario a elevar privilegios, y conocer las políticas que podemos añadir al rol.
Despues a veces se tiene que asumir el rol afectado el cual dará nuevos datos de acceso:
Normalmente asumir un rol, genera un token de sesión, se tiene que agregar dentro del archivo de credentials
Acceso InicialLuego configurar las llaves con AWS configure y se tendrá acceso administrador.
Un atacante con el permiso iam:PutUserPolicy puede aumentar los privilegios creando o actualizando una política en línea para un usuario al que tiene acceso, agregando los permisos de esa política al atacante.
Usuario del laboratorio:privesc10-PutUserPolicy-user con el rol:
Posterior mente generar llaves e acceso desde cuenta administrador para interactuar con el usuario en AWS CLI y configurar un perfil.
Este ataque consiste en agregar una serie de políticas a un usuario dado un archivo.
Después, se procede a utilizar el comando siguiente para asignar la política al usuario
Un atacante con el permiso iam:PutGroupPolicy puede aumentar los privilegios creando o actualizando una política en línea para un grupo del que forma parte, agregando los permisos de esa política al atacante.
Todo
Usuario del laboratorio: privesc11-PutGroupPolicy-user con el rol:
Posterior mente generar llaves e acceso desde cuenta administrador para interactuar con el usuario en AWS CLI y configurar un perfil.
Como en el caso anterior, se tiene que generar una política para agregar a un grupo de usuarios
Finalmente, se procede con asignar la política a un grupo, requiere de conocer el grupo a cual asignar la política:
Un atacante con el permiso iam:PutRolePolicy puede aumentar los privilegios creando o actualizando una política en línea para un rol al que tiene acceso, agregando los permisos de esa política al atacante.
Todo
Usuario del laboratorio: privesc12-PutRolePolicy-user con el rol:
Posterior mente generar llaves e acceso desde cuenta administrador para interactuar con el usuario en AWS CLI y configurar un perfil.
Como en el caso anterior, se tiene que generar una política para agregar a un rol
Finalmente, se tiene que conocer el nombre del rol al cual se le va asignar la política:
Si revisamos ahora las políticas insertadas a nuestro rol, lograremos apreciar que hemos adjuntado exitosamente la política de administrador a nuestro usuario inicial por medio del rol.