分析CVE-2018-8581:如何在MicrosoftExchange上冒充用户

栏目: 编程工具 · 发布时间: 5年前

内容简介:今天,我们一起看一看攻击者(未经身份验证的用户)如何利用这个Exchange漏洞来在Exchange服务器上冒充合法用户并进行恶意操作。那么接下来我们直奔主题,我们将给大家详细分析这个服务器端请求伪造(SSRF)漏洞,并演示攻击者如何伪装成合法用户。

分析CVE-2018-8581:如何在MicrosoftExchange上冒充用户

写在前面的话

今天,我们一起看一看攻击者(未经身份验证的用户)如何利用这个Exchange漏洞来在Exchange服务器上冒充合法用户并进行恶意操作。

那么接下来我们直奔主题,我们将给大家详细分析这个服务器端请求伪造(SSRF)漏洞,并演示攻击者如何伪装成合法用户。

漏洞分析

在实施攻击的过程中,攻击者需要利用一个SSRF漏洞并结合其他安全缺陷来实现身份伪装。Exchange允许任意用户指定URL地址来实现订阅推送,而服务器会直接尝试向这个URL地址发送通知。漏洞之所以存在,是因为Exchange服务器使用了 CredentialCache.DefaultCredentials 来进行网络连接:

分析CVE-2018-8581:如何在MicrosoftExchange上冒充用户

在Exchange Web服务中,CredentialCache.DefaultCredentials是以NT AUTHORITY\SYSTEM权限运行的。这将导致Exchange服务器向攻击者的服务器发送NTLM哈希。Exchange服务器还会默认设置下列注册表键:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\DisableLoopbackCheck= 1

此时,攻击者将能够使用这些NTLM哈希来进行HTTP身份验证。比如说,他们可以使用这些哈希来访问Exchange Web服务(EWS)。因为它是以NT AUTHORITY\SYSTEM权限运行的,攻击者就可以利用TokenSerializationRight获取到特权“会话”,并使用一个SOAP头来冒充特定用户。

下面给出的SOAP头样本中,攻击者使用了SID(S-1-5-21-4187549019-2363330540-1546371449-500)来伪装成管理员用户:

分析CVE-2018-8581:如何在MicrosoftExchange上冒充用户

漏洞利用

为了方便演示,我们使用了下面这两个 Python 脚本:

1、 serverHTTP_relayNTLM.py:它可以从入站连接中获取NTLM哈希,并将其用于EWS身份验证。

2、 Exch_EWS_pushSubscribe.py:让PushSubscription调用我们的serverHTTP_relayNTLM.py。

脚本下载地址:【 传送门 】(还需Python-ntlm模块)

首先,我们需要获取到目标用户的SID,大致方法如下:

1、 以认证用户的身份登录OWA:

分析CVE-2018-8581:如何在MicrosoftExchange上冒充用户

2、 接下来,创建新的文件夹,我们这里使用“tempFold”。点击下拉菜单中的“Permissions”:

分析CVE-2018-8581:如何在MicrosoftExchange上冒充用户

3、 添加需要冒充的用户电子邮件地址,这里我们使用victim@contoso.local:

分析CVE-2018-8581:如何在MicrosoftExchange上冒充用户

4、 按下F12键,选择“Network”标签,然后再次点击新创建文件夹下拉菜单中的“Permissions”:

分析CVE-2018-8581:如何在MicrosoftExchange上冒充用户

5、 我们需要检查第一个service.svc?action=GetFolder请求返回的响应,查看方法:

Body->ResponseMessages->Items->0->Folders->0->PermissionSet->Permissions->N->UserId->SID

样本中的N为2,但是你可以根据你自己的情况来选择正确的。PrimarySmtpAddress为目标用户的邮件地址,如果响应中不包含PermissionSet参数,我们就需要查看另一个service.svc?action=GetFolder请求了:

分析CVE-2018-8581:如何在MicrosoftExchange上冒充用户

6、 我们选择使用serverHTTP_relayNTLM.py中的SID来进行操作,我们还需要选择一个没有被屏蔽的TCP端口来转发Exchange服务器上的出站连接。比如说,TCP端口8080可用的话。

接下来,使用真实信息修改serverHTTP_relayNTLM.py:

分析CVE-2018-8581:如何在MicrosoftExchange上冒充用户

设置好正确的脚本变量后,我们就可以开始了:

分析CVE-2018-8581:如何在MicrosoftExchange上冒充用户

7、 下一步就是设置Exch_EWS_pssushSubscribe.py脚本中的变量了:

分析CVE-2018-8581:如何在MicrosoftExchange上冒充用户

完成后,我们就可以执行脚本了:

分析CVE-2018-8581:如何在MicrosoftExchange上冒充用户

8、 最后一步,我们需要利用事件触发机制来推送通知。我们可以进行类似创建和发送新邮件,或者删除新创建的文件夹来实现:

分析CVE-2018-8581:如何在MicrosoftExchange上冒充用户

成功后,我们的serverHTTP_relayNTLM.py就可以从Exchange服务器那里收到入站连接了:

分析CVE-2018-8581:如何在MicrosoftExchange上冒充用户

攻击成功后,我们将在响应中看到UpdateInboxRulesResponse ResponseClass=”Success”。这也就意味着,入站规则已经成功添加进目标用户的邮箱了,所有的入站邮件都会被转发给攻击者。

接下来,我们需要测试这个新规则。我们需要利用任意邮箱账号来给目标用户发送一封邮件,但不要用我们新添加的规则(attacker@contoso.local),因为如果转发地址和目的地址相同的话规则就无效了。现在,登录管理员账号,发送某些信息给目标用户:

分析CVE-2018-8581:如何在MicrosoftExchange上冒充用户

检查攻击者的收件箱,我们就可以看到这封邮件了:

分析CVE-2018-8581:如何在MicrosoftExchange上冒充用户

没错,就是这么简单。希望可以给大家平常的挖洞带来一些灵感!

*参考来源: zerodayinitiative ,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

互联网运营实战手册

互联网运营实战手册

李春雷 / 人民邮电出版社 / 2017-4 / 49.80元

为什么网络推广做不起来?微信文章也是套路?标题党的背后是什么?把服务器搞瘫痪的活动是怎么玩出来的?社群究竟要如何运营?数据又该如何运营?你会任务分解吗? 《互联网运营实战手册》详细剖析了网站(产品)的运营技巧与实战,涵盖实用的互联网运营方法,是作者从多年的实战中提炼出的运营心得和精华,涉及运营技巧、运营工具和运营思维方法。详细讲解了用户运营、内容运营、新媒体运营、社群运营、活动运营和数据运营......一起来看看 《互联网运营实战手册》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具