AWS - API Gateway Unauthenticated Enum
Last updated
Last updated
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
根据演讲 使用 AWS API Gateway Lambda 授权者的 API 攻击向量 - Alexandre & Leonardo,可以使用 IAM 语法 配置 Lambda 授权者,以授予调用 API 端点的权限。这是 来自文档:
给端点调用权限的这种方式的问题在于**"*"意味着"任何",并且不再支持正则表达式语法**。
一些示例:
规则如arn:aws:execute-apis:sa-east-1:accid:api-id/prod/*/dashboard/*
为了给每个用户访问/dashboard/user/{username}
的权限,将会使他们访问其他路由,例如/admin/dashboard/createAdmin
。
请注意**"*"不会因斜杠而停止扩展**,因此,如果您在api-id中使用"*",它也可以表示"任何阶段"或"任何方法",只要最终的正则表达式仍然有效。
因此arn:aws:execute-apis:sa-east-1:accid:*/prod/GET/dashboard/*
可以验证对路径/prod/GET/dashboard/admin
的测试阶段的POST请求,例如。
您应该始终清楚您想要允许访问的内容,然后检查授予的权限是否可能存在其他场景。
有关更多信息,除了文档,您可以在这个官方aws github中找到实现授权者的代码。
在同一个演讲中,暴露了如果代码使用用户输入来生成IAM策略,则可以在其中包含通配符(以及其他如"."或特定字符串),目的是绕过限制。
就像 S3 存储桶、数据交换和 Lambda URL 网关一样,可以通过公共 API Gateway URL 利用 aws:ResourceAccount
策略条件键 找到账户的账户 ID。这是通过逐个字符查找账户 ID,利用策略中 aws:ResourceAccount
部分的通配符来实现的。
此技术还允许获取 标签的值,如果你知道标签键(有一些默认的有趣标签)。
你可以在 原始研究 和工具 conditional-love 中找到更多信息,以自动化此利用。
学习和实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习和实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)