原文:
https://hbothra22.medium.com/attacking-social-logins-pre-authentication-account-takeover-790248cfdc3
对于应用程序的安全性来说,身份验证是最关键的方面之一。然而,假设攻击者可以通过任何方式绕过已实现的身份验证。在这种情况下,可以执行特权操作,列举敏感信息,并造成混乱,导致技术、业务和声誉影响。
通常,大多数现代应用允许用户使用多种方法注册/注册,如通过电子邮件注册,通过Social login注册和其他方法。然而,通过OAuth2.0、SAML等登录,基于身份验证通常被认为是安全的。但是,如果应用程序没有正确地实现一些基本检查,它可能成为一个严重的安全漏洞。
本文将讨论一个简单的安全漏洞,它发生在一个应用程序中,由于其他社交账号登录的不正确实现和缺乏[或可绕过的]电子邮件验证,允许攻击者保持对受害者用户的帐户的持久访问,即Pre-Authentication帐户接管漏洞。
顾名思义,在受害用户为应用程序注册自己之前,攻击者需要对受害用户的帐户进行身份验证访问。这里出现的常见问题是,攻击者如何在受害者创建帐户之前访问受害者的帐户?这就是身份验证前帐户接管的作用所在。让我们将这种攻击分解成小块,并了解如何执行成功的利用。
攻击的前提:
这种攻击是不可能适用于所有地方。但是,有具体的要求试图利用这个问题如下所述:
缺少电子邮件验证:目标应用程序不应该有电子邮件验证机制,或者应该可以绕过它。通常,当一个新用户在某个应用程序上创建一个帐户时,它需要首先验证电子邮件,然后只授予访问权限。简而言之,这是执行此攻击所必需的基本内容。由于这种错误配置,攻击者将使用受害用户的帐户在应用程序中注册一个帐户,即Pre-Authentication。
社交登录:目标应用程序还应该支持至少一个社交登录,例如使用谷歌、Facebook、Twitter和其他服务登录。此外,攻击者用于预认证的受害者电子邮件应该是其社交媒体账户中使用的邮件。
受害用户的电子邮件:最后需要的项目是受害用户的电子邮件;然而,这不是一个困难的任务,而且可以很容易地枚举电子邮件。
攻击步骤[来自现实生活中的发现]
在对机密目标执行渗透测试时,我发现应用程序允许我在创建一个新帐户后自动登录到应用程序。这意味着根本没有电子邮件验证。类似地,该应用程序还支持多种社交登录方法,如使用谷歌登录。通过以下步骤,我可以成功执行认证前帐户接管:
[攻击者步骤]导航到目标应用程序,并使用受害用户的电子邮件注册一个新帐户。由于应用程序也有谷歌身份验证选项,所以我使用Gmail帐户注册为受害者帐户。
注意,在注册过程完成后,应用程序成功地让用户登录,并且应用程序的所有特性都可以访问。
现在,登出并导航回目标应用程序的登录功能。
[受害者步骤]这次使用谷歌鉴权登录,使用步骤1中使用的相同的Email地址登录应用
观察登录是否成功,受害用户可以访问应用程序。然后,在应用程序中执行任何更改,例如更新配置文件。
[攻击者步骤]现在,在一个单独的浏览器窗口中,尝试使用步骤1中注册时使用的Email😛assword登录。
观察攻击者成功登录到受害用户的帐户,并可以看到受害用户执行的所有更改。
这使得攻击者可以在受害者用户的帐户中保持持久访问,只要受害者手动更改帐户的密码。
影响
由于没有电子邮件确认,攻击者可以很容易地在应用程序中使用受害者的电子邮件创建一个帐户。这允许攻击者获得对受害者帐户的预认证。
此外,由于缺乏正确的验证来自社会登录的电子邮件,没有检查帐户是否已经存在,受害者将无法确定帐户是否已经存在。因此,攻击者的持久性仍然存在。
攻击者将能够看到受害用户执行的所有影响机密性的活动,并试图修改/破坏影响完整性和可用性因素的数据。
当攻击者可以从员工的电子邮件地址注册一个帐户时,这种攻击就变得更有趣了。假设该组织使用G-Suite,劫持员工账户的影响要大得多。
总体严重程度通常从高到严重,这取决于所存储的数据。
注意:如果受害者已经有一个帐户使用社会登录的应用程序,这种攻击很可能不会工作。
修复
对这个问题最简单的补救是确保电子邮件验证得到充分实现,并且不能被绕过。
此外,通过确保社会登录正确实现,从社会登录提取的电子邮件将根据现有用户的数据库进行验证,以确保受害者要求重置密码。通过这样做,就有可能删除攻击者的持久性。
本文迁移自知识星球“火线Zone”