AWS - Identity Center & SSO Unauthenticated Enum
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Proposto inicialmente em este post do blog, é possível enviar um link para um usuário usando AWS SSO que, se o usuário aceitar, o atacante poderá obter um token para se passar pelo usuário e acessar todos os papéis que o usuário pode acessar no Identity Center.
Para realizar esse ataque, os requisitos são:
A vítima precisa usar o Identity Center
O atacante deve conhecer o subdomínio usado pela vítima <victimsub>.awsapps.com/start
Apenas com as informações anteriores, o atacante poderá enviar um link para o usuário que, se aceito, concederá ao atacante acesso à conta do usuário AWS.
Encontrando o subdomínio
O primeiro passo do atacante é descobrir o subdomínio que a empresa vítima está usando em seu Identity Center. Isso pode ser feito via OSINT ou adivinhação + BF, já que a maioria das empresas usará seu nome ou uma variação de seu nome aqui.
Com essa informação, é possível obter a região onde o Identity Center foi configurado:
Gere o link para a vítima & Envie-o
Execute o seguinte código para gerar um link de login do AWS SSO para que a vítima possa se autenticar. Para a demonstração, execute este código em um console Python e não o feche, pois mais tarde você precisará de alguns objetos para obter o token:
Envie o link gerado para a vítima usando suas incríveis habilidades de engenharia social!
Espere até que a vítima aceite
Se a vítima já estava conectada no AWS, ela só precisará aceitar a concessão das permissões; se não estava, precisará fazer login e então aceitar a concessão das permissões. Assim é como o prompt aparece atualmente:
Obtenha o token de acesso SSO
Se a vítima aceitou o prompt, execute este código para gerar um token SSO se passando pelo usuário:
O token de acesso SSO é válido por 8h.
Imitar o usuário
É interessante saber que o ataque anterior funciona mesmo se um "MFA inefitável" (webAuth) estiver sendo usado. Isso ocorre porque o fluxo de trabalho anterior nunca sai do domínio OAuth utilizado. Diferente de outros ataques de phishing onde o usuário precisa substituir o domínio de login, no caso, o fluxo de código do dispositivo é preparado para que um código seja conhecido por um dispositivo e o usuário possa fazer login mesmo em uma máquina diferente. Se o prompt for aceito, o dispositivo, apenas por conhecer o código inicial, será capaz de recuperar credenciais para o usuário.
Para mais informações sobre isso ver este post.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)