前言
Auth0 是一个广泛用于网站和应用程序的身份验证平台,负责管理用户身份并确保其服务的安全访问。该平台提供了多种工作流程,以无缝集成登录和注册流程。
在 Auth0 中创建新应用时,注册选项默认启用。当系统未编写注册功能但仍采用 Auth0 时,仍然能绕过此限制,实现恶意注册、登录的风险。
正文
通过研究 Auth0 身份验证 API 文档,我发现了一个允许用户通过 POST 请求向 /dbconnections/signup
端点注册的接口。该端点需要以下参数:
client_id: 请求访问 Auth0 服务的应用程序的唯一标识符。
connection: 指定用于身份验证的身份提供者。
email: 用户的电子邮件地址。
password: 符合配置密码策略的密码。
而通过该接口,可以绕过预定的注册机制,创建未经授权的账户并获得对应用程序的访问权限。
漏洞案例
目标公司的某子域存在一后台系统,并没有注册界面,仅存在登录面板。这说明系统中的注册选项被禁用,因为系统被设计为只有授权方才能访问。
我决定对目录进行FUZZ,看看能否发现任何敏感端点。不幸的是,我的字典并不够强大。
随后,我在登录页面上随机输入了电子邮件和密码,并使用 Burp 拦截了请求:
如上图,该请求体结构说明该系统正在使用 Auth0,因此我将请求修改如下:
POST /dbconnections/signup HTTP/2
Host: xyz.web.example.com
Content-Length: 198
Content-Type: application/json
Origin: https://xyz.web.example.com
Referer: https://xyz.web.example.com/
{"client_id":"<上图id>",
"email":"[email protected]",
"password":"Admin@123",
"connection":"<value>",
"credential_type":"http://auth0.com/oauth/grant-type/password-realm"}
我将co/authenticate
接口改为/dbconnections/signup
,并在请求体中将username
更改为email
,将realm
更改为connection
。
发包后响应如下,这意味着我已成功注册:
现在,我能够进入后台访问敏感数据、进行深入测试等。
修复建议
若系统需要全面禁止注册功能,需满足以下条件:
1、删除注册功能代码。
2、导航至身份验证选项->数据库连接->数据库->禁用 Auth0 注册。
启用此功能后,任何通过 Auth0 API 注册的请求都会返回一条明确的消息,表明公共注册已被禁用:
参考文章:
https://naumankh4n.medium.com/a-click-can-cause-1600-auth0-misconfig-9234aedad55c
https://amjadali110.medium.com/how-i-exploited-an-auth0-misconfiguration-to-bypass-login-restrictions-c5d8c20d5505
原文始发于微信公众号(玲珑安全):1,600$:Auth0 错误配置
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论