AWS - IAM Pós Exploração
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.
IAM
Para mais informações sobre acesso IAM:
AWS - IAM, Identity Center & SSO Enum
Problema do Deputado Confuso
Se você permitir que uma conta externa (A) acesse um papel em sua conta, você provavelmente terá 0 visibilidade sobre quem pode exatamente acessar essa conta externa. Isso é um problema, porque se outra conta externa (B) puder acessar a conta externa (A), é possível que B também consiga acessar sua conta.
Portanto, ao permitir que uma conta externa acesse um papel em sua conta, é possível especificar um ExternalId
. Esta é uma string "secreta" que a conta externa (A) precisa especificar para assumir o papel em sua organização. Como a conta externa B não saberá essa string, mesmo que tenha acesso a A, não conseguirá acessar seu papel.
.png)
No entanto, observe que esse ExternalId
"secreto" não é um segredo, qualquer um que puder ler a política de assumir papel do IAM poderá vê-lo. Mas, enquanto a conta externa A souber, mas a conta externa B não souber, isso impede B de abusar de A para acessar seu papel.
Exemplo:
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Principal": {
"AWS": "Example Corp's AWS Account ID"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "12345"
}
}
}
}
warning
Para que um atacante explore um deputado confuso, ele precisará descobrir de alguma forma se os principais da conta atual podem se passar por funções em outras contas.
Confianças Inesperadas
Coringa como principal
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": { "AWS": "*" }
}
Esta política permite que todos os AWS assumam o papel.
Serviço como principal
{
"Action": "lambda:InvokeFunction",
"Effect": "Allow",
"Principal": { "Service": "apigateway.amazonaws.com" },
"Resource": "arn:aws:lambda:000000000000:function:foo"
}
Esta política permite que qualquer conta configure seu apigateway para chamar este Lambda.
S3 como principal
"Condition": {
"ArnLike": { "aws:SourceArn": "arn:aws:s3:::source-bucket" },
"StringEquals": {
"aws:SourceAccount": "123456789012"
}
}
Se um bucket S3 for dado como um principal, porque os buckets S3 não têm um ID de Conta, se você deletou seu bucket e o atacante o criou em sua própria conta, então eles poderiam abusar disso.
Não suportado
{
"Effect": "Allow",
"Principal": { "Service": "cloudtrail.amazonaws.com" },
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::myBucketName/AWSLogs/MY_ACCOUNT_ID/*"
}
Uma maneira comum de evitar problemas de Confused Deputy é o uso de uma condição com AWS:SourceArn
para verificar o ARN de origem. No entanto, alguns serviços podem não suportar isso (como o CloudTrail, de acordo com algumas fontes).
Referências
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.