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)
Inicialmente propuesto en este blog, es posible enviar un enlace a un usuario que utiliza AWS SSO que, si el usuario acepta, el atacante podrá obtener un token para suplantar al usuario y acceder a todos los roles a los que el usuario puede acceder en el Identity Center.
Para realizar este ataque, los requisitos son:
La víctima necesita usar Identity Center
El atacante debe conocer el subdominio utilizado por la víctima <victimsub>.awsapps.com/start
Solo con la información anterior, el atacante podrá enviar un enlace al usuario que, si es aceptado, otorgará al atacante acceso a la cuenta del usuario de AWS.
Finding the subdomain
El primer paso del atacante es averiguar el subdominio que la empresa víctima está utilizando en su Identity Center. Esto se puede hacer a través de OSINT o adivinando + BF, ya que la mayoría de las empresas utilizarán su nombre o una variación de su nombre aquí.
Con esta información, es posible obtener la región donde se configuró el Identity Center:
Generar el enlace para la víctima y enviarlo
Ejecuta el siguiente código para generar un enlace de inicio de sesión de AWS SSO para que la víctima pueda autenticarse. Para la demostración, ejecuta este código en una consola de python y no la cierres, ya que más tarde necesitarás algunos objetos para obtener el token:
Envía el enlace generado a la víctima utilizando tus increíbles habilidades de ingeniería social.
Espera hasta que la víctima lo acepte
Si la víctima ya estaba conectada a AWS, solo necesitará aceptar otorgar los permisos; si no lo estaba, necesitará iniciar sesión y luego aceptar otorgar los permisos. Así es como se ve el aviso hoy en día:
Obtén el token de acceso SSO
Si la víctima aceptó el aviso, ejecuta este código para generar un token SSO suplantando al usuario:
El token de acceso SSO es válido por 8h.
Suplantar al usuario
Es divertido saber que el ataque anterior funciona incluso si se está utilizando un "MFA inphishable" (webAuth). Esto se debe a que el flujo de trabajo anterior nunca sale del dominio OAuth utilizado. A diferencia de otros ataques de phishing donde el usuario necesita suplantar el dominio de inicio de sesión, en este caso, el flujo de trabajo del código del dispositivo está preparado para que un código sea conocido por un dispositivo y el usuario pueda iniciar sesión incluso en una máquina diferente. Si se acepta el aviso, el dispositivo, solo por conocer el código inicial, podrá recuperar credenciales para el usuario.
Para más información sobre esto consulta esta publicación.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)