OAuth协议不当导致100多万用户互联网银行帐户接管

OAuth协议不当导致100多万用户互联网银行帐户接管

OAuth协议简介

OAuth是一种开放协议,允许通过简单,标准的方法从Web,移动和桌面应用程序进行授权。OAuth是访问授权的开放标准,通常用作Internet用户授予网站或应用程序访问其在其他网站上的信息的权限的一种方式,但无需提供密码。亚马逊,谷歌,Facebook,微软和Twitter等公司使用此机制来允许用户与第三方应用程序或网站共享有关其帐户的信息。

OpenID Connect 1.0是基于OAuth 2.0协议的简单身份层。它允许客户端基于授权服务器执行的身份验证来验证最终用户的身份,并以可互操作且类似于REST的方式获取有关最终​​用户的基本配置文件信息。OpenID Connect允许所有类型的客户端(包括基于Web的客户端,移动客户端和JavaScript客户端)请求并接收有关经过身份验证的会话和最终用户的信息。[https://openid.net/]

著名的在线银行应用程序之一是对身份验证和授权用户使用OAuth 2.0协议和OpenID Connect 1.0。让我解释一下方案。

银行授权服务器接受包含OAuth 2.0和OpenID Connect 1.0规范定义的参数的身份验证请求。
您必须输入包含用户名/国家ID和密码的凭据才能登录您的网上银行帐户。

漏洞详情

如果您已经被银行识别并注册,则可以使用用户名/国家ID和密码登录到您的帐户。

接下来,我单击“忘记密码?” 按钮。在此步骤中,用户必须输入她/他的国家ID和手机号码来更改密码,还要确认输入的信息,将OTP码发送到用户的电话号码。

然后,我输入了身份信息,并收到以下错误消息:“手机和用户名不匹配”。原因是我的手机号码在数据库中不存在,并且我没有使用该手机号码注册。

请求如下:

响应:

当我再次单击登录按钮时,状态代码更改为302,并成功登录到我的网上银行帐户!发生了什么?

请求如下:

响应:

下一个请求和响应如下:

最后,我登录了我的互联网银行帐户。

请求是:

响应为:

我使用了一个国家ID数据库,并编写了一个方便的利用程序来破解100多万个帐户。
在图1到3中,您可以看到一些被黑客入侵的帐户。

被接管的受害者帐户

此漏洞形成原因

OAuth协议实施不当是造成此安全漏洞的原因。在这种情况下,在将OTP发送到电话号码进行验证之前,开发人员会为用户帐户分配访问令牌。如果受害人的国民ID在数据库中,它将通过OpenID进行身份验证,并且使用URL片段中的访问令牌将用户重定向回应用程序。这是OAuth的隐式授予类型!

注意:此漏洞已被修补,并且本文仅用于学习目的。

根据我们的协议,我没有提及目标银行名称。

from

Leave a Reply

您的电子邮箱地址不会被公开。