AWS - API Gateway Enumeración no autenticada
Tip
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)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
API Invoke bypass
Según la charla Attack Vectors for APIs Using AWS API Gateway Lambda Authorizers - Alexandre & Leonardo, Lambda Authorizers pueden configurarse usando la sintaxis IAM para otorgar permisos para invocar endpoints de la API. Esto está extraído from the docs:
{
"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 otorgar permisos para invocar endpoints es que “*” implica “cualquier cosa” y no se soporta más sintaxis regex.
Some examples:
- A rule such as
arn:aws:execute-apis:sa-east-1:accid:api-id/prod/*/dashboard/*in order to give each user access to/dashboard/user/{username}will give them access to other routes such as/admin/dashboard/createAdminfor example.
Warning
Ten en cuenta que “*” no deja de expandirse con slashes, por lo tanto, si usas “*” en api-id por ejemplo, también podría indicar “any stage” o “any method” siempre que el regex final siga siendo válido.
Soarn:aws:execute-apis:sa-east-1:accid:*/prod/GET/dashboard/*
Can validate a post request to test stage to the path/prod/GET/dashboard/adminfor example.
Siempre debes tener claro a qué quieres permitir el acceso y luego comprobar si con los permisos concedidos son posibles otros escenarios.
For more info, apart of the docs, you can find code to implement authorizers in this official aws github.
IAM Policy Injection
In the same talk it’s exposed the fact that if the code is using entrada del usuario to generar las IAM policies, wildcards (and others such as “.” or specific strings) can be included in there with the goal of eludir las restricciones.
Plantilla de URL pública
https://{random_id}.execute-api.{region}.amazonaws.com/{user_provided}
Obtener el Account ID desde la URL pública de API Gateway
Just like with S3 buckets, Data Exchange and Lambda URLs gateways, es posible encontrar el account ID de una cuenta abusando de la aws:ResourceAccount Policy Condition Key desde una URL pública de API Gateway. Esto se hace encontrando el account ID un carácter a la vez abusando de comodines en la sección aws:ResourceAccount de la policy.\
Esta técnica también permite obtener values of tags si conoces la clave del tag (hay algunos predeterminados interesantes).
You can find more information in the original research and the tool conditional-love to automate this exploitation.
Tip
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)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
HackTricks Cloud

