AWS - STS Enum

Supporta HackTricks

STS

AWS Security Token Service (STS) è progettato principalmente per emettere credenziali temporanee e a privilegio limitato. Queste credenziali possono essere richieste per AWS Identity and Access Management (IAM) utenti o per utenti autenticati (utenti federati).

Dato che lo scopo di STS è emettere credenziali per l'impersonificazione dell'identità, il servizio è immensamente prezioso per escalation dei privilegi e mantenimento della persistenza, anche se potrebbe non avere una vasta gamma di opzioni.

Assume Role Impersonation

L'azione AssumeRole fornita da AWS STS è cruciale poiché consente a un principale di acquisire credenziali per un altro principale, essenzialmente impersonandolo. Al momento dell'invocazione, 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 è strumentale per l'escalation dei privilegi (come elaborato qui). Tuttavia, vale la pena notare che questa tecnica è piuttosto evidente e potrebbe non cogliere di sorpresa un attaccante.

Assume Role Logic

Per assumere un ruolo nello stesso account se il ruolo da assumere sta permettendo specificamente un ARN di 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 deve essere specificamente autorizzato ad assumere quel ruolo (con 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 tenta di assumerlo avrà bisogno di un permesso specifico sts:AssumeRole su quel ruolo per assumerlo.

Se provi ad assumere un ruolo da un account diverso, il ruolo assunto deve permetterlo (indicando l'ARN del ruolo o l'account esterno), e il ruolo che tenta di assumere l'altro DEVE avere i permessi per assumerlo (in questo caso non è opzionale anche se il ruolo assunto specifica un ARN).

Enumeration

# 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 vedere come abusare dei permessi STS per scalare i privilegi:

AWS - STS Privesc

Post Exploitation

AWS - STS Post Exploitation

Persistence

AWS - STS Persistence

References

Supporta HackTricks

Last updated