2022世界杯预选赛中国赛程(www.9cx.net):ProxyShell行使剖析1——CVE-2021-34473

新2会员手机管理端

www.22223388.com)实时更新发布最新最快的新2 *** 线路、新2会员线路、新2备用登录网址、新2会员手机管理端、新2手机版登录网址、新2皇冠登录网址。

,

0x00 前言

Orange在今年的BlackHat演讲中先容了在Pwn2Own 2021上使用的Microsoft Exchange攻击链,他分享的内容给了我很大的启发。

本文仅在手艺研究的角度纪录我在研究ProxyShell中的细节,剖析行使思绪。

0x01 简介

本文将要先容以下内容:

◼调试环境搭建

◼破绽剖析

◼行使思绪

0x02 调试环境搭建

1.禁用Visual Studio中的调试优化

设置环境变量COMPLUS_ZapDisable=1

重启系统

2.查看Exchange中对应的历程

执行下令:


可以获得Exchange的所有历程和对应的pid,如下图


3.使用dnSpy举行调试

打开相关的dll文件并在待调试的位置下断点,选择附加历程更先调试

若是不确定待调试的Exchange历程,可以选择所有w3wp.exe

0x03 破绽调试

使用dnSpy打开文件C:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\bin\Microsoft.Exchange.FrontEndHttpProxy.dll

依次定位到Microsoft.Exchange.Clients.Owa.Core -> Microsoft.Exchange.HttpProxy

关于SSRF破绽(CVE-2021-34473)的破绽原理可以参考如下文章:

https://peterjson.medium.com/reproducing-the-proxyshell-pwn2own-exploit-49743a4ea9a1

0x04 破绽剖析

1.判断破绽是否存在

这里使用Orange原文给出的方式:

接见:https:///autodiscover/autodiscover.json?@foo.com/mapi/nspi/?&Email=autodiscover/autodiscover.json%3f@foo.com

若是破绽存在,返回如下效果:

如下图

2022世界杯预选赛中国赛程www.9cx.net)实时更新比分2022世界杯预选赛中国赛程数据,2022世界杯预选赛中国赛程全程高清免费不卡顿,100%原生直播,2022世界杯预选赛中国赛程这里都有。给你一个完美的观赛体验。


权限为System

url地址中的"/mapi/nspi"为Exchange服务器接见的最终地址

url地址中的"?&Email=autodiscover/autodiscover.json%3f@foo.com"作为参数,这是为了知足破绽触发的条件。此处还可以通过设置Cookie的内容为"Email=Autodiscover/autodiscover.json%3f@foo.com"实现相同的效果,源码如下图


2.通过SSRF破绽挪用Exchange Web Service(EWS)

Exchange Web Service(EWS)对应邮箱用户的邮件内容,关于EWS的使用可以参考之前的文章《Exchange Web Service(EWS)开发指南2——SOAP XML message》,通过发送XML请求,能够获得对应用户的邮件内容。

由于SSRF默认的权限为System,以是我们需要找到能够模拟随便邮箱用户的方式,才气够读取对应用户的邮件内容。

经由一段时间的调试,我没有找到通过参数指定EWS认证用户的方式,然则这里我们可以使用Exchange提权破绽(CVE-2018-8581)中的技巧,通过在Header中使用SerializedSecurityContext,指定SID可以实现身份伪装,从而以指定用户身份举行EWS挪用操作

代码地址:

https://github.com/thezdi/PoC/blob/master/CVE-2018-8581/serverHTTP_relayNTLM.py,L48-L64

Header名堂如下:


为了获得用户的SID,我们可以使用Exchange SSRF破绽(CVE-2021-26855)中的技巧,通过接见/autodiscover/autodiscover.xml获得legacyDn,作为参数继续接见/mapi/em *** db,就能够获得用户对应的sid

至此,整个行使链完成,流程如下:

1、接见/autodiscover/autodiscover.xml获得legacyDn

2、接见/mapi/em *** db获得用户对应的sid 

3、在Header中使用SerializedSecurityContext,指定用户身份举行EWS挪用操作

3.枚举邮箱用户列表

我在之前的文章《渗透技巧——获得Exchange GlobalAddressList的方式》提到过:“Exchange GlobalAddressList(全局地址列表)包罗Exchange组织中所有邮箱用户的邮件地址,只要获得Exchange组织内任一邮箱用户的凭证,就能够通过GlobalAddressList导出其他邮箱用户的邮件地址。”

这里也是可以举行行使的,我们只需要使用FindPeople操作,做一个遍历并举行效果去重即可

实现细节可以参考之前开源的剧本:https://github.com/3gstudent/Homework-of-Python/blob/master/ewsManage.py

4.默认邮箱用户

为了读取Exchange GlobalAddressList(全局地址列表),我们需要获得Exchange组织内任一邮箱用户的凭证,对应到这个破绽,我们仅仅需要邮箱用户名称

Exchange中默认存在以下四个用户可供使用:

◼SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}

◼SystemMailbox{e0dc1c29-89c3-4034-b678-e6c29d823ed9}

◼SystemMailbox{D0E409A0-AF9B-4720-92FE-AAC869B0D201}(Exchange 2016 CU8 and later)

◼SystemMailbox{2CE34405-31BE-455D-89D7-A7C7DA7A0DAA}(Exchange 2016 CU8 and later)

参考资料:

https://docs.microsoft.com/en-us/exchange/architecture/mailbox-servers/recreate-arbitration-mailboxes?view=exchserver-2019

0x05 小结

CVE-2021-34473作为ProxyShell攻击链的基础,验证简朴,危害伟大。站在防御的角度,建议用户尽快更新补丁。

本文为 3gstudent 原创稿件,授权嘶吼独家公布,

  • 评论列表:

添加回复:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。