AWS - STS Enum
Reading time: 4 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.
STS
AWS Security Token Service (STS) è principalmente progettato per emettere credenziali temporanee e con privilegi limitati. Queste credenziali possono essere richieste per utenti di AWS Identity and Access Management (IAM) o per utenti autenticati (utenti federati).
Dato che lo scopo di STS è emettere credenziali per impersonificazione dell'identità, il servizio è immensamente prezioso per l'escalation dei privilegi e il mantenimento della persistenza, anche se potrebbe non avere una vasta gamma di opzioni.
Impersonificazione del Ruolo Assunto
L'azione AssumeRole fornita da AWS STS è cruciale in quanto consente a un principale di acquisire credenziali per un altro principale, impersonandolo essenzialmente. 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 sorprendere un attaccante.
Logica del Ruolo Assunto
Per assumere un ruolo nello stesso account se il ruolo da assumere consente 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 quella autorizzazione è sufficiente).
Tuttavia, se un ruolo consente 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 assumerlo.
Se si tenta di assumere un ruolo da un altro account, il ruolo assunto deve consentirlo (indicando il ARN del ruolo o l'account esterno), e il ruolo che sta cercando di assumere l'altro DEVE avere i permessi per assumerlo (in questo caso non è opzionale anche se il ruolo assunto specifica 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 pagina seguente puoi controllare come abuse STS permissions to escalate privileges:
Post Exploitation
Persistence
References
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.