AWS - API Gateway 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)
Según la charla Attack Vectors for APIs Using AWS API Gateway Lambda Authorizers - Alexandre & Leonardo, los Lambda Authorizers pueden ser configurados usando la sintaxis de IAM para dar permisos para invocar endpoints de API. Esto se toma de la documentación:
El problema con esta forma de dar permisos para invocar endpoints es que el "*" implica "cualquier cosa" y no se admite más sintaxis regex.
Algunos ejemplos:
Una regla como arn:aws:execute-apis:sa-east-1:accid:api-id/prod/*/dashboard/*
para dar acceso a cada usuario a /dashboard/user/{username}
les dará acceso a otras rutas como /admin/dashboard/createAdmin
, por ejemplo.
Ten en cuenta que "*" no deja de expandirse con barras; por lo tanto, si usas "*" en api-id, por ejemplo, también podría indicar "cualquier etapa" o "cualquier método" siempre que la regex final siga siendo válida.
Así que arn:aws:execute-apis:sa-east-1:accid:*/prod/GET/dashboard/*
Puede validar una solicitud POST a la etapa de prueba en la ruta /prod/GET/dashboard/admin
, por ejemplo.
Siempre debes tener claro qué quieres permitir que acceda y luego verificar si otros escenarios son posibles con los permisos otorgados.
Para más información, aparte de la docs, puedes encontrar código para implementar autorizadores en este github oficial de aws.
En la misma charla se expone el hecho de que si el código está utilizando entrada del usuario para generar las políticas IAM, se pueden incluir comodines (y otros como "." o cadenas específicas) con el objetivo de eludir restricciones.
Al igual que con los buckets de S3, Data Exchange y las URL de Lambda, es posible encontrar el ID de cuenta de una cuenta abusando de la aws:ResourceAccount
Policy Condition Key desde una URL pública de API Gateway. Esto se hace encontrando el ID de cuenta un carácter a la vez abusando de comodines en la sección aws:ResourceAccount
de la política.
Esta técnica también permite obtener valores de etiquetas si conoces la clave de la etiqueta (hay algunas predeterminadas interesantes).
Puedes encontrar más información en la investigación original y la herramienta conditional-love para automatizar esta explotación.
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)