Azure AD B2C 容易受到开放重定向的影响?

Posted

技术标签:

【中文标题】Azure AD B2C 容易受到开放重定向的影响?【英文标题】:Azure AD B2C vulnerable to Open Redirect? 【发布时间】:2018-06-28 16:07:29 【问题描述】:

我正在使用 OWIN 和 OpenId 使用 Azure AD B2C 对我的 Web 应用程序的用户进行身份验证,Startup.Auth.cs 的代码如下:

app.UseOpenIdConnectAuthentication(
            new OpenIdConnectAuthenticationOptions
            
                 MetadataAddress = string.Format(AadInstance, Tenant, policy),
                AuthenticationType = policy,
                ClientId = clientId,
                Authority = authority,
                PostLogoutRedirectUri = postLogoutRedirectUri,
                RedirectUri = postLogoutRedirectUri,
                Notifications = new OpenIdConnectAuthenticationNotifica....

在注销时,它会像这样重定向到 postLogoutRedirectUrl

https://login.microsoftonline.com/MY_TENANT/oauth2/logout?p=my_policy&post_logout_redirect_uri=https%3A%2F%2Fgoogle.com%2F

注销后重定向 URI 存在于门户的重定向 Uri 中。

如果我停止浏览器并将地址栏中的注销后 uri 更改为 https%3A%2F%2Fevil.com%2F,即使此 url https://evil.com/ 不在允许的重定向 uri 中,重定向也会正确发生。

为什么 AD B2C 不停止重定向?这不是易受攻击的吗?

【问题讨论】:

我看不到漏洞。整个会话通过 HTTPS 运行。如果 URL 在运行过程中被修改,则要么您的应用程序受到威胁,要么用户客户端受到威胁。在这两种情况下,注销后重定向将是我最不关心的问题。 【参考方案1】:

您可以更改此行为以强制 Azure AD B2C 仅在将有效 ID 令牌作为参数传入注销请求时才处理注销重定向。要让 B2C 自动包含 ID 令牌并检查其是否存在,只需在 Azure 门户中编辑您的登录/注册策略,即:

或者,如果您使用自定义策略,您可以将SingleSignOn 元素添加到UserJourneyBehaviors 部分,并将@​​987654325@ 设置为true,即:

<UserJourneyBehaviors>
     <SingleSignOn Scope="Tenant" EnforceIdTokenHintOnLogout="true" />

</UserJourneyBehaviors>

【讨论】:

【参考方案2】:

当您使用 Azure AD B2C 登录时,B2C 服务会向“redirect_uri”(应用程序)发送一个令牌。由于令牌需要保持安全,因此 B2C 服务会要求您将应该将令牌发送到的 URL 列入白名单。

当您退出时,没有任何安全信息从 B2C 服务传输回应用程序。因此,即使用户被重定向到恶意站点,也不会丢失任何安全信息。

【讨论】:

如果有人拦截了这个请求并重定向到恶意网站,那就不好看了。对于毫无头绪的用户,它看起来好像我们的网站重定向了。这很可能是一个旨在看起来像我的网络应用程序的网络钓鱼网站 拦截意味着通过 HTTPS。 @Vicky 正如其他人所说,必须有一个人参与 TLS 攻击才能发生这种情况。即便如此,正如 parakh 所说,也不会丢失任何安全的东西。 这算不算漏洞?我的意思是,如果攻击者成功在他的网站上重定向用户(例如通过电子邮件),他可以通过社会工程获取用户的凭据(例如,攻击者构建与网站相同的登录表单,其 URL 类似于到易受攻击的网站)。

以上是关于Azure AD B2C 容易受到开放重定向的影响?的主要内容,如果未能解决你的问题,请参考以下文章

在 Azure AD B2C 中用作 OpenID IDP 提供程序时的 Okta 重定向 URI

Azure AD B2C:请求中的重定向 URI 与授权给 OAuth 客户端的不匹配

无头认证Azure AD b2c

无头身份验证 Azure AD b2c

Azure AD B2C 自定义策略 - Javascript

Azure AD B2C 自定义策略