G Suite是您环境中的软肋
您是否希望在开始渗透测试时就知道目标环境中所有用户的用户名?Gmail、G Suite、Outlook Web Access、Exchange Web Services……电子邮件。这是黑客们获得的一份神圣礼物,没有时效限制。在本博客中,我们将探索使用MailSniper工具包新功能的漏洞利用工作流程。
当您浏览mail.google.com并尝试以[email protected]登录时会发生什么? 事实证明,Google会自动尝试将您验证到与blackhillsinfosec.com域关联的G Suite实例。由于BHIS有一个……这确实有效。如果您尝试以[email protected]登录呢?
不行,有趣。从上面的图像中可以看到,Google对存在的电子邮件账户和不存在的电子邮件账户的响应不同。它甚至在不尝试身份验证的情况下执行此检查。在我们作为渗透测试人员的角色中,这种信息响应异常有用。这意味着我们可以发现有效的用户电子邮件,除了域名之外一无所知。
然而,有一个讨厌的问题。验证码。
几次不成功的尝试后,Google会向我们展示一个验证码来验证我们的人性。幸运的是,人性可以被脚本化。
与信息安全中的所有事情一样,克服障碍只是深入挖掘的问题。在这种情况下,我们转向网络层面。
如果错误响应的差异允许我们确定账户是否存在,那么当出现验证码时,响应的差异会指示什么?没错,验证码/无验证码。我们可以使用Burp Suite拦截代理来寻找这些差异。
在Burp Suite中,我们可以看到对验证码的get请求,但对我们最有用的是对我们POST请求的返回响应。每个电子邮件"查找"请求都会发出一个POST请求。如您所见,在连续第六个"错误"POST请求后请求了验证码。 将此响应与不正确但无验证码的响应进行比较,我们可以关注"gf.alr" JSON名称/值对。此对象的值会变化!对于每个验证码,ALR值为5,而每个错误的电子邮件请求返回7。绕过验证码可能就像检测到ALR为5并重试直到再次收到ALR为7一样简单。
当我们检查跨多种请求/响应类型的许多响应时,可以看到这种区分保持恒定但可预测:
1 -> 正确的电子邮件地址 7 -> 不正确的电子邮件地址 5 -> 出现验证码
甚至还有其他因素(如2FA)可以使用此机制进行枚举。
太棒了!也就是说,等待验证码消失很无聊。我们还能尝试什么? 当我们检测到验证码时,如果从不同的IP地址发送下一个请求会发生什么? 没有验证码。 使用_socat_,我们可以设置socks代理主机来反弹和轮换我们的猜测。
|
|
如果我们将所有这些功能结合起来并创建一个潜在的电子邮件地址列表,我们就可以枚举用户。让我们看一个针对BHIS执行此操作的示例!
如果我们事先不知道电子邮件地址怎么办?通过一些巧妙的脚本和US Census数据,我们可以克服这个限制。 电子邮件通常采用以下几种总体格式之一:
格式 | 示例 |
---|---|
[email protected] | [email protected] |
[email protected] | [email protected] |
[email protected] | [email protected] |
通过获取人口普查数据中的前1000个男孩和女孩名字,并将其与最常见的美国姓氏结合,我们可以生成电子邮件地址排列。接下来,让我们检查一下如何使用PowerShell完成此操作。 首先下载名字和姓氏列表:
|
|
现在使用PowerShell根据所需格式制作自定义电子邮件列表:
|
|
电子邮件是渗透测试人员工具包的关键组成部分。只要基于密码的身份验证仍然是系统或网络安全的守门人,这种情况就会持续下去。这里的根本问题不一定是Gsuite或Outlook Online,尽管它们肯定可以做更多的事情。密码的首要地位解开了网络对手的束缚。作为渗透测试人员,我们需要展示这些问题,为我们所有人创造一个更安全的未来。
*此博客文章是Matt网络研讨会的后续内容,可在此处观看: 网络研讨会:使用MailSniper测试G Suites