从侦察到利用EWS错误配置绕过OWA中的MFA实施

admin 2025年4月14日09:27:48评论1 views字数 7446阅读24分49秒阅读模式

这个故事讲述了我如何最终通过使用 EWS 错误配置来访问电子邮件收件箱并(有能力)转储全局地址列表,从而使用未注册 MFA 的 AD 帐户。

和往常一样,我会尝试用两种不同的方式来发布这篇文章,它们是:

  • 对于那些只需要了解这一发现要点的人(如果读者已经理解了每一个流程,InshaAllah 可以节省大量的时间)——请参阅 TL;DR 部分,并且
  • 对于那些需要了解这一发现的执行流程或历程的人来说,InshaAllah,它可以告诉读者一些思维模式,并希望能够帮助人们丰富他们的见解。

请尽情欣赏这个故事。

一、介绍

关于这个问题简单说一下几点:

  • 寻找允许通过两种方法登录的目标,即作为员工(使用域帐户)和作为专门为站点本身创建帐户的用户。
  • 要使用员工帐户(域帐户)登录,该网站将引导我们到另一个 .TLD(例如:从 .com 到 net)—— ADFS 端点
  • 心态:如果我们可以使用域帐户登录,我们就可以访问这个网站,对吗?
  • 使用 .net 域名(而非 .com)在 GitHub 上开始侦察。例如:密码“.target.net”

请参阅Th3g3nt3lman在 Bugcrowd University 上的演讲Github Recon 和敏感数据暴露或我的一篇文章:从 Recon 到优化 RCE 结果

  • 我发现一个存储库,其中包含多个文件,代码超过 3,000 行。在其中一行中,我发现一个用户名(服务帐户 - svc_nameofsvc)和一个看起来像域帐户的密码。尝试使用该帐户在 ADFS 上登录,但结果显示该帐户未注册所使用的 MFA。简而言之,该帐户必须注册所应用的 MFA 才能登录。当然,我们也需要一个用作 MFA 的“东西”。
  • 试图增加其影响力。如果我们报告一个问题,说我们找到了一个有效的密码,但却因为被阻止而无法登录,那就太不公平了。
  • 尝试找到 EWS 端点→ .com 和 .net 的子域枚举 → 查找电子邮件子域(常见实现)→ 将 EWS 置于找到的子域后面 → 显示登录提示 → 使用找到的凭据登录 →能够登录- 此端点未实施 MFA(未显示收件箱,请记住,这是 EWS)。
  • EWS 端点执行MailSniper工具。成功读取收件箱。

请参阅Black Hills Infosec Research绕过 OWA 和 Office365 门户上的双因素身份验证。有关其研究的 PoC 视频:O365 MFA 绕过信息

从侦察到利用EWS错误配置绕过OWA中的MFA实施

图 1 — 成功读取收件箱
  • 制作一份报告(约7页)并将此问题报告给程序所有者。
  • 试图再次增强其影响力。告诉他们,如果我们能够利用此漏洞转储“全局地址列表”,那么就有可能实现这一点。这样,我们还可以
    已创建的其他服务帐户进行密码喷洒(使用相同的已找到密码) 。

请参阅“使用 MailSniper 滥用 Exchange 邮箱权限——转储全局地址列表”。以及“使用 MailSniper 攻击 Exchange——密码喷洒”。

  • 当天就进行了分类并给予奖励第二天就修复了。

从侦察到利用EWS错误配置绕过OWA中的MFA实施

图 2 — 该 Bug 大约在 2 天内得到修复

二、旅程

2.1. 幕后花絮(第一部分)

有一天,我想测试一个包含在范围内资产中的子域。从众多可用资产来看,似乎只有此资产允许用户使用两种方式登录:以员工身份(使用域帐户)登录,以及以专门为此应用创建帐户的用户身份登录。

当时我尝试用一些常见的、被认为强度较低的密码登录,但效果并不好。在几次尝试失败后,我决定尝试用员工账户测试登录方法。

当我们选择使用员工帐户登录时,应用程序会将我们引导至具有另一个 .TLD(例如,从 .com 到 .net)的 ADFS 端点。由此我们可以得出结论:如果我们拥有员工帐户(域帐户),那么我们就可以登录这些应用程序。

那么,我们应该怎么做呢?

好吧,我又想回归本源了。在这种情况下,我开始在 GitHub 上进行侦察,寻找一些可能对我有用的东西。(这个讲座可以作为很好的参考:Github 侦察和敏感数据暴露)。简而言之,我发现了一个有趣的仓库,它让我发现了一些有趣的发现(本文不再讨论)。提交报告后,他们会在两天内进行分类并给予奖励。

从侦察到利用EWS错误配置绕过OWA中的MFA实施

图 3 — 该项目的第一个发现

关于此侦察部分的另一个参考:我的一篇文章:从侦察到优化 RCE 结果

2.2. 幕后花絮(第二部分)

那天之后,我发现了另外 2 个简单的问题(也得到了奖励),然后我就不再知道该如何处理现有目标了。

于是,我又回到了 GitHub,想换换口味。我又在 GitHub 上输入了“.target.net”这个密码。在之前的仓库从 GitHub 下架后,我发现另一个有趣的仓库在第一页排名第五

说实话,这些结果里确实没有密码信息。但就我的经验而言,凭证信息并不总是放在参数后面。正是出于这种想法,我开始探索这个仓库。

2.3. 探索

当我打开那个仓库时,我被代码行数(超过 3000 行)吓了一跳。好吧,我发现这个代码的时候正好是午夜,当时我的状态不太好,无法阅读这么多行代码——别忘了,我做这个 GitHub Recon只是为了呼吸新鲜空气

但是,当我看到第 6 到第 27 行时,情况发生了变化——关于 AD 帐户和连接字符串(尽管这些行上还没有凭据)。

从这里开始,我希望开发人员犯一个常见的错误,将硬编码凭证放入这个 repo 中。(是的,希望成真)!

在第 394 行,我找到了 2 个我认为是凭证的文本(我怀疑是否有开发人员会提出如此困难的参数)。

字符串表 = “file.xlsx”; XYZEndpoint 端点 = 新 XYZEndpoint(“ username_here ”,“ very_complex_password_here ”);字符串响应 = 端点.GetCollectionData(表);

基于这种情况,我立即在 ADFS 端点(使用 .net 域的端点)中使用它。尝试登录后,我什么也做不了。该帐户未在Censored MFA上注册。

(为了避免误解本报告,我删除了所使用的 MFA。我担心人们会认为这是一个 MFA 供应商漏洞——注意:它不是)。

我停下来了吗?还没有。我尝试寻找其他终端(例如 VPN 服务),但仍然无法登录。我尝试了大约 3 个 VPN 终端,但都无法登录。

那么,我停下来了吗?还是一样,还没有。我必须努力扩大它的影响力。如果我们报告一个问题,说我们找到了一个有效的密码,但却因为被屏蔽而无法登录,那就太不礼貌了。

在这种情况下,时间越来越紧迫!为什么?因为我确信,我的国家/地区至少进行了四次以上的尝试,因此一定会触发警报

2.4. 无需注册受审查的 MFA 即可阅读收件箱信息

2.4.1. Exchange Web 服务 (EWS) 端点!

这种情况几乎毫无希望,那么感谢真主,我想起了 BlackHills InfoSec 发布的一项关于绕过 OWA 门户上的双因素身份验证的研究。

根据他们的研究,他们(BlackHills InfoSec)表示,尽管该帐户已被双重身份验证 (2FA) 封锁(在本例中,该帐户并未被封锁,但尚未在所使用的多重身份验证 (MFA) 上注册),但我们仍有可能阅读该帐户下的所有电子邮件。这可以通过在 EWS 端点上利用常见的配置错误来实现。

我将引用一个很好的解释(并让专家向你解释,包括那些发表精彩演讲的人——尼克兰德斯的《坏人的展望与交流》 ——以及那些发布这项研究的人——来自 Black Hills Infosec 的 Beau Bullock)。

Beau 说:在 DerbyCon 期间,我旁听了 Nick Landers 的演讲,题为“Outlook & Exchange for the Bad Guys”。这是一场精彩的演讲,我强烈推荐大家去听一听。演讲期间,Nick 收到了听众的提问,询问双因素身份验证 (2FA) 能否阻止他在演讲中提到的那些攻击。Nick 的回答让我非常感兴趣。他说:“我看到一些组织在 OWA 上禁用了 2FA。所以当你访问 Outlook Web Access 时,你必须提供令牌才能完成登录。但这并不能阻止很多此类攻击,因为双因素身份验证不适用于 EWS 或自动发现页面上的 NTLM 身份验证。”

那么,EWS 是什么?Beau 的研究报告指出:“ EWS 是在 Exchange 服务器上启用的基于 Web 的 API,微软建议客户在开发需要与 Exchange 交互的客户端应用程序时使用它。该 API 允许应用程序与用户邮箱中的电子邮件、联系人、日历等进行交互。”

简而言之,在一般实施中(感谢程序所有者的解释),即使 ADFS 已受到 MFA 保护,系统所有者有时也会忘记强制其他端点使用 MFA(在本例中为 EWS 端点)。

2.4.2. 查找 EWS 端点 — 子域名枚举!

起初,我并不清楚该目标是否存在 EWS 端点配置错误。因此,我尝试进行子域名枚举。

说实话,我知道公司通常的做法是把这个 EWS 端点放在邮件/电子邮件/网页邮件子域上。但是,进行这种枚举并不浪费时间。至少只需要几分钟。而且,InshaAllah,希望结果以后能对我有用(谁知道呢,也许有一天他们会把 *.target.com 设为范围内的目标)。

注意:在这种情况下,我使用由 Screetsec 创建的Sudomy 子域名枚举工具。

几分钟后,我得到了结果。不出所料,他们有一个“ mail ”子域名。当我第一次访问 mail.target.com 时,这个子域名再次将我定向到 ADFS 端点(.net TLD)。第二次尝试时,我尝试将 EWS 放在 mail.target.com 后面,结果出现了登录提示。

从侦察到利用EWS错误配置绕过OWA中的MFA实施

图 4 — 登录提示

当我把找到的凭证输入到这个提示符下时,我终于成功登录了!我无需提供任何 MFA 即可登录,也无需将此帐户与所使用的 MFA 一起注册。

从侦察到利用EWS错误配置绕过OWA中的MFA实施

图 5 — 未注册 MFA 即可成功登录

从这个结果出发,我决定继续我的第一个目标,那就是无需注册所使用的 MFA 即可阅读收件箱。

2.4.3. 准备环境

因此,为了读取这些账户的邮件,我们首先需要下载 MailSniper 工具(https://github.com/dafthack/MailSniper)。这款工具的主要功能是方便用户使用特定关键词搜索邮件数据。此外,它还可以帮助我们在 EWS 环境中读取邮件。

2.4.4. “绕过”

下载工具后,运行 powershell 并执行以下几个命令:

C:UsersYoKoTools> powershell.exe -exec 绕过Windows PowerShell版权所有 (C) Microsoft Corporation。保留所有权利。试用新的跨平台 PowerShell https://aka.ms/pscore6 PS C:UsersYoKoTools> cd .MailSniper-master PS C:UsersYoKoToolsMailSniper-master> Import-Module .MailSniper.ps1 PS C:UsersYoKoToolsMailSniper-master> Invoke-SelfSearch -Mailbox username @ domain.tld -ExchHostname mail.domain.tld -Remote

简而言之,有 2 个命令需要执行,它们是:

  • 导入模块 .MailSniper.ps1
  • Invoke-SelfSearch-邮箱用户名domain.tld -ExchHostname mail.domain.tld -Remote

请注意,输入命令后,会弹出一个凭证框,要求输入[email protected]凭证。我们只需再次输入凭证即可。

从侦察到利用EWS错误配置绕过OWA中的MFA实施

图 6 — Windows PowerShell 凭据请求

如果一切正确,那么工具将向我们提供“它们”是否找到收件箱文件夹的信息。

[*]在命令管道位置 1尝试使用 Exchange 版本 Exchange2010 cmdlet Get-Credential为以下参数提供值:凭据[*] 使用 EWS URL https://mail.domain.tld/EWS/Exchange.asmx [***] 找到文件夹:收件箱[*] 现在搜索邮箱:[email protected]术语 *password* *creds* *credentials*。

2.4.5. 结果

几分钟后(取决于邮件中搜索到的关键词的数量),我们就能得到结果。在本例中,与该账户的密码、凭证或凭据相关的信息就是社交媒体信息。

从侦察到利用EWS错误配置绕过OWA中的MFA实施

图 7 — 使用 MailSniper 通过 EWS 访问目标收件箱

为了确保结果正确,我还尝试用相同的账号和密码登录了那些社交媒体。结果,正确!可惜的是,社交媒体行为保护机制要求我输入正确的电话号码(这很正常,因为我尝试过从其他国家/地区登录)。

从侦察到利用EWS错误配置绕过OWA中的MFA实施

图 8 — 另一项测试,在受害者的收件箱中查看我自己的消息

2.4.6. 再次尝试增强其影响力

也许有人会问,我们无法用这个账户登录VPN,而且我们利用这个账户进行攻击的权限也很有限(因为我们无法用它进入目标内网)。那么,我们还能用这个账户做什么呢?

嗯,至少在我看到 Black Hills Infosec 的 Beau Bullock 发布的另一项研究之前,我也有类似的疑问。简而言之,针对我们的情况,我们还可以做两件事。

2.4.6.1. 全局地址列表转储和整个帐户的密码喷洒

在我们进一步讨论之前,让我问你一个问题,系统所有者在维护多个服务帐户时常犯的错误是什么?(记住,在这种情况下,我找到了一个服务帐户)。

如果您认为系统所有者有可能另一个服务帐户(或他们管理的另一个帐户)使用相同的密码,那么我可以说答案是正确的。

所以,如果我们能够转储全局地址列表,那么如果真主愿意,我们就有机会找到其他具有相同模式的服务帐户。我们也有机会对所有找到的密码的服务帐户执行密码喷洒攻击(无需测试其他凭据,因为我相信企业中存在速率限制保护。我们只需要测试找到的一个密码)。

为了做到这一点,我们可以看到以下两项研究:

  • 第一项研究:利用 MailSniper 滥用 Exchange 邮箱权限。转储全局地址列表的方法可在本研究的“ Invoke-OpenInboxFinder ”部分找到。
  • 第二项研究:使用 MailSniper 攻击 Exchange。Beau Bullock 提供的一条实用信息是:“在测试中,我注意到 EWS 密码喷洒方法速度明显更快。Invoke-PasswordSprayOWA 和使用 15 个线程的 Burp Intruder 都花费了大约 1 小时 45 分钟才完成对 10,000 个用户的喷洒。而对 EWS 喷洒相同数量的用户仅耗时 9 分 28 秒 ” 是不是很棒?

从现在开始,我们就有机会提升它的影响力了!我说“有机会”,是因为我不确定这项技术是否有效。但通过研究报告中提出的方法,我确信它是有效的!

注意:我没有执行此操作。没有任何权限,我们无法执行此操作。(是的,在真正的攻击中,攻击者会在没有请求任何权限的情况下执行此操作,但请注意,在漏洞搜寻中,我们并没有打算进行破解。)

2.4.7. 另一种可能的情况

另一种情况是,外部攻击者可能会将此问题与社会工程活动结合起来。例如,他们假装是这些被发现账户的合法所有者,并尝试通过电子邮件欺骗(target.tld 域名)与受害者进行通信。

然后,攻击者会与内部团队“建立关系”,以确保攻击者能够完全访问该帐户(使用攻击者控制的设备/电话号码等注册MFA)。目前尚不清楚这种情况的有效性,但考虑一下风险或许是值得的。

2.5. 奖励

该报告已在一天内得到分类和奖励,并在第二天得到修复。

从侦察到利用EWS错误配置绕过OWA中的MFA实施

图 9 — 该 Bug 大约在 2 天内得到修复

三、经验教训

在本节中,我想重新添加我在一篇文章中提到的一些经验教训:

  • 以我的简单观点来看(如有错误,请指正),侦察并不总是指资产发现活动。在这种情况下,它还可以指我们尝试了解 API 的工作原理、目标的开发文化等等。

记住,在回复@Mongobug一条推文时, @NahamSec用非常简单的语言解释了侦察(recon)的定义之一:“侦察不应该仅限于寻找资产和过时的内容。它还应该理解应用程序并找到那些不易访问的功能。为了取得成功,需要在侦察和传统的应用程序黑客攻击之间取得平衡。”

从侦察到利用EWS错误配置绕过OWA中的MFA实施

  • 不要放弃阅读你在 GitHub Recon 活动中在 GitHub 仓库中找到的每一行代码。说实话,我还没有完全读完代码。我只是抓住要点,阅读参数,尝试理解流程,看看是否有任何好用的东西。
  • 据我经验,凭证并不总是放在参数后面。从这个角度出发,尝试探索你找到的存储库。
  • 请尽情享受你的漏洞搜寻活动。也许并非所有人都认同这一点,但不要总是想着赏金(尤其是如果你刚开始接触这个领域,并且从未有过相关经验)。尽量多测试“合法/官方”的目标。如果真主愿意,这可以提升你的知识、方法,以及在寻找赏金目标中的漏洞时提升你的其他方面。

我尝试从那些没有提供赏金(但开放了负责任的漏洞披露计划)的目标那里学习很多我从未接触过的技术。在这一点上,我可以说的是,那些使用的技术并不总是我们每天都会接触到的技术。换句话说,我们需要一个官方的“游乐场”(合法目标)来学习并熟悉它。

  • 尝试回归基本原则
  • 如果你觉得有人能轻而易举地做到这一点,那就试试@BruteLogic这句励志话语:“他们以为我们能轻而易举地完成任务。但这需要付出大量的努力,无数个小时的反复试验。我们花了大量时间分析搜索引擎结果,阅读大量毫无用处的信息。最终他们看到的只是表演时间。我们让它看起来很容易,但其实不然。”

从侦察到利用EWS错误配置绕过OWA中的MFA实施

  • 最后一句是我最喜欢的名言(说真的,这很美):

从侦察到利用EWS错误配置绕过OWA中的MFA实施

这些话确实极大地激励了我去分享,尽管我分享的东西并不总是好的。但在真主的允许下,我得到了很多反馈,激励我改正错误或改进。

好了,我的小文章终于到此结束了。下次再见,InshaAllah。

四、致谢

  • Th3g3nt3lman在 Bugcrowd 大学发表演讲:Github Recon 和敏感数据暴露
  • 绕过 OWA 和 Office365 门户上的双因素身份验证— Black Hills Infosec。
  • O365 MFA 绕过信息(PoC 视频)— Black Hills Infosec。
  • Nick Landers 撰写的《坏家伙的展望与交流》 — DerbyCon 6.0
  • 使用 MailSniper 滥用 Exchange 邮箱权限— Black Hills Infosec。
  • 使用 MailSniper 攻击 Exchange — Black Hills Infosec。
  • MailSniper—— https://github.com/dafthack/MailSniper
  • Screetsec 的Sudomy 子域名枚举工具。
  • 从侦察到优化 RCE 结果

公众号:安全狗的自我修养

bilibili:haidragonx

原文始发于微信公众号(安全狗的自我修养):从侦察到利用EWS错误配置绕过OWA中的MFA实施

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月14日09:27:48
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   从侦察到利用EWS错误配置绕过OWA中的MFA实施https://cn-sec.com/archives/3950808.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息