前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CVE-2020-26258&26259:XStream漏洞复现

CVE-2020-26258&26259:XStream漏洞复现

作者头像
Timeline Sec
发布2021-01-05 14:38:04
1.7K0
发布2021-01-05 14:38:04
举报
文章被收录于专栏:Timeline SecTimeline Sec

0x01 简介

XStream基于Java库,是一种OXMapping 技术,用来处理XML文件序列化的框架,在将JavaBean序列化,或将XML文件反序列化的时候,不需要其它辅助类和映射文件,使得XML序列化不再繁琐。XStream也可以将JavaBean序列化成Json或反序列化,使用非常方便。

0x02 漏洞概述

编号:CVE-2020-26258,CVE-2020-26259 2020年12月14日,XStream 发布了XStream 反序列化漏洞的风险提示。 在运行XStream的服务上,未授权的远程攻击者通过构造特定的序列化数据 ,可造成服务端请求伪造/任意文件删除。

0x03 影响版本

Xstream <= 1.4.14

0x04 环境搭建

参考链接: https://github.com/jas502n/CVE-2020-26259

使用IntelliJIDEA

在配置好maven环境以后,创建一个默认的maven项目

在pom.xml中,添加XStream依赖:

代码语言:javascript
复制
代码语言:javascript
复制
    <!-- https://mvnrepository.com/artifact/com.thoughtworks.xstream/xstream -->
    <dependencies>
        <dependency>
            <groupId>com.thoughtworks.xstream</groupId>
            <artifactId>xstream</artifactId>
            <version>1.4.14</version>
        </dependency>
    </dependencies>
代码语言:javascript
复制

到这里,我们在新建的XStream项目中引入了XStream依赖

简单使用

新建一个Test.java文件,内容如下:

代码语言:javascript
复制
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver;

class Person//JavaBean实体类
{
    private String name;
    private int age;
    public Person(String name,int age)
    {
        this.name=name;
        this.age=age;
    }
    @Override
    public String toString()
    {
        return "Person [name=" + name + ", age=" + age + "]";
    }

}

public class Test
{
    public static void main(String[] args)
    {
        Person bean=new Person("美女",18);
        XStream xstream = new XStream();
        //XML序列化
        String xml = xstream.toXML(bean);
         System.out.println(xml);
        //        //XML反序列化
        bean=(Person)xstream.fromXML(xml);
        System.out.println(bean);

    }
}

运行结果,如下图所示:

到这里,我们简单使用Xstream实现了将java对象和xml文件相互转换的过程

0x05 漏洞复现

CVE-2020-26258 SSRF

在main -> java下创建一个CVE-2020-26258.java文件,代码为

代码语言:javascript
复制
https://github.com/jas502n/CVE-2020-26259/blob/main/CVE_2020_26258.java

本地nc监听8989端口

CVE-2020-26259 任意文件删除

在main -> java下创建一个CVE-2020-26259.java文件,代码为

代码语言:javascript
复制
https://github.com/jas502n/CVE-2020-26259/blob/main/CVE_2020_26259.java

测试实现删除某一个文件:

运行后,ceshi.txt已被删除:

动图:

0x06 修复方式

将XStream升级到最新版本。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Timeline Sec 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档