赞
踩
由于java开发人员在编写代码时重写了 readObject 方法,在重写的 readObject 方法中调用其他函数实现链式调用最终调用到了危险函数,从而形成反序列化漏洞
漏洞等级:高危
Java反序列化漏洞的危害主要在于它可能被攻击者利用来执行恶意代码,从而实现对目标系统的攻击。具体来说,当应用程序从不可信的数据源进行反序列化操作时,攻击者可以通过构造恶意的序列化数据,使得应用程序在反序列化过程中执行任意代码。这样,攻击者就能够控制目标系统,窃取敏感信息,或者进行其他恶意行为。
这是我重写了readObject方法
public Object Unserialize(String filename) throws IOException, ClassNotFoundException {
Runtime.getRuntime().exec("calc");
// 创建一个FileInputStream对象,它将创建一个新的文件输入流,允许从指定的文件中读取字节。
FileInputStream FI = new FileInputStream(filename);
// 创建一个ObjectInputStream对象,它将创建一个新的对象输入流,用于从之前创建的文件输入流中读取并反序列化对象。
ObjectInputStream OIS = new ObjectInputStream(FI);
// 使用ObjectInputStream的readObject方法从文件输入流中读取并反序列化对象,然后返回这个对象。
return OIS.readObject();
中间我调用了系统命令执行函数
我们进行反序列化时进行调用
可以看到计算机弹出来了
详细代码可查看序列化和反序列化
Apache Commons Collections 反序列化漏洞是Java反序列化漏洞的一个典型案例。在这个漏洞中,攻击者可以通过构造恶意的序列化数据,利用Apache Commons Collections库中的某些函数进行反序列化操作,从而执行任意代码。这个漏洞曾经被广泛利用,对许多Java应用造成了严重威胁。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。