当前位置: 首页 > news >正文

java反序列化漏洞详解

java反序列化漏洞

文章目录

  • java反序列化漏洞
    • 漏洞原理
    • 漏洞评级
    • 漏洞危害
    • 漏洞验证
    • 漏洞防御
    • 典型案例

漏洞原理

由于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();

中间我调用了系统命令执行函数
我们进行反序列化时进行调用
在这里插入图片描述
可以看到计算机弹出来了

详细代码可查看序列化和反序列化

漏洞防御

  • 升级Java版本
  • 禁用反序列化功能
  • 使用安全反序列化库
  • 限制反序列化的权限
  • 验证输入数据
  • 加密反序列化的数据
  • 在重写方法时尽可能的不要调用危险函数

典型案例

Apache Commons Collections 反序列化漏洞是Java反序列化漏洞的一个典型案例。在这个漏洞中,攻击者可以通过构造恶意的序列化数据,利用Apache Commons Collections库中的某些函数进行反序列化操作,从而执行任意代码。这个漏洞曾经被广泛利用,对许多Java应用造成了严重威胁。

相关文章:

  • requests库的学习(详细篇)
  • 实例讲解Simulink的MATLAB Function模块
  • git本地账户如何从一台电脑迁移到另外一台
  • mac 修改 hosts 文件
  • 使用v-md-editor开发sql查看器--实战
  • SpringBoot中的classpath都包含啥
  • 7000家门店的盈利增长,从导购的人效提升开始
  • ES 查询语法-详解
  • 2. OpenHarmony源码下载
  • 腾讯云标准型SA5云服务器CPU性能测评
  • PTA 斯诺克
  • excel自己记录
  • 【Java 进阶篇】Jedis:让Java与Redis轻松对话的利器
  • 《云计算:云端协同,智慧互联》
  • Qt ListWidget
  • ECMAScript6(0):ES6简明参考手册
  • Git的一些常用操作
  • Javascript设计模式学习之Observer(观察者)模式
  • leetcode98. Validate Binary Search Tree
  • linux学习笔记
  • opencv python Meanshift 和 Camshift
  • springMvc学习笔记(2)
  • SQLServer之创建显式事务
  • 编写符合Python风格的对象
  • 分布式事物理论与实践
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 小程序 setData 学问多
  • 正则与JS中的正则
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • ​Java基础复习笔记 第16章:网络编程
  • ​第20课 在Android Native开发中加入新的C++类
  • ​数据链路层——流量控制可靠传输机制 ​
  • # Redis 入门到精通(八)-- 服务器配置-redis.conf配置与高级数据类型
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (接口自动化)Python3操作MySQL数据库
  • (三)Kafka离线安装 - ZooKeeper开机自启
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (微服务实战)预付卡平台支付交易系统卡充值业务流程设计
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (原創) 物件導向與老子思想 (OO)
  • (状压dp)uva 10817 Headmaster's Headache
  • .bat批处理出现中文乱码的情况
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .NET BackgroundWorker
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .net 简单实现MD5
  • .net 托管代码与非托管代码