AWS - API Gateway Unauthenticated Enum

Aprende hacking en AWS desde cero hasta experto con htARTE (Experto en Red de HackTricks AWS)!

Otras formas de apoyar a HackTricks:

Bypass de Invocación de API

Según la charla Vectores de Ataque para APIs Utilizando Autorizadores Lambda de AWS API Gateway - Alexandre & Leonardo, los Autorizadores Lambda se pueden configurar utilizando la sintaxis de IAM para otorgar permisos para invocar puntos finales de API. Esto se extrae de la documentación:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Permission",
"Action": [
"execute-api:Execution-operation"
],
"Resource": [
"arn:aws:execute-api:region:account-id:api-id/stage/METHOD_HTTP_VERB/Resource-path"
]
}
]
}

El problema con esta forma de dar permisos para invocar endpoints es que el "*" implica "cualquier cosa" y no se admite más sintaxis de expresiones regulares.

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.

Tenga en cuenta que el "*" no deja de expandirse con barras, por lo tanto, si usa "*" en api-id, por ejemplo, también podría indicar "cualquier etapa" o "cualquier método" siempre que la expresión regular final siga siendo válida. Entonces 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 debe tener claro a qué desea permitir el acceso y luego verificar si otros escenarios son posibles con los permisos otorgados.

Para obtener más información, además de la documentación, puede encontrar código para implementar autorizadores en este repositorio oficial de aws en github.

Inyección de Política IAM

En la misma charla se expone el hecho de que si el código está utilizando entrada de usuario para generar las políticas IAM, los comodines (y otros como "." o cadenas específicas) pueden incluirse allí con el objetivo de burlar restricciones.

Plantilla de URL pública

https://{random_id}.execute-api.{region}.amazonaws.com/{user_provided}

Obtener ID de cuenta desde una URL pública de API Gateway

Al igual que con los buckets S3, Data Exchange y las URL de Lambda gateways, es posible encontrar el ID de cuenta de una cuenta abusando de la clave de condición de política aws:ResourceAccount 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 hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización