电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Java序列化反序列化原理及漏洞解決方案

瀏覽:2日期:2022-08-27 14:25:34

Java序列化

Java 提供了一種對(duì)象序列化的機(jī)制,該機(jī)制中,一個(gè)對(duì)象可以被表示為一個(gè)字節(jié)序列,該字節(jié)序列包括該對(duì)象的數(shù)據(jù)、有關(guān)對(duì)象的類(lèi)型的信息和存儲(chǔ)在對(duì)象中數(shù)據(jù)的類(lèi)型。

Java反序列化

反序列化就是將字節(jié)序列恢復(fù)為Java對(duì)象的過(guò)程

整個(gè)過(guò)程都是 Java 虛擬機(jī)(JVM)獨(dú)立的,也就是說(shuō),在一個(gè)平臺(tái)上序列化的對(duì)象可以在另一個(gè)完全不同的平臺(tái)上反序列化該對(duì)象,因此可以實(shí)現(xiàn)多平臺(tái)之間的通信、對(duì)象持久化存儲(chǔ),主要有如下幾個(gè)應(yīng)用場(chǎng)景。

HTTP:多平臺(tái)之間的通信,管理等

RMI:是 Java 的一組擁護(hù)開(kāi)發(fā)分布式應(yīng)用程序的 API,實(shí)現(xiàn)了不同操作系統(tǒng)之間程序的方法調(diào)用。值得注意的是,RMI 的傳輸 100% 基于反序列化,Java RMI 的默認(rèn)端口是1099端口。

JMX:JMX 是一套標(biāo)準(zhǔn)的代理和服務(wù),用戶可以在任何 Java 應(yīng)用程序中使用這些代理和服務(wù)實(shí)現(xiàn)管理,中間件軟件 WebLogic 的管理頁(yè)面就是基于 JMX 開(kāi)發(fā)的,而 JBoss 則整個(gè)系統(tǒng)都基于 JMX 構(gòu)架。

系列化反序列化基礎(chǔ)

序列化和反序列化本身并不存在問(wèn)題。但當(dāng)輸入的反序列化的數(shù)據(jù)可被用戶控制,那么攻擊者即可通過(guò)構(gòu)造惡意輸入,讓反序列化產(chǎn)生非預(yù)期的對(duì)象,在此過(guò)程中執(zhí)行構(gòu)造的任意代碼。

一個(gè)類(lèi)的對(duì)象能夠序列化的成功需要兩個(gè)條件

該類(lèi)必須實(shí)現(xiàn) java.io.Serializable 接口 該類(lèi)的所有屬性必須是可序列化的。如果有一個(gè)屬性不是可序列化的,則該屬性必須注明是短暫的。

漏洞基本原理

簡(jiǎn)單的反序列化Demo

首先定義對(duì)象類(lèi)Persion,包含兩個(gè)參數(shù)

public class implements java.io.Serializable{ public String name; public int age; public void info(){ System.out.println('Name:'+this.name+';nAge:'+this.age); }}

在主類(lèi)中聲明對(duì)象,并且將對(duì)象序列化為二進(jìn)制文件,將其存儲(chǔ)到硬盤(pán)中

import java.io.*;public class Main{ public static void main(String [] args){ 將對(duì)象序列化為二進(jìn)制文件 Persion p = new Persion(); p.name = 'Joner'; p.age = 18; try { //打開(kāi)一個(gè)文件輸入流 FileOutputStream fileOut = new FileOutputStream('D:testtest.db'); //建立對(duì)象輸入流 ObjectOutputStream out = new ObjectOutputStream(fileOut); //輸出反序列化對(duì)象 out.writeObject(p); out.close(); fileOut.close(); System.out.printf('保存成功'); }catch(IOException i){ i.printStackTrace(); }}

進(jìn)行反序列化

import java.io.*;public class Main{ public static void main(String [] args){ /*從二進(jìn)制文件中提取對(duì)象*/ Persion persion = null; try{ FileInputStream fileInputStream = new FileInputStream('D:testtest.db'); //建立對(duì)象輸入流 ObjectInputStream inputStream = new ObjectInputStream(fileInputStream); persion = (Persion) inputStream.readObject(); inputStream.close(); fileInputStream.close(); }catch (ClassNotFoundException c){ System.out.println('對(duì)象未找到'); c.printStackTrace(); return; } catch (FileNotFoundException e) { e.printStackTrace(); return; } catch (IOException e) { e.printStackTrace(); return; } System.out.println('反序列化對(duì)象.......'); System.out.println('Name:'+persion.name); System.out.println('Age:'+persion.age); }}

查看test.db文件的內(nèi)容可以看見(jiàn)如下內(nèi)容

其中 AC ED 00 05 是java 序列化內(nèi)容的特征,其中00 05 是版本信息,base64編碼后為ro0AB

反序列化漏洞Demo

在上面的Demo中可以看到,進(jìn)行反序列化時(shí)會(huì)調(diào)用readObject()方法,如果readObject方法書(shū)寫(xiě)不當(dāng)就會(huì)引發(fā)漏洞。

import java.io.*;public class Main{ public static void main(String [] args)throws Exception{ Unsafeclass unsafeclass = new Unsafeclass(); unsafeclass.name = 'hhhhh'; FileOutputStream fileOutputStream = new FileOutputStream('object'); ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream); //將對(duì)象寫(xiě)入object文件 objectOutputStream.writeObject(unsafeclass); objectOutputStream.close(); //從文件中反序列化對(duì)象 FileInputStream fileInputStream = new FileInputStream('object'); ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream); //恢復(fù)對(duì)象 Unsafeclass objectFormDisk = (Unsafeclass)objectInputStream.readObject(); System.out.println(objectFormDisk.name); objectOutputStream.close(); }}class Unsafeclass implements Serializable{ public String name; //重寫(xiě)readObject()方法 private void readObject(java.io.ObjectInputStream inputStream ) throws IOException , ClassNotFoundException{ //執(zhí)行默認(rèn)的readObdect()方法 inputStream.defaultReadObject(); //執(zhí)行打開(kāi)計(jì)算器命令 Runtime.getRuntime().exec('calc.exe'); }}

程序運(yùn)行過(guò)程為:

UnsafeClass類(lèi)背序列化進(jìn)入object文件 從object文件中恢復(fù)對(duì)象 調(diào)用被恢復(fù)對(duì)象的readObject()方法 命令被執(zhí)行

這樣看感覺(jué)并不會(huì)有人會(huì)這樣寫(xiě)readobject()這個(gè)方法,而且一些成熟的框架都會(huì)有防范反序列化的方法,但仍有很大比例的反序列化漏洞,這主要是使用了不安全的庫(kù)造成的。上面只是介紹了簡(jiǎn)單的Java反序列化過(guò)程,接下來(lái)會(huì)有一篇文章介紹反序列化漏洞檢測(cè)方法以及復(fù)現(xiàn)一些經(jīng)典反序列化漏洞。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 磁棒电感生产厂家-电感器厂家-电感定制-贴片功率电感供应商-棒形电感生产厂家-苏州谷景电子有限公司 | 发电机组|柴油发电机组-批发,上柴,玉柴,潍柴,康明斯柴油发电机厂家直销 | 运动木地板_体育木地板_篮球馆木地板_舞台木地板-实木运动地板厂家 | 飞行者联盟-飞机模拟机_无人机_低空经济_航空技术交流平台 | 合肥网带炉_安徽箱式炉_钟罩炉-合肥品炙装备科技有限公司 | 自动气象站_气象站监测设备_全自动气象站设备_雨量监测站-山东风途物联网 | 预制围墙_工程预制围墙_天津市瑞通建筑材料有限公司 | 单螺旋速冻机-双螺旋-流态化-隧道式-食品速冻机厂家-广州冰泉制冷 | 交通信号灯生产厂家_红绿灯厂家_电子警察监控杆_标志杆厂家-沃霖电子科技 | 香港新时代国际美容美发化妆美甲培训学校-26年培训经验,值得信赖! | 运动木地板_体育木地板_篮球馆木地板_舞台木地板-实木运动地板厂家 | 防勒索软件_数据防泄密_Trellix(原McAfee)核心代理商_Trellix(原Fireeye)售后-广州文智信息科技有限公司 | 成都离婚律师|成都结婚律师|成都离婚财产分割律师|成都律师-成都离婚律师网 | 危废处理系统,水泥厂DCS集散控制系统,石灰窑设备自动化控制系统-淄博正展工控设备 | 龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司_龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司 | 无菌水质袋-NASCO食品无菌袋-Whirl-Pak无菌采样袋-深圳市慧普德贸易有限公司 | 京马网,京马建站,网站定制,营销型网站建设,东莞建站,东莞网站建设-首页-京马网 | 工业胀紧套_万向节联轴器_链条-规格齐全-型号选购-非标订做-厂家批发价格-上海乙谛精密机械有限公司 | 粘度计NDJ-5S,粘度计NDJ-8S,越平水分测定仪-上海右一仪器有限公司 | 螺旋压榨机-刮泥机-潜水搅拌机-电动泥斗-潜水推流器-南京格林兰环保设备有限公司 | 上海盐水喷雾试验机_两厢式冷热冲击试验箱-巨怡环试 | 东莞螺杆空压机_永磁变频空压机_节能空压机_空压机工厂批发_深圳螺杆空压机_广州螺杆空压机_东莞空压机_空压机批发_东莞空压机工厂批发_东莞市文颖设备科技有限公司 | 玄米影院| 高楼航空障碍灯厂家哪家好_航空障碍灯厂家_广州北斗星障碍灯有限公司 | ET3000双钳形接地电阻测试仪_ZSR10A直流_SXJS-IV智能_SX-9000全自动油介质损耗测试仪-上海康登 | 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 - 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 | 量子管通环-自清洗过滤器-全自动反冲洗过滤器-北京罗伦过滤技术集团有限公司 | 二手Sciex液质联用仪-岛津气质联用仪-二手安捷伦气质联用仪-上海隐智科学仪器有限公司 | 苹果售后维修点查询,苹果iPhone授权售后维修服务中心 – 修果网 拼装地板,悬浮地板厂家,悬浮式拼装运动地板-石家庄博超地板科技有限公司 | 英国雷迪地下管线探测仪-雷迪RD8100管线仪-多功能数字听漏仪-北京迪瑞进创科技有限公司 | 药品冷藏箱厂家_低温冰箱_洁净工作台-济南欧莱博电子商务有限公司官网 | 南京种植牙医院【官方挂号】_南京治疗种植牙医院那个好_南京看种植牙哪里好_南京茀莱堡口腔医院 尼龙PA610树脂,尼龙PA612树脂,尼龙PA1010树脂,透明尼龙-谷骐科技【官网】 | 北京宣传片拍摄_产品宣传片拍摄_宣传片制作公司-现像传媒 | 塑料检查井_双扣聚氯乙烯增强管_双壁波纹管-河南中盈塑料制品有限公司 | 黄石东方妇产医院_黄石妇科医院哪家好_黄石无痛人流医院 | 北京自然绿环境科技发展有限公司专业生产【洗车机_加油站洗车机-全自动洗车机】 | 上海律师事务所_上海刑事律师免费咨询平台-煊宏律师事务所 | 丁基胶边来料加工,医用活塞边角料加工,异戊二烯橡胶边来料加工-河北盛唐橡胶制品有限公司 | 数显恒温油浴-电砂浴-高温油浴振荡器-常州迈科诺仪器有限公司 | 留学生辅导网-在线课程论文辅导-留学生挂科申诉机构 | 压力控制器,差压控制器,温度控制器,防爆压力控制器,防爆温度控制器,防爆差压控制器-常州天利智能控制股份有限公司 |