AWS - STS Enum
Reading time: 4 minutes
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
STS
AWS Security Token Service (STS) é projetado principalmente para emitir credenciais temporárias e de privilégio limitado. Essas credenciais podem ser solicitadas para usuários do AWS Identity and Access Management (IAM) ou para usuários autenticados (usuários federados).
Dado que o propósito do STS é emitir credenciais para impessoalização de identidade, o serviço é imensamente valioso para escalonamento de privilégios e manutenção de persistência, mesmo que possa não ter uma ampla gama de opções.
Impessoalização de Função
A ação AssumeRole fornecida pelo AWS STS é crucial, pois permite que um principal adquira credenciais para outro principal, essencialmente impessoalizando-o. Ao ser invocada, ela responde com um ID de chave de acesso, uma chave secreta e um token de sessão correspondente ao ARN especificado.
Para Testadores de Penetração ou membros da Red Team, essa técnica é instrumental para escalonamento de privilégios (como detalhado aqui). No entanto, vale a pena notar que essa técnica é bastante conspícua e pode não pegar um atacante de surpresa.
Lógica de Assumir Função
Para assumir uma função na mesma conta, se a função a ser assumida permitir especificamente um ARN de função como em:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<acc_id>:role/priv-role"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}
O papel priv-role
neste caso, não precisa ser especificamente permitido para assumir esse papel (com essa permissão é suficiente).
No entanto, se um papel estiver permitindo que uma conta o assuma, como em:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<acc_id>:root"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}
O papel que está tentando assumir precisará de uma permissão específica sts:AssumeRole
sobre esse papel para assumi-lo.
Se você tentar assumir um papel de uma conta diferente, o papel assumido deve permitir isso (indicando o ARN do papel ou a conta externa), e o papel que está tentando assumir o outro DEVE ter permissões para assumi-lo (neste caso, isso não é opcional, mesmo que o papel assumido esteja especificando um ARN).
Enumeração
# 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
Na página a seguir, você pode verificar como abusar das permissões do STS para escalar privilégios:
Post Exploitation
Persistence
References
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.