AWS - STS Enum

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

Altri modi per supportare HackTricks:

STS

AWS Security Token Service (STS) è principalmente progettato per rilasciare credenziali temporanee e a limitati privilegi. Queste credenziali possono essere richieste per gli utenti di AWS Identity and Access Management (IAM) o per utenti autenticati (utenti federati).

Dato che lo scopo di STS è rilasciare credenziali per l'impersonificazione dell'identità, il servizio è estremamente prezioso per escalare privilegi e mantenere persistenza, anche se potrebbe non avere una vasta gamma di opzioni.

Impersonificazione del Ruolo Assunto

L'azione AssumeRole fornita da AWS STS è cruciale poiché consente a un principale di acquisire credenziali per un altro principale, impersonandolo essenzialmente. Alla chiamata, risponde con un ID chiave di accesso, una chiave segreta e un token di sessione corrispondente all'ARN specificato.

Per i Penetration Tester o i membri del Red Team, questa tecnica è fondamentale per l'escalation dei privilegi (come descritto qui). Tuttavia, è importante notare che questa tecnica è piuttosto evidente e potrebbe non cogliere di sorpresa un attaccante.

Logica dell'Assunzione del Ruolo

Per assumere un ruolo nello stesso account se il ruolo da assumere consente specificamente un ARN del ruolo come in:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<acc_id>:role/priv-role"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}

Il ruolo priv-role in questo caso, non ha bisogno di essere specificamente autorizzato ad assumere quel ruolo (quell'autorizzazione è sufficiente).

Tuttavia, se un ruolo sta permettendo a un account di assumerlo, come in:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<acc_id>:root"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}

Il ruolo che si sta cercando di assumere avrà bisogno di un permesso specifico sts:AssumeRole su quel ruolo per poterlo assumere.

Se si cerca di assumere un ruolo da un account diverso, il ruolo assunto deve consentirlo (indicare il ARN del ruolo o l'account esterno), e il ruolo che sta cercando di assumere l'altro DEVE avere i permessi per farlo (in questo caso non è facoltativo anche se il ruolo assunto sta specificando un ARN).

Enumerazione

# Get basic info of the creds
aws sts get-caller-identity
aws sts get-access-key-info --access-key-id <AccessKeyID>

# Get CLI a session token with current creds
## Using CLI creds
## You cannot get session creds using session creds
aws sts get-session-token
## MFA
aws sts get-session-token --serial-number <arn_device> --token-code <otp_code>

Privesc

Nella seguente pagina puoi controllare come abusare delle autorizzazioni STS per escalare i privilegi:

pageAWS - STS Privesc

Post Exploitation

pageAWS - STS Post Exploitation

Persistenza

pageAWS - IAM Persistence

Riferimenti

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

Altri modi per supportare HackTricks:

Last updated