java反序列化

java反序列化

前言之前我们大致学习了php反序列化的内容,本节我们来了解一下java反序列化

1.1 java反序列化基础

1 功能特性:不像php反序列化中将对象转换为字符串,在java中,对象序列化后的结果是字节流。在java中反序

列化操作一般应用在导入模板文件,网络通信,数据传输,日志格式化存储等操作。

2 数据特性:一段数据要是以rO0AB 开头,那么基本可以确定这是java序列化base64加密的数据,如果是以aced

开头,那么他就是一段java序列化的16进制

3 反序列化判断:

可以通过查看java中是否引用Serializable接口来判断是否进行序列化,我们来查看一个序列化和反序列化的具体例子:

package SerialTest;

import java.io.*;

public class SerializableTest {
    public static void main(String[] args) throws Exception {
        serialPerson();
        Person person = deserialPerson();
        System.out.println(person);
    }

    /**
     * Person对象序列化
     * @throws IOException
     */
    private static void serialPerson() throws IOException {
        Person person = new Person("jack", 28, "男", 101);

        ObjectOutputStream oos = new ObjectOutputStream(
                new FileOutputStream(new File("d:/person.txt"))
        );
        oos.writeObject(person);
        System.out.println("person 对象序列化成功!");
        oos.close();
    }

    /**
     * Person对象反序列化
     * @return
     * @throws Exception
     */
    private static Person deserialPerson() throws Exception {
        ObjectInputStream ois = new ObjectInputStream(
                new FileInputStream(new File("d:/x.txt"))
        );
        Person person = (Person)ois.readObject();
        System.out.println("person 对象反序列化成功!");
        //Runtime.getRuntime().exec("calc.exe");
        return person;
    }
}

需要注意的是,打开输出流操作需要做异常处理

oos.writeObject(man);将对象序列化后以字节码的形式存储在文件中

我们将写入数据后的文件用可以查看十六进制数据的软件打开,可以发现在十六进制数据的头部有着aced,这说

明这是一段java序列化后的16进制数据

几种常见的序列化和反序列化协议: xml, soap json protobuf

1.2 java反序列化产生原因

和php反序列化漏洞相同,如果我们可以控制反序列化读取的内容,我们就可以通过构造恶意序列化代码进行攻击

常用的java反序列化payload构造工具有ysoserial,该工具是jar包形式,下载好后选择并执行相应的反序列化类型

就可以获得恶意反序列化代码

1.3 java反序列化漏洞的利用

对于java反序列化漏洞,我们在进行分析时若是发现反序列化的数据可以被我们控制,然后根据其加载的不同的包

用工具生成不同的payload,根据加载的包不同能实现的功能也不同。

1.4 解密分析

对于我们生成的payload,我们正常是无法直接阅读的,所以也无法进行更改等操作,因为是字节流,我们这时候

使用工具SerializationDumper 对其进行处理就可以进行更改和解析,解密出的结果是可读的。

posted @ 2024-04-30 00:50  折翼的小鸟先生  阅读(9)  评论(0编辑  收藏  举报