java反序列化漏洞(北大青鸟设计培训:如何防止java编程语言序列化网络攻击)

2024-04-05 18:10:05 9

java反序列化漏洞(北大青鸟设计培训:如何防止java编程语言序列化网络攻击)

本文目录

北大青鸟设计培训:如何防止java编程语言序列化网络攻击

***隐藏网址***什么是序列化?自从1997年发布JDK1.1以来,序列化已经存在于Java平台中。它用于在套接字之间共享对象表示,或者将对象及其状态保存起来以供将来使用(反序列化)。在JDK10及更低版本中,序列化作为java.base包和java.io.Serializable方法的一部分存在于所有的系统中。序列化的挑战和局限序列化的局限主要表现在以下两个方面:出现了新的对象传输策略,例如JSON、XML、ApacheAvro、ProtocolBuffers等。1997年的序列化策略无法预见现代互联网服务的构建和攻击方式。进行序列化漏洞攻击的基本前提是找到对反序列化的数据执行特权操作的类,然后传给它们恶意的代码。序列化在哪里?如何知道我的应用程序是否用到了序列化?要移除序列化,需要从java.io包开始,这个包是java.base模块的一部分。常见的使用场景是:实现Serializable接口和(可选)serialversionuid长整型字段。使用ObjectInputStream或ObjectOutputStream。使用严重依赖序列化的库,例如:Xstream、Kryo、BlazeDS和大多数应用程序服务器。使用这些方法的开发人员应考虑使用其他存储和读回数据的替代方法。EishaySmith发布了几个不同序列化库的性能指标。在评估性能时,需要在基准度量指标中包含安全方面的考虑。默认的Java序列化“更快”一些,但漏洞也会以同样的速度找上门来。我们该如何降低序列化缺陷的影响?项目Amber包含了一个关于将序列化API隔离出来的讨论。我们的想法是将序列化从java.base移动到单独的模块,这样应用程序就可以完全移除它。在确定JDK11功能集时并没有针对该提议得出任何结果,但可能会在未来的Java版本中继续进行讨论。通过运行时保护来减少序列化暴露一个可以监控风险并自动化可重复安全专业知识的系统对于很多企业来说都是很有用的。Java应用程序可以将JVMTI工具嵌入到安全监控系统中,通过插桩的方式将传感器植入到应用程序中。其他有用的安全技术在进行维护时,可以不需要手动列出一长串东西,而是使用像OWASPDependency-Check这样的系统,它可以识别出已知安全漏洞的依赖关系,并提示进行升级。也可以考虑通过像DependABot这样的系统进行库的自动更新。虽然用意很好,但默认的Oracle序列化过滤器存在与SecurityManager和相关沙箱漏洞相同的设计缺陷。因为需要混淆角色权限并要求提前了解不可知的事物,限制了这个功能的大规模采用:系统管理员不知道代码的内容,所以无法列出类文件,而开发人员不了解环境,甚至DevOps团队通常也不知道系统其他部分(如应用程序服务器)的需求。

如何修复webphere java反序列化漏洞

1,装个电脑管家到电脑上2,然后打开工具箱,找到修复漏洞的功能3,最后对检测出来的电脑漏洞,一键修复就可以了

序列化与反序列化

把对象转换为字节序列的过程称为对象的序列化 。    把字节序列恢复为对象的过程称为对象的反序列化 。   对象的序列化主要有两种用途:   1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;   2) 在网络上传送对象的字节序列。

在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是Web服务器中的Session对象,当有 10万用户并发访问,就有可能出现10万个Session对象,内存可能吃不消,于是Web容器就会把一些seesion先序列化到硬盘中,等要用了,再把保存在硬盘中的对象还原到内存中。

当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。

java.io.ObjectOutputStream代表对象输出流,它的writeObject(Object obj)方法可对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中。   java.io.ObjectInputStream代表对象输入流,它的readObject()方法从一个源输入流中读取字节序列,再把它们反序列化为一个对象,并将其返回。   只有实现了Serializable和Externalizable接口的类的对象才能被序列化。Externalizable接口继承自 Serializable接口,实现Externalizable接口的类完全由自身来控制序列化的行为,而仅实现Serializable接口的类可以 采用默认的序列化方式 。   对象序列化包括如下步骤:   1) 创建一个对象输出流,它可以包装一个其他类型的目标输出流,如文件输出流;   2) 通过对象输出流的writeObject()方法写对象。

对象反序列化的步骤如下:   1) 创建一个对象输入流,它可以包装一个其他类型的源输入流,如文件输入流;   2) 通过对象输入流的readObject()方法读取对象。

输出如下

输出如下

在序列化时显示指定serialVersionUID作为版本号,凡是实现Serializable接口的类都有一个表示序列化版本标识符的静态变量,如果不显示指定,jvm会隐式给我们随机生成一个serialVersionUID,这个serialVersionUID是根据对象的信息生成的,如果我们对序列化对象有所改动的话,serialVersionUID也会随之改动,再反序列化就会因serialVersionUID不一致而报错、 示例:

序列化和反序列化跟上面一样

反序列化

此时是正常且成功的,但是,我们如果现在在User对象新增一个属性

上面我说,serialVersionUID是根据对象信息生成的,现在对象多了一个属性,信息已经改变,再次生成的serialVersionUID 已经和刚才的不一样了,这时我们再进行反序列化会报如下错误

我们指定serialVersionUID后就可以随意修改了

Apache Commons Collections1 反序列化命令执行漏洞

   当服务器收到序列化对象数据后,会调用对象类的readobject()方法进行反序列化,这里我们构造的恶意序列化对象使用的是AnnotationInvocationHandler类的实例化对象。所以当服务器收到这个对象时会去调用该类的readobject()方法进行反序列化,下面我们跟着上面的触发流程进行一步步触发分析。

结论 :在漏洞触发的第一步中,在反序列化我们向服务器发送的恶意序列化AnnotationInvocationHandler对象时会触发对构造该类对象时传入的Map类型对象的第一个键值对的value进行修改。

   当通过迭代器对象对TransformedMap类型的value值进行修改时会调用AbstractInputCheckedMapDecorator(TransformedMap类的父类并实现了 Map.Entry接口)中的内部类MapEntry的setValue()方法,debug运行可以看到this.parent变量值是TransformedMap对象的第一个键值对。

结论 :在漏洞触发的第二步中,触发了TransformedMap的checkSetValue()方法

   可以看到ChainedTransformer对象的transform()方法的功能是将传入的对象交给对象中的this.iTransformers变量引用的对象的transform()方法进行处理。this.iTransformers变量引用的对象从53行可知是对象实例化时传入的,从poc的25行可知我们实例化时传入一个Transformer的数组。

结论 :在漏洞触发的第三步中,TransformedMap.checkSetValue()触发ChainedTransformer.transform()方法。ChainedTransformer.transform()方法将传入的对象经过ChainedTransformer对象中的各个Transformer类型的实例对象调用实例化对象的transform()方法处理。

   由poc 20-25行可知ChainedTransformer对象中的Transformer类型的实例对象分别是ConstantTransformer、InvokerTransformer,首先触发ConstantTransformer对象的transform()方法,可以看出ConstantTransformer对象的transform()方法的功能是将传入的对象转换成实例化ConstantTransformer对象时传入的对象,由poc的21行可知实例化ConstantTransformer对象时传入的对象为java.lang.Runtime.class,因此经过ConstantTransformer.transform()后传入的参数变成了类对象 java.lang.Runtime.class ,再经过InvokerTransformer.transform()处理。

   从59-61行可以看出InvokerTransformer.transform()功能是通过反射得到传入对象中方法名为this.iMethodName参数类型为this.iParamTypes的方法,并执行该方法传入的方法参数为this.iArgs。而this.iMethodName、this.iParamTypes、this.iArgs三个参数都是我们在实例化InvokerTransformer对象时自定义的,这导致可以进行任意命令执行。

第一次执行InvokerTransformer.transform()方法后

第二次执行InvokerTransformer.transform()方法后

第三次执行InvokerTransformer.transform()方法

结论 :在漏洞触发的第四步中,传入的对象经过1次ConstantTransformer.transform()与3次InvokerTransformer.transform()转换触发exec()任意命令执行。

ps:jdk版本需要1.7

北大青鸟java培训:如何防止java编程语言序列化网络攻击

***隐藏网址***什么是序列化?自从1997年发布JDK1.1以来,序列化已经存在于Java平台中。它用于在套接字之间共享对象表示,或者将对象及其状态保存起来以供将来使用(反序列化)。在JDK10及更低版本中,序列化作为java.base包和java.io.Serializable方法的一部分存在于所有的系统中。序列化的挑战和局限序列化的局限主要表现在以下两个方面:出现了新的对象传输策略,例如JSON、XML、ApacheAvro、ProtocolBuffers等。1997年的序列化策略无法预见现代互联网服务的构建和攻击方式。进行序列化漏洞攻击的基本前提是找到对反序列化的数据执行特权操作的类,然后传给它们恶意的代码。序列化在哪里?如何知道我的应用程序是否用到了序列化?要移除序列化,需要从java.io包开始,这个包是java.base模块的一部分。常见的使用场景是:实现Serializable接口和(可选)serialversionuid长整型字段。使用ObjectInputStream或ObjectOutputStream。使用严重依赖序列化的库,例如:Xstream、Kryo、BlazeDS和大多数应用程序服务器。使用这些方法的开发人员应考虑使用其他存储和读回数据的替代方法。EishaySmith发布了几个不同序列化库的性能指标。在评估性能时,需要在基准度量指标中包含安全方面的考虑。默认的Java序列化“更快”一些,但漏洞也会以同样的速度找上门来。我们该如何降低序列化缺陷的影响?项目Amber包含了一个关于将序列化API隔离出来的讨论。我们的想法是将序列化从java.base移动到单独的模块,这样应用程序就可以完全移除它。在确定JDK11功能集时并没有针对该提议得出任何结果,但可能会在未来的Java版本中继续进行讨论。通过运行时保护来减少序列化暴露一个可以监控风险并自动化可重复安全专业知识的系统对于很多企业来说都是很有用的。Java应用程序可以将JVMTI工具嵌入到安全监控系统中,通过插桩的方式将传感器植入到应用程序中。其他有用的安全技术在进行维护时,可以不需要手动列出一长串东西,而是使用像OWASPDependency-Check这样的系统,它可以识别出已知安全漏洞的依赖关系,并提示进行升级。也可以考虑通过像DependABot这样的系统进行库的自动更新。虽然用意很好,但默认的Oracle序列化过滤器存在与SecurityManager和相关沙箱漏洞相同的设计缺陷。因为需要混淆角色权限并要求提前了解不可知的事物,限制了这个功能的大规模采用:系统管理员不知道代码的内容,所以无法列出类文件,而开发人员不了解环境,甚至DevOps团队通常也不知道系统其他部分(如应用程序服务器)的需求。

java反序列化漏洞(北大青鸟设计培训:如何防止java编程语言序列化网络攻击)

本文编辑:admin

更多文章:


笔记本电脑定时关机怎么设置(电脑如何定时关机)

笔记本电脑定时关机怎么设置(电脑如何定时关机)

各位老铁们好,相信很多人对笔记本电脑定时关机怎么设置都不是特别的了解,因此呢,今天就来为大家分享下关于笔记本电脑定时关机怎么设置以及电脑如何定时关机的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录电脑如何定时关机

2024年7月15日 01:57

联想e430(联想thinkpade430 进入bios如何设置从硬盘启动)

联想e430(联想thinkpade430 进入bios如何设置从硬盘启动)

本文目录联想thinkpade430 进入bios如何设置从硬盘启动联想thinkpad笔记本,E430这个系列怎么样联想THINKPADE430如何关闭触摸板联想thinkpade430 进入bios如何设置从硬盘启动1、Thinkpad

2024年6月9日 05:26

首选dns服务器地址(首选DNS服务器填什么)

首选dns服务器地址(首选DNS服务器填什么)

大家好,如果您还对首选dns服务器地址不太了解,没有关系,今天就由本站为大家分享首选dns服务器地址的知识,包括首选DNS服务器填什么的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录首选DNS服务器填什么自家电脑怎

2024年6月21日 07:48

免root查看wifi密码神器app(什么WIFI密码查看器不用root)

免root查看wifi密码神器app(什么WIFI密码查看器不用root)

本篇文章给大家谈谈免root查看wifi密码神器app,以及什么WIFI密码查看器不用root对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录什么WIFI密码查看器不用root不用root如何查看手机wifi密码有什么软件可以

2024年6月18日 16:42

hp打印机驱动官网怎么下载(HP LaserJet P1108的打印机驱动如何下载安装)

hp打印机驱动官网怎么下载(HP LaserJet P1108的打印机驱动如何下载安装)

各位老铁们,大家好,今天由我来为大家分享hp打印机驱动官网怎么下载,以及HP LaserJet P1108的打印机驱动如何下载安装的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家

2024年7月19日 13:35

广电宽带网速怎么样?要换宽带了,广电网络怎么样

广电宽带网速怎么样?要换宽带了,广电网络怎么样

本文目录广电宽带网速怎么样要换宽带了,广电网络怎么样广电宽带到底怎么样广电宽带现在广电网络有线宽带怎么样广电宽带网速慢怎么办什么是广电宽带广电宽带,电视机如何设置上网怎么开通广电网络宽带 下面5个步骤帮你解决广电宽带是哪里的网络广电宽带网速

2024年7月22日 00:59

证券官网入口(深圳证券交易所官方网址是什么)

证券官网入口(深圳证券交易所官方网址是什么)

本篇文章给大家谈谈证券官网入口,以及深圳证券交易所官方网址是什么对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录深圳证券交易所官方网址是什么

2024年5月25日 07:16

qq空间注销了还能恢复吗(qq空间注销后申请恢复网址)

qq空间注销了还能恢复吗(qq空间注销后申请恢复网址)

这篇文章给大家聊聊关于qq空间注销了还能恢复吗,以及qq空间注销后申请恢复网址对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录qq空间注销后申请恢复网址qq空间注销后还能恢复使用吗手机qq空间注销了怎样恢复qq空间注销了能恢复

2024年10月6日 15:01

流星蝴蝶剑OL!!久游、完美,你选择哪一个?流星OL和流星蝴蝶剑OL分别是哪个公司的

流星蝴蝶剑OL!!久游、完美,你选择哪一个?流星OL和流星蝴蝶剑OL分别是哪个公司的

本文目录流星蝴蝶剑OL!!久游、完美,你选择哪一个流星OL和流星蝴蝶剑OL分别是哪个公司的流星蝴蝶剑OL!!久游、完美,你选择哪一个我感觉还是流星OL好,主要因为完美公司游戏打造队伍更强大,打造游戏更美观,系统丰富,并且不需要太多的RMB,

2023年11月14日 02:20

qq下载手机版安装(怎么下载qq并安装到手机)

qq下载手机版安装(怎么下载qq并安装到手机)

本篇文章给大家谈谈qq下载手机版安装,以及怎么下载qq并安装到手机对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录怎么下载qq并安装到手机手机怎么下载qq软件并安装腾讯qq下载安装怎么下载手机QQ手机怎么下载qq手机怎么下载2

2024年6月25日 01:24

越狱助手app下载(已经越狱的苹果手机pp助手怎么下载)

越狱助手app下载(已经越狱的苹果手机pp助手怎么下载)

大家好,关于越狱助手app下载很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于已经越狱的苹果手机pp助手怎么下载的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2024年6月19日 05:24

狼群在线影视(电影狼群简介)

狼群在线影视(电影狼群简介)

各位老铁们好,相信很多人对狼群在线影视都不是特别的了解,因此呢,今天就来为大家分享下关于狼群在线影视以及电影狼群简介的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录电影狼群简介张晋主演电影狼群电影狼群结局谁死了军

2024年6月12日 05:12

virtue(virtue是什么意思)

virtue(virtue是什么意思)

“virtue”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看virtue(virtue是什么意思)!本文目录virtue是什么意思virtue的同义词virtue怎么读 virtue的意思virtue和virtual的区别

2024年7月22日 00:08

vivo手机中的吉他怎么用 了解一下?怎么用手机上的吉他调音器把弦调低两个半音

vivo手机中的吉他怎么用 了解一下?怎么用手机上的吉他调音器把弦调低两个半音

本文目录vivo手机中的吉他怎么用 了解一下怎么用手机上的吉他调音器把弦调低两个半音手机版吉他调音器怎么用手机吉他调音器怎么弄手机吉他调音器怎么用有什么软件适合吉他弹唱入门学习教教我怎么弹手机吉他怎么用ipad里的吉他弹老男孩,求教程求指导

2024年6月30日 12:17

张玮《嗨歌》歌词?嗨歌有哪些dj舞曲

张玮《嗨歌》歌词?嗨歌有哪些dj舞曲

本文目录张玮《嗨歌》歌词嗨歌有哪些dj舞曲很嗨的歌有哪些什么嗨歌比较嗨有什么嗨一点的嗨歌有什么嗨歌,求超嗨的歌曲有哪些好听的嗨歌张玮《嗨歌》歌词歌曲:《嗨歌》原唱:黄龄作词:常石磊作曲:常石磊专辑:《痒》、《特别》发行时间:2007年歌手介

2024年7月22日 08:36

易加互动里面为什么一直网络异常?易加门户空间平台在哪里下载

易加互动里面为什么一直网络异常?易加门户空间平台在哪里下载

本文目录易加互动里面为什么一直网络异常易加门户空间平台在哪里下载抖音怎么样加好友微信易加互动里面为什么一直网络异常1、您好,根据您描述的情况,有可能是您宽带连接网络失败等情况导致网络异常,建议您可通过以下方式进行排障:【1】进行单机拨号,如

2024年3月23日 01:20

手机乐园java软件下载(天语手机java版的(地心探险))

手机乐园java软件下载(天语手机java版的(地心探险))

本篇文章给大家谈谈手机乐园java软件下载,以及天语手机java版的(地心探险)对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录天语手机java版的(地心探险)手机下载JAVA软件去哪个网站好三星 j708 安装后显示下载的J

2024年7月22日 00:30

免费下载应用市场(杂牌平板怎么下载应用市场)

免费下载应用市场(杂牌平板怎么下载应用市场)

各位老铁们好,相信很多人对免费下载应用市场都不是特别的了解,因此呢,今天就来为大家分享下关于免费下载应用市场以及杂牌平板怎么下载应用市场的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录杂牌平板怎么下载应用市场三一

2024年7月20日 02:16

每天自动清理手机垃圾的软件(手机清理垃圾哪个软件最好)

每天自动清理手机垃圾的软件(手机清理垃圾哪个软件最好)

大家好,如果您还对每天自动清理手机垃圾的软件不太了解,没有关系,今天就由本站为大家分享每天自动清理手机垃圾的软件的知识,包括手机清理垃圾哪个软件最好的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录手机清理垃圾哪个软

2024年9月27日 21:50

为什么电脑上下载的阿里云盘没有全网搜索?阿里盘搜500系统异常

为什么电脑上下载的阿里云盘没有全网搜索?阿里盘搜500系统异常

各位老铁们好,相信很多人对阿里盘搜都不是特别的了解,因此呢,今天就来为大家分享下关于阿里盘搜以及为什么电脑上下载的阿里云盘没有全网搜索的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录为什么电脑上下载的阿里云盘没有

2024年4月11日 22:50

近期文章

weight值(wgcna中weight值)
2024-10-06 16:25:23
本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2336
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1732
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1156
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1154
标签列表

热门搜索